Tag: openxml sdk

OpenXml,独立存储和大文件大小

我正在使用OpenXML在Web应用程序中生成Excel文档。 它对文件<〜10mb很好 对于大于10MB的文件生成的文件,我得到以下exception… 虽然我在网上对这个问题进行了一些讨论(有些关于使用其他包装库),但我还没有解决我们的问题。 其他人看到并解决了这个问题? 我真的很喜欢使用OpenXml的想法(但是由于这个问题,我讨厌转向另一种解决scheme) 解决scheme? System.IO.IsolatedStorage.IsolatedStorageException:无法创build商店目录。 (System.IO.IsolatedStorage.IsolatedStorageFile.GetRootDir(IsolatedStorageScope范围,StringHandleOnStack retRootDir)在System.IO.IsolatedStorage.IsolatedStorageFile.InitGlobalsNonRoamingUser(IsolatedStorageScope范围)System.IO.IsolatedStorage.IsolatedStorageFile.GetRootDir(IsolatedStorageScope范围)中的(从HRESULTexception:0x80131468)范围)在System.IO.IsolatedStorage.IsolatedStorageFile.GetStore上的System.IO.IsolatedStorage.IsolatedStorageFile.GetGlobalFileIOPerm(IsolatedStorageScope范围)System.IO.IsolatedStorage.IsolatedStorageFile.Init(IsolatedStorageScope范围)(IsolatedStorageScope范围,typesdomainEvidenceType,typesassemblyEvidenceType)在MS.Internal.IO.Packaging.PackagingUtilities.ReliableIsolatedStorageFileFolder.GetCurrentStore()

Microsoft Open SDK 2.0使用c#生成excel文件

请参考链接我正在使用的代码从数据表中生成Excel文件。 我能够成功生成excel文件。 但问题/挑战/问题如下。 我想根据数据types生成列,所以如果列值包含date,那么它的单元格格式应该是date(dd / mm / yyy)如果数字然后数字。 等等… 我试图根据数据格式生成Excel文件,您可以看到具体的方法来生成单元格的值。 但是问题出在用户下载文件时会给出“Excel发现不可读的内容文件名”的警告信息,你是否想恢复这个工作簿的内容? 我不希望这个警告信息应该来。 如果我把所有东西写成没有格式的文本,那么文件将会打开而没有任何警告信息,下载文件后,如果用户试图格式化date或数字格式的相应列,那么也不允许用户在Excel中格式化/切片和切块数据文件。 参考: – http://www.codeproject.com/Articles/263106/Export-Tabular-Data-in-CSV-and-Excel-Formats-Throu 请让我知道如果有人的解决scheme。 我正在使用DocumentFormat.OpenXml.dll private Cell CreateTextCell(string header, UInt32 index, string text) { var cell = new Cell {DataType = CellValues.InlineString, CellReference = header + index}; var istring = new InlineString(); var t = new Text {Text = text}; istring.Append(t); cell.Append(istring); […]

Excel中的单元格的date格式OpenXml

我通过OpenXML SDK 2.5创buildexcel文件。 我有IDIsposable类,其中包括一个variables private SpreadsheetDocument ProcessDocument { get; set; } 我可以插入一个单元格的date值: var cell = GetCell(sheet, columnName, rowIndex); //method return a cell cell.DataType = new EnumValue<CellValues>(CellValues.Number); cell.CellValue = new CellValue(dateResult.ToOADate().ToString(CultureInfo.InvariantCulture)); cell.StyleIndex = 0; 在这种状态下,当我打开一个创build的单元格中的Excel文件,我看到一个数字。 这是好的,我的意思是,但现在我需要设置单元格格式…我有一个方法: public virtual UInt32 CreateCellFormat(String format) { NumberingFormat nf = new NumberingFormat(); nf.FormatCode = format; if (this.WorkbookStylesPart.Stylesheet.NumberingFormats == null) { this.WorkbookStylesPart.Stylesheet.NumberingFormats […]

在Excel中,使用OpenXML,你如何改变C#中checkbox的值?

