Tag: openxml sdk

使用OpenXml调用AddAlternativeFormatImportPart后损坏文档

我试图在.docx文件中创建一个AddAlternativeFormatImportPart,以便通过AltChunk在文档中引用它。 问题是下面的代码导致docx文件读取为Word损坏,无法打开。 string html = “some html code.” string altChunkId = “html234”; var document = WordprocessingDocument.Open(inMemoryPackage, true); var mainPart = document.MainDocumentPart.Document; var mainDocumentPart = document.MainDocumentPart; AlternativeFormatImportPart chunk = mainDocumentPart.AddAlternativeFormatImportPart (AlternativeFormatImportPartType.Xhtml, altChunkId); Stream contentStream = chunk.GetStream(FileMode.Open,FileAccess.ReadWrite); StreamWriter contentWriter = new StreamWriter(contentStream); contentWriter.Write(html); contentWriter.Flush(); { … } mainPart.Save();

Open XML SDK:尝试填充超过25列时出现“Unreadable content”错误

我在C#中使用Open XML SDK创建了一个电子表格,并成功填充了两个工作表。 当尝试填充第三个时,我在打开完成的文档时出现“不可读内容”错误,并且当我尝试在第三个文件中连续填充超过25个单元格时,它似乎发生。 我使用的代码片段与在文档中其他地方成功运行的代码片段相同: string[] headers2 = { “Reference”, “Raised”, “Priority”, “Affected”, “Linked incidents”, “Points”, “SLA”, “Stopped”, “Target” }; // remaining headers are month/years created on the fly string[] headerCells = { “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “J”, “K”, “L”, “M”, “N”, “O”, “P”, “Q”, “R”, “S”, “T”, “U”, “V”, […]

如何在Open XML工作表中插入日期?

我正在使用Microsoft Open XML SDK 2,我很难在单元格中插入日期。 我可以通过设置Cell.DataType = CellValues.Number来插入数字而没有问题,但是当我对日期( Cell.DataType = CellValues.Date )执行相同操作时,Excel 2010会崩溃(2007年也是如此)。 我尝试将Cell.Text值设置为多种日期格式以及Excel的日期/数字格式无济于事。 我还尝试使用样式,删除type属性,以及我扔在墙上的许多其他比萨… 有人能指出我在工作表中插入日期的例子吗?

使用OpenXML SDK将RTF文件的内容嵌入到DOCX文件中

在我们旧的基于MSWord-97的系统中,我们使用COM与.doc文件进行交互,并嵌入OLE对象,因此嵌入的文档在父文件中可见(而不是图标)。 我们用一个使用OpenXML SDK的系统取而代之,因为它需要在我们的服务器上安装Word,这会生成.docx文件。 但是我们仍然需要将RTF文件的内容嵌入到生成的DOCX中…具体来说,我们用文件的内容替换书签。 我在网上找到了一些例子,但它们都有所不同。 当我在Word中创建一个简单的示例并查看XML时,有很多东西可以定位/显示嵌入对象的可视化表示,而嵌入本身似乎并不太可怕。 最简单的方法是什么?

如何在WordOpenXML的输出中解析mathML?

我想只读取用于生成方程的xml,我使用Paragraph.Range.WordOpenXML获得。 但是用于等式的部分不是MathML ,因为我发现microsoft的Equation是MathML 。 我需要使用一些特殊的转换器来获得所需的xmls还是有其他方法吗?

OpenXML SDK将VBA注入excel工作簿

我可以成功地将一段VBA代码注入到生成的excel工作簿中,但我要做的是使用Workbook_Open()事件,以便在文件打开时执行VBA代码。 我将sub添加到我的xlsm模板文件中的“ThisWorkbook”对象。 然后,我使用openxml生产力工具来反映代码并获取编码的VBA数据。 生成文件并查看VBA时,我看到“ThisWorkbook”和“ThisWorkbook1”对象。 我的VBA位于“ThisWorkbook”对象中,但代码永远不会在打开时执行。 如果我将我的VBA代码移动到“ThisWorkbook1”并重新打开该文件,它可以正常工作。 为什么要创建一个额外的“ThisWorkbook”? 是否无法使用Workbook_Open()子系统注入excel电子表格? 这是我正在使用的C#代码的片段: private string partData = “…”; //base 64 encoded data from reflection code //open workbook, myWorkbook VbaProjectPart newPart = myWorkbook.WorkbookPart.AddNewPart(“rId1”); System.IO.Stream data = GetBinaryDataStream(partData); newPart.FeedData(data); data.Close(); //save and close workbook 有人有想法吗?

