Tag: openxml

如何使用开放XML将超链接添加到Word docx?

我在添加到我的word文档的超链接时遇到了麻烦。 我不知道怎么做。 我想使用open xml在我的C#代码的word文档中建立一个链接。 是否只使用href或类似的不同解决方案? Open XML上有一个HyperLink类但是如何使用它?

Open XML – 如何在docx文档中添加水印

我正在尝试获取现有文档,如果标题不存在,请创建一个,然后在对角线上标题为“DRAFT”的标题中添加水印。 我已经按照这里发布的示例进行了操作,如果标题已经存在,我会将代码添加到添加水印的位置。 当前的问题是,当我添加新标题,添加对文档的引用,然后将水印添加到标题时,文档已损坏,无法再在Word 2010中打开。 为了测试我一直在做以下事情:从页面本身创建一个新的word文档,在页面的主要部分使用“TestDoc”文本。 以“TestDoc.docx”保存到我的桌面并关闭该文件。 然后我从Visual Studio运行应用程序。 下面的代码将始终使其损坏。 如果我在文件中添加一个没有文字的标题,然后点击保存,水印将正确显示。 这是我到目前为止: using System; using System.Collections.Generic; using System.Linq; using System.Text; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Vml; using DocumentFormat.OpenXml.Vml.Office; using DocumentFormat.OpenXml.Vml.Wordprocessing; using DocumentFormat.OpenXml.Wordprocessing; using HorizontalAnchorValues = DocumentFormat.OpenXml.Vml.Wordprocessing.HorizontalAnchorValues; using Lock = DocumentFormat.OpenXml.Vml.Office.Lock; using VerticalAnchorValues = DocumentFormat.OpenXml.Vml.Wordprocessing.VerticalAnchorValues; namespace DocumentWatermarkTest { class Program { static void Main(string[] args) { var […]

使用OpenXML SDK w / ASP.NET流式传输内存Word文档导致“损坏”文档

我无法将我创建的word文档流式传输到浏览器。 我不断从Microsoft Word收到一条消息,说明该文档已损坏。 当我通过控制台应用程序运行代码并将ASP.NET从图片中删除时,文档生成正确,没有任何问题。 我相信一切都围绕着写下文件。 这是我的代码: using (MemoryStream mem = new MemoryStream()) { // Create Document using (WordprocessingDocument wordDocument = WordprocessingDocument.Create(mem, WordprocessingDocumentType.Document, true)) { // Add a main document part. MainDocumentPart mainPart = wordDocument.AddMainDocumentPart(); new Document(new Body()).Save(mainPart); Body body = mainPart.Document.Body; body.Append(new Paragraph(new Run(new Text(“Hello World!”)))); mainPart.Document.Save(); // Stream it down to the browser // […]

使用OpenXML在Word中获取CheckBox

如何使用OpenXML获取嵌入在Word文档中的CheckBox控件的句柄? 您会认为Paragraph.ControlPropertiesPart或Paragraph.Descendents()会实现某些function,但在每种情况下我都会返回null类型。 我可以使用实际的XML结构遍历文档树,但这看起来很麻烦。 建议欢迎。

如何使用OpenXML SDK通过应用格式(格式化单元格值)获取单元格值

我一直在谷歌搜索并在网站上搜索答案,但我找不到解决方案 – 各地人们大多讨论如何在文档中添加新的数字格式并应用它。 我需要的是将单元格值作为带有应用格式的字符串 – 即与Excel显示的字符串相同。 我已经认为没有简单的方法或内置函数可以返回单元格的现成格式化值。 所以在我看来,要获得我需要做两件事的价值:1。获取格式字符串。 2.使用此字符串格式化单元格值。 但是这两个步骤都有问题。 可以轻松获取包含NumberFormatId的CellFormat实例: CellFormat cellFormat = (CellFormat) document.WorkbookPart.WorkbookStylesPart.Stylesheet.CellFormats.ElementAt(cell.StyleIndex); 但是,如果id对应于标准预定义格式之一,如何使用此NumberFormatId获取格式字符串? (即低于160)它们不在电子表格文档中,我无法相信它们应该在应用程序中进行硬编码。 此外,一旦获得格式字符串,如何将其应用于单元格值? 到目前为止我理解,代码应该检查单元格值的类型,如果是数字 – 使用格式字符串将其转换为字符串。 我发现这个页面提到了使用Microsoft.Office.Excel.Interop,但我更愿意继续使用OpenXML SDK。 总的来说,我很惊讶在Web上找到这个问题的确切答案是如此困难,因为我认为这将是许多开发人员在日常工作中需要的东西。

使用OpenXML将图片插入Word文档的标题

我知道这里有同样的问题,但答案有点模糊,并没有显示完整的源代码。 我有一个生成标题的方法,但它不起作用(在图像位置显示x)。 public static void AddPicHeader(string docxFileName) { using(WordprocessingDocument doc = WordprocessingDocument.Open(docxFileName, true)) { var mainDocPart = doc.MainDocumentPart; var imgPart = mainDocPart.AddImagePart(ImagePartType.Png, “rId999”); var image = GetImageFromFile(logoFileName); var imagePartID = mainDocPart.GetIdOfPart(imgPart); GenerateImagePartContent(imgPart, image); if(!mainDocPart.HeaderParts.Any()) { mainDocPart.DeleteParts(mainDocPart.HeaderParts); var newHeaderPart = mainDocPart.AddNewPart(); var rId = mainDocPart.GetIdOfPart(newHeaderPart); var headerRef = new HeaderReference { Id = rId }; var […]

OpenXml:工作表子元素更改排序导致损坏的文件

我正在尝试使用openxml来生成自动excel文件。 我面临的一个问题是使用excel的开放式xml对象模型来容纳我的对象模型。 我必须达到一个点,我意识到我为工作表附加子元素的顺序很重要。 例如: workSheet.Append(sheetViews); workSheet.Append(columns); workSheet.Append(sheetData); workSheet.Append(mergeCells); workSheet.Append(drawing); 上面的排序不会给出任何错误。 但以下内容: workSheet.Append(sheetViews); workSheet.Append(columns); workSheet.Append(sheetData); workSheet.Append(drawing); workSheet.Append(mergeCells); 给出错误 所以这不允许我随时创建一个绘图对象并将其附加到工作表中。 这迫使我在使用它们之前创建这些元素。 任何人都可以告诉我,我是否正确理解了这个问题? 因为我相信我们应该能够打开任何excel文件,必要时为工作表创建一个新的子元素并附加它。 但现在这可能会破坏这些元素应该被追加的顺序。 谢谢。

将Word DOCX文件另存为PDF

我正在使用openxml来创建Word DOCX文件。 我想将这些文档创建为PDF文件后保存。 有没有办法在openxml中做到这一点? 我认为答案是否定的。 如果不是,是否有推荐的库或工具可用于将DOCX文件保存/打印为PDF(以编程方式,在.NET中)? 我查看了sharpPDF(PDFSharp),看来这个库只是用于从头开始生成PDF,而不是将DOCX保存为PDF。 我可以以某种方式以完全自动化的方式打印到已安装的PDF打印机,可爱的PDF或Windows 7内置的PDF打印机吗? 更新:寻找免费的非病毒许可证,最好不需要额外的安装。

OpenXML向现有Excel文件添加新行

我有很多XLSX文件,我需要在文件中的最后一行后添加一个新行。 我正在使用OpenXML,到目前为止我知道如何打开/创建电子表格,但我在现有文件中添加新行的搜索没有返回任何内容。 有任何想法吗 ?

如何从docx文档中读取元数据信息?

我需要实现的是拥有一个word文档模板(docx),它将包含标题,作者姓名,日期等。 然后,用户将使用此模板来完成该模板。 我需要创建一个ac#程序,它将接收docx文件并读取所有感兴趣的信息(标题,名称,日期,……)。 所以我的问题是: 如何将元数据放入模板中说:这是标题,这是日期,这是名称等? (不是以编程方式) 如何以编程方式读取该信息?