我有一个现有的Excel电子表格,我需要开始填充数据。 在电子表格上是一些checkbox。 在使用OpenXML库的C#中,我可以访问文件,添加单元格数据,但不知道如何获取checkbox。 他们似乎在WorsheetPart.DrawingPart.WorksheetDrawing。 我如何获得对checkbox的引用并更改其值? 这是我的方法的开始: var spreadsheetDocument = SpreadsheetDocument.Open(filename, true); var sheet = spreadsheetDocument.WorkbookPart.Workbook.GetFirstChild<Sheets>() .Elements<Sheet>() .FirstOrDefault(s => s.Name == "The Worksheet"); var relationshipId = sheet.Id.Value; var worksheetPart = (WorksheetPart) spreadsheetDocument.WorkbookPart.GetPartById(relationshipId);

Excel工作簿始终只能在使用打开的xml创build后才能读取

我使用openxml 2.0从数据库转储一些数据到电子表格。 要求是用户可以添加额外的数据到工作表,但是当testing我注意到我不能保存在现有的工作簿。 我检查了信息面板,工作簿设置为只读。 我当然没有设置这是我的代码。 有任何想法吗?

如何在C#中使用OpenXML读取excel的空白单元格列值

这里在我的Execl表单中有一些空白值的列单元格,所以当我使用这段代码的时候,得到错误“Object reference not set to a object of a instance”。 foreach (Row row in rows) { DataRow dataRow = dataTable.NewRow(); for (int i = 0; i < row.Descendants<Cell>().Count(); i++) { dataRow[i] = GetCellValue(spreadSheetDocument, row.Descendants<Cell>().ElementAt(i)); } dataTable.Rows.Add(dataRow); } private static string GetCellValue(SpreadsheetDocument document, Cell cell) { SharedStringTablePart stringTablePart = document.WorkbookPart.SharedStringTablePart; string value = cell.CellValue.InnerXml; if (cell.DataType […]

使用OleDB读取使用Open XML 2.5 SDK创build的电子表格

我正在使用Open XML 2.5创build电子表格并使用OleDB读取它。 但是,在查询模式时,使用ACE打开文件会引发错误。 我得到“外部表格不在预期的格式”。

样式表所需的元素

我负责将所有的Excel Interop转换为OpenXML,目前我正在学习它的格式。 我正在关注这个例子 ,我已经截取了下面的代码: private Stylesheet GenerateStyleSheet() { // see http://blogs.msdn.com/b/chrisquon/archive/2009/11/30/stylizing-your-excel-worksheets-with-open-xml-2-0.aspx for example return new Stylesheet( new Fonts( new Font( // Index 0 – The default font. new FontSize() { Val = 13 }, new Color() { Rgb = new HexBinaryValue() { Value = "000000" } }, new FontName() { Val = "Calibri" }), new […]

如何使用OpenXmlWriterconfigurationxlsx格式和公式

我需要创build大的通用xlsx报告(超过500k行~50列)。 我写了生成这个报告的方法,但是我不知道如何设置单元格的格式(数据格式/样式(边框等))以及如何把公式放到使用OpenXmlWriter的单元格中。 private void FillExcelWorksheet<T>(String fileName, IEnumerable<T> source) { var properties = typeof(T).GetProperties(); using (SpreadsheetDocument document = SpreadsheetDocument.Create(fileName, SpreadsheetDocumentType.Workbook)) { //this list of attributes will be used when writing a start element List<OpenXmlAttribute> stringAttributes = new List<OpenXmlAttribute>() { new OpenXmlAttribute("t", null, "str") }; OpenXmlWriter writer; var workBookPart = document.AddWorkbookPart(); var workSheetPart = workBookPart.AddNewPart<WorksheetPart>(); writer = […]

如何区分date和其他数字格式(如数字/货币)在打开xml sdk SpreadSheet?

我正在阅读使用OpenXML SDK的xlsx文件。 阅读共享string值没有问题,但我不知道如何区分实际的数字和date,因为他们都有DataType为null,他们被存储为数字。 使用DateTime.FromOADate()我可以将数字值转换为date格式,但首先我需要确定单元格格式是否是date,否则数/货币格式的单元格值也将转换为date。 我试过在这篇文章中提到的解决scheme如何区分在OpenXML SpreadSheet中的OLE自动化date编号的内嵌数字? 。 但它不适用于货币格式,数字格式(负数格式请参阅附件截图)和一些自定义格式的数字和货币格式的截图。它将货币和数字格式转换为date 我在寻找 通用的解决scheme区分date和所有其他数字格式,以便格式(如数字,货币,科学)和自定义格式的数值的所有生成不会被转换为date 有没有通用的方式来格式单元格值的格式应用在Excel表单。现在我们正在处理每个格式单独