用OpenXml在文档的尾部添加一个Rich Text Content Control/Plain Text Content Control
实现环境:Visual Studio 2010, OpenXml SDK 2.0
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; namespace OpenXmlWordSdtBlock { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenFileDialog objOpenFileDialog = new OpenFileDialog(); objOpenFileDialog.Filter = "Word Document (*.docx)|*.docx"; objOpenFileDialog.ShowDialog(); string strPath = objOpenFileDialog.FileName; Form2 objForm2 = new Form2(); objForm2.ShowDialog(); string strInsertText = objForm2.Msg; if (strPath.Length > 0) { try { using (WordprocessingDocument objWordprocessingDocument = WordprocessingDocument.Open(strPath, true)) { /* * 接下来的代码将获取MainDocumentPart、Document和Body。 * 这些是Word文档中已经存在的结构,所以不用New。 */ MainDocumentPart objMainDocumentPart = objWordprocessingDocument.MainDocumentPart; Document objDocument = objMainDocumentPart.Document; Body objBody = objDocument.Descendants<Body>() .FirstOrDefault(); /* * 接下来的代码将创建一个新的段落来放Rich Text Content * Control。事实下所有的Content Control在OpenXml 格式中 * 都以SdtBlock表示。所以说这是插入一个Plain Text * Content Control也是没错的。 */ Paragraph objParagraph_1 = new Paragraph(); SdtBlock objSdtBlock = new SdtBlock(); SdtContentBlock objSdtContentBlock = new SdtContentBlock(); Paragraph objParagraph_2 = new Paragraph(); Run objRun = new Run(); Text objText = new Text(); if (strInsertText.Length > 0) objText.Text = strInsertText; else objText.Text = "<Null>"; objRun.Append(objText); objParagraph_2.Append(objRun); objSdtContentBlock.Append(objParagraph_2); objSdtBlock.Append(objSdtContentBlock); objParagraph_1.Append(objSdtBlock); objBody.Append(objParagraph_1); objDocument.Save(); } } catch (Exception ex) { MessageBox.Show(string.Format ("Stack:\n{0}\nException:\n{1}", ex.StackTrace, ex.Message), "OpenxXmlWordSdtBlock Exception"); } } } } }
征诛志异,三让两家王朝;功同开辟,一桮万古江南。