https://docs.microsoft.com/en-us/visualstudio/vsto/word-object-model-overview?view=vs-2019
Word对象的概览:
Document包含一個Range,叫做Content,
Document包含一個Paragraphs, 段落集合
Document包含一個Sections,Shapes,Tables,Words
add a picture to document without loosing quality.
Range和Bookmark類似,但是Range只在程序運行時才會有,
好多对象都有一个类型为Range的属性,而且Range里面包含Sentences,Sections, Rows等等。
Range对象还有ShapeRange,包含特定Range里面所有的Shape对象。
Range也包含Tables,还包含Text,几乎无所不包啊。
只有Sentences接口,而没有Sentence对象。
Selection或者表示一个选择的区域(高亮)或者表示一个插入点(如果没有选中任何东西)。
1. Range.Text will reset all format, should use FormattedText property instead.
https://stackoverflow.com/questions/38571347/interop-word-range-copy-range-paste-work-slow
directly assign is ok, not use Copy as this wil use clipboard.
2. line by line read, should loop through Paragraphs as:
https://stackoverflow.com/questions/18555064/read-from-word-document-line-by-line
Paragraph.Range.Text
3. find and replace everything
doc.Selection.Find.Execute(), as:
https://stackoverflow.com/questions/19252252/c-sharp-word-interop-find-and-replace-everything
4. get all images from document
foreach(Word.InlineShape ils in this.InlineShapes)
if (ils.Type == Microsoft.Office.Interop.Word.WdInlineShapeType.wdInlineShapePicture)
5. 插入不同的格式到一行as:
Word.Paragraph oPara = oDoc.Content.Paragraphs.Add(ref oMissing);
oPara.Range.Text = "hello planet earth here's what I want to do";
object oStart = oPara.Range.Start + 13;
object oEnd = oPara.Range.Start + 18;
Word.Range rBold = oDoc.Range(ref oStart, ref oEnd);
rBold.Bold = 1;
https://stackoverflow.com/questions/5628473/different-format-into-one-single-line-interop-word
6. insert image to word:
InlineShape.AddPicture as:
https://stackoverflow.com/questions/32322438/programmatically-insert-image-to-word-with-link-to-file
保留空白符序列,但是正常地进行换行。white-space: pre-wrap;
CalculateSpanWidthForTabs
ClearStyles