Tag: openxml sdk

Open XML SDK – 保存模板文件(.xltx为.xlsx)

我有以下代码来打开Excel模板文件并将其保存为.xlsx文件,当我尝试打开新文件时,我得到下面的错误。 请帮忙解决这个问题。 Excel无法打开文件“sa123.xlsx”,因为文件格式或扩展名无效。 validation该文件是否已损坏,文件扩展名是否与该文件的格式匹配。 string templateName = "C:\\temp\\sa123.xltx"; byte[] docAsArray = File.ReadAllBytes(templateName); using (MemoryStream stream = new MemoryStream()) { stream.Write(docAsArray, 0, docAsArray.Length); // THIS performs doc copy File.WriteAllBytes("C:\\temp\\sa123.xlsx", stream.ToArray()); }

Excel Open XML错误:创build简单示例时发现“无法读取的内容”

当我尝试打开由以下代码创build的文档时,出现含糊不清的“excel found unreadable content”错误: public void GenerateWorkbookFromDB() { //Make a copy of the template file File.Copy(HttpContext.Current.Server.MapPath("ReportTemplate/test.xlsx"), HttpContext.Current.Server.MapPath("Reports/test.xlsx"), true); //Open up the copied template workbook using (SpreadsheetDocument myWorkbook = SpreadsheetDocument.Open(HttpContext.Current.Server.MapPath("Reports/test.xlsx"), true)) { WorkbookPart workbookPart = myWorkbook.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.First(); string origninalSheetId = workbookPart.GetIdOfPart(worksheetPart); WorksheetPart replacementPart = workbookPart.AddNewPart<WorksheetPart>(); string replacementPartId = workbookPart.GetIdOfPart(replacementPart); OpenXmlReader reader = OpenXmlReader.Create(worksheetPart); […]

Office Open XMl SDK将数字写入表单

我正在尝试窝写数据从数据表到数据表 – 不幸的是,这不像预期的那样工作,例如DataSheet已损坏。 我正在使用下面的代码: private void AddDataToSheet(ExcelViewData data, SheetData sheetData) { var excelData = data.WriteableDataTable; //// this returns a datatable ////the numbers have a format like "8,1" "8,0" etc. for (int i = 0; i < excelData.Rows.Count; i++) { Row row = new Row(); //row.RowIndex = (UInt32)i; for (int c = 0; c < excelData.Columns.Count; […]

打开XML SDK:格式化Excel单元格的一部分

在DocumentFormat.OpenXml.Spreadsheet使用Open XML for Excel,如何只将部分文本设置为粗体? var cell = new Cell { //DataType = CellValues.InlineString, CellReference = "A" + 1 }; // TODO: Set "bold text" to bold style //var inlineString = new InlineString(); //inlineString.AppendChild(new Text { Text = "Normal text… bold text…" }); //cell.AppendChild(inlineString); 注释掉现在使用的代码,但是应该或者应该更改。

Office Open XML中的<ct =“str”>和<c> <is>有什么区别?

这两个Office Open XML片段有什么区别? <cr="A2" t="str"> <v>btyler</v> </c> 和 <cr="B2"> <is><t>btyler</t></is> </c> 注意:我基于规范手动创build的第二个示例,第一个示例来自实际的Excel工作簿。 根据规范,两者似乎都是有效的,几乎完全相同,所以我想知道为什么当t="str"时候貌似也是一样的。 Excel何时select使用另一种?

使用Open XML 2.0在Excel中获取单元格背景颜色

我正在尝试在Excel电子表格中获取单元格的背景颜色。 我正在使用Open XML 2.0 SDK,我可以打开* .xlsx文件并获取单元格值。 我的代码获取背景颜色如下: public BackgroundColor GetCellBackColor(Cell theCell, SpreadsheetDocument document) { BackgroundColor backGroundColor = null; WorkbookStylesPart styles = SpreadsheetReader.GetWorkbookStyles(document); int cellStyleIndex = (int)theCell.StyleIndex.Value; CellFormat cellFormat = (CellFormat)styles.Stylesheet.CellFormats.ChildElements[cellStyleIndex]; Fill fill = (Fill)styles.Stylesheet.Fills.ChildElements[(int)cellFormat.FillId.Value]; backGroundColor = fill.PatternFill.BackgroundColor; return backGroundColor; } 我的问题在于, PatternFill.BackgroundColor只返回一个自然数,我认为它是样式的id。 我的问题是,那行代码 DocumentFormat.OpenXml.Spreadsheet.Color c = (DocumentFormat.OpenXml.Spreadsheet.Color)styles.Stylesheet.Colors.ChildElements[Int32.Parse(backGroundColor.InnerText)]; 返回一个错误,因为Stylesheet.Colors为null ……也许是因为我在excel中使用了“内置”颜色 – 而不是自定义的颜色?! 任何想法如何能从“backGroundColor-Value”“计算”真实的颜色数?

插入新行并使用OpenXML SDK 2.0移动现有的行

我正在使用OpenXML SDK 2.0将数据添加到电子表格模板,但我遇到了一个问题(因为我一直在使用OpenXML的一天不难相信)。 我不知道如何添加新行,同时推下新的行下面的所有行。 这是我正在使用的电子表格模板。 更确切地说,我想要实现的是将这些石板色的行移动到底部,同时向白色的行添加数据。 我目前使用的代码与MSDN上的代码相同 – 使用Open XML Format SDK 2.0创build文档(第2部分,共3部分) 我相信这个部分的代码是在这个部分: sheetData.AppendChild(polaznikRow); 我也尝试过使用InsertAfter,InsertAt等。 但没有任何成功。 任何帮助,将不胜感激。

在删除20,000+行Excel文件中的第一行时,出现Open XML SDK v2.0性能问题

使用OpenXML SDK v2.0删除20,000+行Excel文件中的第一行时,是否遇到任何性能问题? 我正在使用Open XML SDK文档中build议的删除行编码。 我需要几分钟的时间才能使用Open XML SDK删除第一行,但在Excel应用程序中仅需要一秒钟。 我终于发现,瓶颈实际上是在处理行删除的泡沫式的方法。 删除的行后面有很多行更新。 所以在我的情况下,大约有20,000行被更新,逐行移动数据。 我想知道是否有更快的方式做行删除。 有人有想法吗?

使用Excel工作表作为模板与OpenXML中的“真实”Excel模板

有没有人有什么好的答案之间有什么样的差异 使用一些任意预格式化的Excel 2007 * .xlsx文件作为模板,将其加载到我的C#应用​​程序中,并使用Microsoft OpenXML SDK填充其数据单元格 与 创build特定的Excel模板(* .xltx)文件,并将其用作“数据填充”练习的基础 当我不使用Excel模板(* .xltx)时,是否会丢失一些东西? 如果是这样 – 我会发生什么?

OpenXml SpreadsheetDocument.Open(…)获取exception – 主要部分丢失

我有一个xlsx文件标题,它位于我的项目path。 我想使用OpenXML插入数据,但打开文件时出现exception: using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open(MyxlsFileName, true)) { // … } 例外: “指定的软件包无效,主要部分丢失” exception的含义是什么,什么是错的? 预先感谢!