如何在没有互操作程序集的情况下将任何文件类型嵌入到Microsoft Word中

我正在尝试这样做如何使用OpenXml 2.0将任何文件类型嵌入到Microsoft Word中 但只使用OpenXml SDK 2.5(没有互操作程序集) 我可以使用以下代码示例嵌入其他单词(或办公室)文件 (我们需要从NuGet和WindowsBase添加对DocumentFormat.OpenXml的引用) 但我无法重构它以接受任何文件类型(pdf,mp3等) using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; using DocumentFormat.OpenXml; using v = DocumentFormat.OpenXml.Vml; using ovml = DocumentFormat.OpenXml.Vml.Office; using System.IO; class Program { static void Main(string[] args) { //Just update the following 2 variables to point to existng files string containingDocumentPath = @”C:\Temp\Word\ContainingDocument.docx”; string embeddedDocumentPath = @”C:\Temp\Word\EmbeddedDocument.docx”; CreatePackage(containingDocumentPath, embeddedDocumentPath); } […]

.NET OpenXML性能问题

我试图使用OpenXML从ASP.NET Web服务器写出一个Excel文件。 我有大约2100条记录,大约需要20-30秒才能完成。 我能以任何方式加快速度吗? 从db中检索2100行只需要几分之一秒。 不确定为什么在内存中操作它们会花费更长的时间。 注意:ExcelWriter是我们的自定义类,但它的所有方法都直接来自此链接中的代码, http://msdn.microsoft.com/en-us/library/cc861607.aspx public static MemoryStream CreateThingReport(List things, MemoryStream template) { SpreadsheetDocument spreadsheet = SpreadsheetDocument.Open(template, true); WorksheetPart workSheetPart = spreadsheet.WorkbookPart.WorksheetParts.First(); SharedStringTablePart sharedStringPart = spreadsheet.WorkbookPart.GetPartsOfType().First(); Cell cell = null; int index = 0; //create cell formatting for header text Alignment wrappedAlignment = new Alignment { WrapText = true }; uint rowOffset […]

OpenXML替换所有文档中的文本

我有下面的代码。 我想用“NewText”替换文本“Text1”,这是有效的。 但是当我将文本“Text1”放在一个不再适用于表格中的“Text1”的表格中时。 我想在所有文件中进行替换。 using (WordprocessingDocument doc = WordprocessingDocument.Open(String.Format(“c:\\temp\\filename.docx”), true)) { var body = doc.MainDocumentPart.Document.Body; foreach (var para in body.Elements()) { foreach (var run in para.Elements()) { foreach (var text in run.Elements()) { if (text.Text.Contains(“##Text1##”)) text.Text = text.Text.Replace(“##Text1##”, “NewText”); } } } }

打开XML SDK 2.0以按名称访问excel 2010工作表

我有一个Excel 2010电子表格,其中包含3个名为Sheet1,Sheet2和Sheet3的工作表。 我正在尝试按名称获取对工作表的引用。 我正在使用代码: using (SpreadsheetDocument myWorkbook = SpreadsheetDocument.Open(FileName, true)) { //Access the main Workbook part, which contains all references WorkbookPart workbookPart = myWorkbook.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.Last(); // this gives me Sheet1 SheetData sheetData = worksheetPart.Worksheet.GetFirstChild(); } 我试图获得Sheet2的引用,但我找不到这样做的方法。 我越来越近了,但我还没到那里: var x = workbookPart.Workbook.Sheets.Where(s=> s.GetAttribute(“name”, “”).Value == “Sheet2”).FirstOrDefault(); 这让我得到了工作表的参考,但没有给工作表上的数据 谢谢