Tag: openxml

如何将CellFormat应用于单元格

这是我的代码: public MemoryStream ExportDataTableToExcel(DataTable exportData, string sheetTitle = "Exported Data", bool includeColumnHeaders = true) { uint excelRow = 1; MemoryStream ms = new MemoryStream(); SpreadsheetDocument objSpreadsheet = SpreadsheetDocument.Create(ms, SpreadsheetDocumentType.Workbook); WorkbookPart objWorkbookPart = objSpreadsheet.AddWorkbookPart(); var wsp = objSpreadsheet.WorkbookPart.WorkbookStylesPart; if (wsp == null) { //objSpreadsheet.WorkbookPart.DeletePart(wsp); var stylesPart = objSpreadsheet.WorkbookPart.AddNewPart<WorkbookStylesPart>(); stylesPart.Stylesheet = new Stylesheet(); CellFormat cf = new […]

与文档相反,OpenXML不能帮助读取大型Excel文件

该文件说: The following code segment is used to read a very large Excel file using the DOM approach. 然后举个例子。 我用它来实现读取700K行相对较大的文件。 现在我有这个代码: using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(path, false)) { WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.First(); SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); // no other code } 当我开始我的程序时,我看到有多快 – 仅仅在五秒钟内 – 内存耗尽(> 1G)。 debugging器指向这行代码: SheetData sheetData = […]

OpenXML大数据集要非常慢

我正在使用OpenXml将大数据转换为Excel,我正在使用以下导出到Excel类 http://www.codeproject.com/Articles/692092/A-free-Export-to-Excel-Csharp-class-using-OpenXML 以下是我class的代码。 public static bool CreateExcelDocumentAsStream(DataSet ds, string filename, System.Web.HttpResponse Response) { try { System.IO.MemoryStream stream = new System.IO.MemoryStream(); using (SpreadsheetDocument document = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook, true)) { WriteExcelFile(ds, document); } stream.Flush(); stream.Position = 0; Response.ClearContent(); Response.Clear(); Response.Buffer = true; Response.Charset = ""; // NOTE: If you get an "HttpCacheability does not exist" error on […]

以编程方式从VSTO Excel工作簿中读取_AssemblyLocation

我有一个Visual Studio Excel工作簿项目。 当我发布工作簿并检查工作簿的源(我打开WinZip并检查custom.xml)时,我看到标签_AssemblyLocation,它对应于发布path。 有没有办法从我的.NET代码中读取_AssemblyLocation? 我希望能够阅读发布path,并根据服务器名称确定我所在的环境(开发/质量保证/生产)。

使用OpenXML从Excel文件中读取date

我正在C库中使用OpenXML来读取excel文件。 我可以阅读一个单元格文本和数字很好,但是当谈到date有一个问题。 有单元格的types“date”,但显然Excel 2007不会保存该types的date,所以我不能告诉我正在阅读的值是否是一个date,而是它似乎使用样式。 我怎么能检测到它是一个date,并返回它的string表示(例如:29-12-2010)?

你可以在ClosedXML(C#)中填充一个范围

我想知道在使用closedXML而不是一次填充单个单元格时,是否可以从数组中一次性填充范围。 另外,如果可以从一个数组中设置一个范围,比单元格循环和填充每个单元更快吗?

如何通过OpenXML从Excel工作簿中删除/删除ExtensionList?

我有100多个工作簿已被破坏 – 当他们试图打开时,Excel会抛出一个错误消息,说'x'是一个未声明的前缀。 这些文件不能被加载到一个XML查看器(包括OpenXML的一个)。 现在,如果将Excel工作簿的扩展名更改为.zip,请将所有部分解压缩,请在workbook.xml文件中编辑以下行(这是xml文档中的最后一个元素) <extLst><x:ext uri="{140A7094-0E35-4892-8432-C4D2E57EDEB5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:workbookPr chartTrackingRefBase="1"/></x:ext></extLst> 通过删除整个元素或删除<ext>标记中的x: <ext>然后在打包备份后工作簿将正常工作。 我也尝试了下面的VB.Net代码: Private Sub RemoveExceptionsFromWorkbook(ByVal workbookPath As String) Using excelDoc As SpreadsheetDocument = SpreadsheetDocument.Open(workbookPath, True) If excelDoc.WorkbookPart.Workbook.Descendants(Of WorkbookExtensionList)().Any() Then excelDoc.WorkbookPart.Workbook.RemoveAllChildren(Of WorkbookExtensionList)() excelDoc.WorkbookPart.Workbook.Save() End If End Using End Sub 但是我得到的'x'是每次都不明确的前缀错误。 有谁知道如何解决这一问题? 任何帮助将不胜感激。

在OPEN XML中为单元格设置Font.Bold和Column.Width

我一直使用OPEN XML创build一个可以下载的电子表格。 我想设置列的宽度,并将标题更改为粗体。 我已经使用Office.Interop.Excel完成了这个工作,但是我正在努力处理这种格式。 我的代码如下,你可以看到我已经设置了一个字体,但一直无法将其分配给我的电子表格,我收到消息说不能分配给一棵树。 SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(fileName, SpreadsheetDocumentType.Workbook); //Open(fileName, true); try { WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart(); workbookpart.Workbook = new DocumentFormat.OpenXml.Spreadsheet.Workbook(); WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>(); worksheetPart.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(new SheetData()); DocumentFormat.OpenXml.Spreadsheet.Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>(new DocumentFormat.OpenXml.Spreadsheet.Sheets()); Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Models" }; sheets.Append(sheet); DocumentFormat.OpenXml.Spreadsheet.Font boldFont […]

Openxml单元格返回InnerText不是实际值

我开发一个可重用的代码来读取Excel单元格的值。 我的代码如下: private string ReadCellValue(WorksheetPart worksheetPart, string cellAddress) { string value = null; Cell theCell = worksheetPart.Worksheet.Descendants<Cell>(). Where(c => c.CellReference == cellAddress).FirstOrDefault(); // If the cell does not exist, return an empty string. if (theCell != null) { value = theCell.InnerText; if (theCell.DataType != null) { switch (theCell.DataType.Value) { case CellValues.SharedString: var stringTable = worksheetPart.GetPartsOfType<SharedStringTablePart>() […]

ClosedXML生成格式错误的xlsx

当我打开文件时,似乎无法用ClosedXML输出一个好文件 我们发现“filename.xlsx”中的某些内容存在问题您是否希望我们尽可能地恢复? 如果您信任此工作簿的来源,请单击“是”。 using (var workbook = new XLWorkbook()) { var worksheet = workbook.AddWorksheet("name"); worksheet.Row(1).Cell(i + 1).SetValue("test"); worksheet.Row(k + 2).Cell(column.Order + 1).SetValue("test value"); using (var memoryStream = new MemoryStream()) { workbook.SaveAs(memoryStream); memoryStream.Seek(0, SeekOrigin.Begin); return memoryStream.GetBuffer(); } }