EvotecIT / OfficeIMO

Fast and easy to use cross-platform .NET library that creates or modifies Microsoft Word (DocX) and later also Excel (XLSX) files without installing any software. Library is based on Open XML SDK
MIT License
289 stars 50 forks source link

How to add paragraph without pagebreak? #216

Closed charliestel closed 8 months ago

charliestel commented 8 months ago

Hi, can anyone tell me how to insert multiple paragraphs into a document without a new line break? Why I need this: to format parts of lines.

For example:

p1 = new WordParagraph()
p1.Text = "Some"

p2 = p1.AddParagraphAfterSelf(); // Maybe I chose the wrong way?
p2.Text = "Text"
p2.Bold = true;

p3 = p2.AddParagraphAfterSelf()
p3.Text = "on the same line."
p3.Italic = true;
p3.ColorHex = "#f3f3f3f3";
PrzemyslawKlys commented 8 months ago

p1.AddText(xxx).AddText(xxx) as far as i know

charliestel commented 8 months ago

p1.AddText(xxx).AddText(xxx) as far as i know

AddText method is just concating text in current paragraph. But i wanna split text areas and having separated styles for them

PrzemyslawKlys commented 8 months ago

So in OfficeIMO the paragraph is actually a Run. That means when you do AddText it creates a run, but this is a WordParagraph. Using AddParagraph forces it to do one Paragraph, with one Run kinda.

So if you want you can do


p1 = p1.AddText("xxx")
p1.Italic = true;
p1 = p1.AddText("xxx2)
p1.Italic = false;

and it will give you what you want. You can also save them to seaprate variables. OfficeIMO has only a single concept of WordParagraph trying to simplify the OpenXML model. 
PrzemyslawKlys commented 8 months ago

For example

 var paragraph = document.AddParagraph("Adding paragraph with some text with special chars to check if FontFamily works correctly for those");

                paragraph.Color = SixLabors.ImageSharp.Color.Red;

                // this is only a test of setting FontFamily per paragraph. Please use document.Settings.FontFamily to set it per document.
                paragraph = document.AddParagraph("Wszedł kot do domu, gdzie były różne buty. ");
                paragraph.FontFamily = "Courier New";
                paragraph = paragraph.AddText("Chodził tak sobie i chodził, i się nachodził. ");
                paragraph.FontFamily = "Courier New";
                paragraph = paragraph.AddText("A potem jeszcze pochodził, i wąchał. A wszystko to nagrało życie. ");
                paragraph.FontFamily = "Courier New";

Look at the examples project - there are plenty of examples showing things