C# 在Word中插入公式(LaTeX/MathML)
Word文件是時下非常常用的圖文編輯工具,它的功能不止於編輯文字、圖片。經過數年的版本更新,支援功能及文件元素也愈加豐富。在編輯某些專業性文件時,如試卷、論文、專業期刊等,其中會常要求使用公式功能。Word本身支援插入常見的數學公式,包括簡單公式符號、複雜公式等,本文,將以C#及VB.NET程式碼為例介紹如何來實現在Word中插入公式,編輯公式時,包括使用LaTeX Math Code及MathML Code來展示如何編輯。下面是程式環境及完整的測試程式碼,供參考。
引入dll程式集檔案
-
通過 NuGet 引入dll(2種方法)的方法
1.1 可以在Visual Studio中開啟“解決方案資源管理器”,滑鼠右鍵點選“引用”,“管理NuGet包”,然後搜尋“Free Spire.Doc”,點選“安裝”。等待程式安裝完成。
1.2 將以下內容複製到PM控制檯安裝:
Install-Package FreeSpire.Doc -Version 10.2
-
手動新增dll引用的方法
可通過手動下載包到本地,然後解壓,找到BIN資料夾下的Spire.Doc.dll。然後在Visual Studio中開啟“解決方案資源管理器”,滑鼠右鍵點選“引用”,“新增引用”,將本地路徑BIN資料夾下的dll檔案新增引用至程式。
插入公式
在編輯公式時,通過 OfficeMath.FromLatexMathCode()方法和 OfficeMath.FromMathMLCode()方法來新增LaTeX公式及MathML公式。開發者可根據程式設計需要選擇其中對應的方法來編輯公式即可。
下面是本次程式程式碼實現公式新增的主要程式碼步驟:
-
建立 Document類的物件,並呼叫 Document.AddSection()方法新增節到Word文件。
-
通過 Section.AddParagraph()方法新增段落。
-
初始化 OfficeMath類的例項。通過 OfficeMath.FromLatexMathCode(string latexMathCode)方法編輯LeTeX公式;通過 OfficeMath.FromMathMLCode(string mathMLCode)方法編輯MathML公式。
-
通過 DocumentObjectCollection.Add(Spire.Doc.Interface.IDocumentObject entity)方法新增公式到段落。
-
最後,通過 Document.SaveToFile(string fileName, FileFormat fileFormat)方法儲存文件。
C#
using Spire.Doc; using Spire.Doc.Documents; using Spire.Doc.Fields.OMath; namespace InsertFormula { class Program { static void Main(string[] args) { //新建word例項 Document doc = new Document(); //新增一個section Section section = doc.AddSection(); //新增一個段落 Paragraph paragraph = section.AddParagraph(); //在第一段新增Latex公式 OfficeMath officeMath = new OfficeMath(doc); officeMath.FromLatexMathCode("x^{2}+\\sqrt{x^{2}+1}=2"); paragraph.Items.Add(officeMath); //新增第二個Latex公式到第二段 Paragraph paragraph2 = section.AddParagraph(); OfficeMath officeMath1 = new OfficeMath(doc); officeMath1.FromLatexMathCode("\\forall x \\in X, \\quad \\exists y \\leq \\epsilon"); paragraph2.Items.Add(officeMath1); //新增Latex符號到第三段 Paragraph paragraph3 = section.AddParagraph(); OfficeMath officeMath2 = new OfficeMath(doc); officeMath2.FromLatexMathCode("\\alpha,\\beta, \\gamma, \\Gamma, \\pi, \\Pi, \\phi, \\varphi, \\mu, \\Phi"); paragraph3.Items.Add(officeMath2); //新增MathML公式到第四段 Paragraph paragraph4 = section.AddParagraph(); OfficeMath officeMath3 = new OfficeMath(doc); officeMath3.FromMathMLCode("<mml:math xmlns:mml=\"\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\"><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msqrt><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:msqrt><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>"); paragraph4.Items.Add(officeMath3); //儲存文件 doc.SaveToFile("InsertFormulas.docx", FileFormat.Docx2013); System.Diagnostics.Process.Start("InsertFormulas.docx"); } } }
vb.net
Imports Spire.Doc Imports Spire.Doc.Documents Imports Spire.Doc.Fields.OMath Namespace InsertFormula Class Program Private Shared Sub Main(args As String()) '新建word例項 Dim doc As New Document() '新增一個section Dim section As Section = doc.AddSection() '新增一個段落 Dim paragraph As Paragraph = section.AddParagraph() '在第一段新增Latex公式 Dim officeMath As New OfficeMath(doc) officeMath.FromLatexMathCode("x^{2}+\sqrt{x^{2}+1}=2") paragraph.Items.Add(officeMath) '新增第二個Latex公式到第二段 Dim paragraph2 As Paragraph = section.AddParagraph() Dim officeMath1 As New OfficeMath(doc) officeMath1.FromLatexMathCode("\forall x \in X, \quad \exists y \leq \epsilon") paragraph2.Items.Add(officeMath1) '新增Latex符號到第三段 Dim paragraph3 As Paragraph = section.AddParagraph() Dim officeMath2 As New OfficeMath(doc) officeMath2.FromLatexMathCode("\alpha,\beta, \gamma, \Gamma, \pi, \Pi, \phi, \varphi, \mu, \Phi") paragraph3.Items.Add(officeMath2) '新增MathML公式到第四段 Dim paragraph4 As Paragraph = section.AddParagraph() Dim officeMath3 As New OfficeMath(doc) officeMath3.FromMathMLCode("<mml:math xmlns:mml="""" xmlns:m=""http://schemas.openxmlformats.org/officeDocument/2006/math""><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msqrt><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:msqrt><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>") paragraph4.Items.Add(officeMath3) '儲存文件 doc.SaveToFile("InsertFormulas.docx", FileFormat.Docx2013) System.Diagnostics.Process.Start("InsertFormulas.docx") End Sub End Class End Namespace
注:程式碼中的檔案路徑為程式的debug路徑,檔案路徑可自定義為其他路徑。
—END—
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31499788/viewspace-2904426/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Latex公式匯出word,Latex轉換MathML使用POI匯出公式可編輯的Word檔案公式
- TexFormula2Word: 將Latex公式轉換為MathML的Chrome擴充套件ORM公式Chrome套件
- axmath 轉換latex 再轉 word公式公式
- 透過C#在Word中插入或刪除分節符C#
- LaTeX 中插入GIF圖片
- 常用Latex公式公式
- 在Word中插入漂亮的程式碼格式框
- LaTeX 公式編輯公式
- 使用spire.doc匯出支援編輯Latex公式的標準格式word公式
- word修改公式中的部分字型公式
- LaTeX 插入虛擬碼
- C# 提取Word中插入的多媒體檔案(視訊、音訊)C#音訊
- word公式怎麼計算 word公式計算的方法公式
- 讓Android支援Latex數學公式Android公式
- Microsoft Word 教程「10」,如何在 Word 中插入頁碼、目錄?ROS
- 將ECharts圖表插入到Word文件中Echarts
- Java 在Word指定段落/文字位置插入分頁符Java
- 使用Markdown輸出LaTex數學公式公式
- 如何解析word文件中的公式內容公式
- hoj-vue 專案中的編輯器支援latex公式Vue公式
- 基於Typora的Latex程式碼書寫並移植到word中
- WPS/Word中公式與文字不對齊的問題公式
- HTML歷理 LaTeX轉HTML公式編輯器HTML公式
- Aspose.Words 將word2中的內容插入到word1中的指定位置
- Java 插入公式到PPT幻燈片Java公式
- wordpress從word複製貼上公式公式
- word自帶公式右側編號公式
- 如何在Word 2007 文件中插入和刪除超連結?
- Java 獲取Word中的所有插入和刪除修訂Java
- C# / VB.NET 在Word中嵌入多媒體(視訊、音訊)檔案C#音訊
- 在 JDBC 中獲取插入 IDJDBC
- word怎麼使用公式計算求和 word表格一行求和公式
- Latex排版學習筆記(1)——希臘字母表及其在latex中的表示筆記
- Word帶數學公式釋出部落格公式
- win10word中插入圖片失敗是為什麼_win10系統word插入圖片顯示不全如何解決Win10
- C#/VB.NET 在Word中新增條碼、二維碼C#
- SciTech-Mathmatics - LaTex: 數學專業 常用公式的輸入方式公式
- latex 數學公式(較全|順便檢測論壇支援性)公式