c# – 如何使用Word Automation在段落中添加下标字符?

c# – 如何使用Word Automation在段落中添加下标字符?,第1张

概述我正在使用C#编写一个程序,该程序使用Microsoft Word 14.0对象库创建.doc文件,为其添加段落并保存.有一个小形式,带有描述动作的按钮(参见下面的代码).这部分没有问题. 问题: 创建的word文件中的当前文本将如下: 一些文本beff = 3.0 我需要完成的是创建一个段落,里面有下标字符.(在上面的段落中,字母“eff”应该是下标的): 最终文档将包含大约100个像上面这样的 我正在使用C#编写一个程序,该程序使用Microsoft Word 14.0对象库创建.doc文件,为其添加段落并保存.有一个小形式,带有描述动作的按钮(参见下面的代码).这部分没有问题.

问题:

创建的word文件中的当前文本将如下:

一些文本beff = 3.0

我需要完成的是创建一个段落,里面有下标字符.(在上面的段落中,字母“eff”应该是下标的):

最终文档将包含大约100个像上面这样的行,下载不同的字符.

我找到了用线代替整个段落的方法,

@H_403_14@paragraph1.Range.Font.Subscript = 1;

但没有办法在单独的角色上实现它.

我也知道我可以使用Unicode中的下标字母和数字,但不幸的是,Unicode没有下标格式的完整字母,所以这也不是一个选项.

题:
有没有办法让我完成目标并在新创建的Word文档的段落中的下标中插入类似“eff”的内容?

示例代码:

@H_403_14@private voID btnReport_Click(object sender,EventArgs e) { Word._Application oWord; Word._document odoc; oWord = new Word.Application(); odoc = oWord.documents.Add(); var paragraph1 = odoc.Content.Paragraphs.Add(); paragraph1.Range.Text = "Some text beff = 3.0"; SavefileDialog savefileDialog1 = new SavefileDialog(); savefileDialog1.Filter = "Word document|*.doc"; savefileDialog1.Title = "Save the Word document"; if (DialogResult.OK == savefileDialog1.ShowDialog()) { string docname = savefileDialog1.filename; if (docname.Length > 0) { object odocname = (object)docname; odoc.SaveAs(ref odocname); } } oWord.Quit(); }解决方法 创建一个Word文档并使用subscipt / superscript添加文本并解压缩.docx以检查它的XML内容,您会注意到包含下标/上标的文本放在一个单独的run元素中.

实现此目的的一种方法是OpenXML SDK.Once您下载并安装SDK后,您可以使用以下代码:

@H_403_14@using System;using documentFormat.OpenXml;using documentFormat.OpenXml.Packaging;using documentFormat.OpenXml.Wordprocessing;namespace OpenXML{ class Program { static voID Main(string[] args) { using (var doc = Wordprocessingdocument.Create("C:\\Subscript.docx",WordprocessingdocumentType.document)) { MaindocumentPart mainPart = doc.AddMaindocumentPart(); mainPart.document = new document(); Body body = mainPart.document.AppendChild(new Body()); Paragraph p = body.AppendChild(new Paragraph()); p.AppendChild(AddRun(false,"Some text b ")); p.AppendChild(AddRun(true,"eff")); p.AppendChild(AddRun(false,"= 3.0")); } Console.Writeline("Done..."); Console.Readline(); } public static Run AddRun(bool isSubscript,string text) { Run run = new Run(); if (isSubscript) { var props = new RunPropertIEs(); var FontSize = new FontSizeComplexScript() { Val = "20" }; var vAlignment = new VerticalTextAlignment() { Val = VerticalpositionValues.Subscript }; props.Append(FontSize); props.Append(vAlignment); run.Append(props); } run.Append(new Text(text)); return run; } }}

编辑:

这是一个Interop解决方案:

@H_403_14@using WordNS = Microsoft.Office.Interop.Word; WordNS.document doc = _application.Activedocument; WordNS.Paragraph p = doc.Paragraphs.Add(); p.Range.Text = "Some text beff = 3.0"; int start = p.Range.Text.IndexOf("eff"); int end = p.Range.Text.IndexOf("="); WordNS.Range range = doc.Range(start,end); range.Select(); WordNS.Selection currentSelection = _application.Selection; currentSelection.Font.Subscript = 1; doc.SaveAs2("C:\\SubscriptInterop.docx"); 总结

以上是内存溢出为你收集整理的c# – 如何使用Word Automation在段落中添加下标字符?全部内容,希望文章能够帮你解决c# – 如何使用Word Automation在段落中添加下标字符?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1262454.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存