c# - c# 如何在 Microsoft Interop Word 中编写
问题描述
我直接在 microsoft word 文件中编写报告,问题是我无法编写不同的文本。它只是覆盖了我的其他文本。
Word.Application myWord = new Word.Application();
//create the document
Word.Document myDoc = myWord.Documents.Add();
//ADD PARAGRAPH
myDoc.Content.Text = "Identified Market/Visitors" + " " + "Museum (as a whole)" + " " + "Percentage" + " ";
myDoc.Content.Text = "2" + " " + "76)" + " " + "25% "+ " ";
saveFileDialog1.Filter = "Word Document|*.docx";
string path = saveFileDialog1.FileName;
myDoc.Close();
第二个内容文本覆盖第一个内容文本。我怎样才能写另一行文字?
解决方案
生成 docx 的最佳方法是使用 OpenXmlSDK。
编写代码的最简单方法是在 word 中创建看起来像您想要的报告的 docx,并使用开放的 xml sdk 工具从 docx 反转 Enginier C# 代码,而不是重新发明轮子。
为您的文本生成的代码:
Body body1 = new Body();
Paragraph paragraph1 = new Paragraph(){ RsidParagraphAddition = "008B2DA9", RsidParagraphProperties = "008B2DA9", RsidRunAdditionDefault = "008B2DA9", ParagraphId = "769280AB", TextId = "395E2934" };
ParagraphProperties paragraphProperties1 = new ParagraphProperties();
Tabs tabs1 = new Tabs();
TabStop tabStop1 = new TabStop(){ Val = TabStopValues.Left, Position = 3686 };
TabStop tabStop2 = new TabStop(){ Val = TabStopValues.Left, Position = 6804 };
tabs1.Append(tabStop1);
tabs1.Append(tabStop2);
ParagraphMarkRunProperties paragraphMarkRunProperties1 = new ParagraphMarkRunProperties();
Languages languages1 = new Languages(){ Val = "en-US" };
paragraphMarkRunProperties1.Append(languages1);
paragraphProperties1.Append(tabs1);
paragraphProperties1.Append(paragraphMarkRunProperties1);
Run run1 = new Run(){ RsidRunProperties = "005F7E61" };
RunProperties runProperties1 = new RunProperties();
Languages languages2 = new Languages(){ Val = "en-US" };
runProperties1.Append(languages2);
Text text1 = new Text();
text1.Text = "Identified Market/Visitors";
run1.Append(runProperties1);
run1.Append(text1);
Run run2 = new Run();
RunProperties runProperties2 = new RunProperties();
Languages languages3 = new Languages(){ Val = "en-US" };
runProperties2.Append(languages3);
TabChar tabChar1 = new TabChar();
run2.Append(runProperties2);
run2.Append(tabChar1);
Run run3 = new Run(){ RsidRunProperties = "005F7E61" };
RunProperties runProperties3 = new RunProperties();
Languages languages4 = new Languages(){ Val = "en-US" };
runProperties3.Append(languages4);
Text text2 = new Text();
text2.Text = "Museum (as a whole)";
run3.Append(runProperties3);
run3.Append(text2);
Run run4 = new Run();
RunProperties runProperties4 = new RunProperties();
Languages languages5 = new Languages(){ Val = "en-US" };
runProperties4.Append(languages5);
TabChar tabChar2 = new TabChar();
run4.Append(runProperties4);
run4.Append(tabChar2);
Run run5 = new Run(){ RsidRunProperties = "005F7E61" };
RunProperties runProperties5 = new RunProperties();
Languages languages6 = new Languages(){ Val = "en-US" };
runProperties5.Append(languages6);
Text text3 = new Text();
text3.Text = "Percentage";
run5.Append(runProperties5);
run5.Append(text3);
paragraph1.Append(paragraphProperties1);
paragraph1.Append(run1);
paragraph1.Append(run2);
paragraph1.Append(run3);
paragraph1.Append(run4);
paragraph1.Append(run5);
Paragraph paragraph2 = new Paragraph(){ RsidParagraphMarkRevision = "008B2DA9", RsidParagraphAddition = "008B2DA9", RsidParagraphProperties = "008B2DA9", RsidRunAdditionDefault = "008B2DA9", ParagraphId = "6C5F87B4", TextId = "46169FF3" };
ParagraphProperties paragraphProperties2 = new ParagraphProperties();
Tabs tabs2 = new Tabs();
TabStop tabStop3 = new TabStop(){ Val = TabStopValues.Left, Position = 3686 };
TabStop tabStop4 = new TabStop(){ Val = TabStopValues.Left, Position = 6804 };
tabs2.Append(tabStop3);
tabs2.Append(tabStop4);
ParagraphMarkRunProperties paragraphMarkRunProperties2 = new ParagraphMarkRunProperties();
Languages languages7 = new Languages(){ Val = "en-US" };
paragraphMarkRunProperties2.Append(languages7);
paragraphProperties2.Append(tabs2);
paragraphProperties2.Append(paragraphMarkRunProperties2);
Run run6 = new Run();
RunProperties runProperties6 = new RunProperties();
Languages languages8 = new Languages(){ Val = "en-US" };
runProperties6.Append(languages8);
Text text4 = new Text();
text4.Text = "2";
run6.Append(runProperties6);
run6.Append(text4);
Run run7 = new Run();
RunProperties runProperties7 = new RunProperties();
Languages languages9 = new Languages(){ Val = "en-US" };
runProperties7.Append(languages9);
TabChar tabChar3 = new TabChar();
Text text5 = new Text();
text5.Text = "76";
run7.Append(runProperties7);
run7.Append(tabChar3);
run7.Append(text5);
Run run8 = new Run();
RunProperties runProperties8 = new RunProperties();
Languages languages10 = new Languages(){ Val = "en-US" };
runProperties8.Append(languages10);
TabChar tabChar4 = new TabChar();
Text text6 = new Text();
text6.Text = "25%";
run8.Append(runProperties8);
run8.Append(tabChar4);
run8.Append(text6);
paragraph2.Append(paragraphProperties2);
paragraph2.Append(run6);
paragraph2.Append(run7);
paragraph2.Append(run8);
Paragraph paragraph3 = new Paragraph(){ RsidParagraphMarkRevision = "005F7E61", RsidParagraphAddition = "00BA3985", RsidParagraphProperties = "005F7E61", RsidRunAdditionDefault = "008B2DA9", ParagraphId = "2562476B", TextId = "454E7663" };
ParagraphProperties paragraphProperties3 = new ParagraphProperties();
ParagraphMarkRunProperties paragraphMarkRunProperties3 = new ParagraphMarkRunProperties();
Languages languages11 = new Languages(){ Val = "en-US" };
paragraphMarkRunProperties3.Append(languages11);
paragraphProperties3.Append(paragraphMarkRunProperties3);
BookmarkStart bookmarkStart1 = new BookmarkStart(){ Name = "_GoBack", Id = "0" };
BookmarkEnd bookmarkEnd1 = new BookmarkEnd(){ Id = "0" };
paragraph3.Append(paragraphProperties3);
paragraph3.Append(bookmarkStart1);
paragraph3.Append(bookmarkEnd1);
SectionProperties sectionProperties1 = new SectionProperties(){ RsidRPr = "005F7E61", RsidR = "00BA3985" };
PageSize pageSize1 = new PageSize(){ Width = (UInt32Value)12240U, Height = (UInt32Value)15840U };
PageMargin pageMargin1 = new PageMargin(){ Top = 1440, Right = (UInt32Value)1440U, Bottom = 1440, Left = (UInt32Value)1440U, Header = (UInt32Value)720U, Footer = (UInt32Value)720U, Gutter = (UInt32Value)0U };
Columns columns1 = new Columns(){ Space = "720" };
DocGrid docGrid1 = new DocGrid(){ LinePitch = 360 };
sectionProperties1.Append(pageSize1);
sectionProperties1.Append(pageMargin1);
sectionProperties1.Append(columns1);
sectionProperties1.Append(docGrid1);
body1.Append(paragraph1);
body1.Append(paragraph2);
body1.Append(paragraph3);
body1.Append(sectionProperties1);
document1.Append(body1);
PS:即使您使用字符串格式构建表格很奇怪。在您创建 C# 代码的 docx 中使用表。
推荐阅读
- mysql - MySQL Server 8.0.12 - 必须为新用户指定身份验证插件
- python - 为什么 python 命令在 py 工作时不会在 powershell 中调用 python 解释器
- node.js - 詹金斯不运行量角器测试
- node.js - 承诺多个 .then 当一个 then 指望另一个
- android - 使用 libjingle 在 android WebRTC 中自定义音频设备
- java - 带通配符的静态导入
- mysql - 无法在 Excel 2016 VBA 中连接到 mysql 数据库
- javascript - 通过单击添加新文本时需要调整文本区域的大小
- html - 如何使包含重复的网格居中(自动调整,最小最大(15rem,1fr));
- regex - 正则表达式将文本拆分为块