Tag: openxml

使用MemoryStream创buildOpen XML电子表格时,Excel和“不可读内容”

当使用Open XML SDK v2.0创buildExcel电子表格时,我们的Excel输出最初几个月成功运行。 最近Excel(所有版本)开始抱怨“Excel在'zot.xlsx'中发现了不可读的内容,你想恢复这个工作簿的内容吗?” 我们使用一个MemoryStream作为存储在Web应用程序中创build文件,然后在MIMEtypes为“application / vnd.openxmlformats-officedocument.spreadsheetml.sheet”的HTTP响应中将其作为byte []发送。 坏文件的解压内容与文件的解压内容相同,没有错误。

条件格式化与硬停止的颜色渐变

我有一个Excel表中有一个正负值的数据列。 我希望能够做的是应用条件格式(颜色渐变)从深绿色到浅绿色的正值,浅红色到深红色的负值。 但是,我似乎无法做到这一点。 如果我应用一个条件格式,例如最大值为零,零点为浅绿色,那么所有的负值也会变成浅绿色。 有没有办法使一个条件格式只适用于一定的价值,而不是超越? 我可以类似地为负值创build条件格式,但是同样会将正值显示为浅红色。 如果我在同一张纸上,则具有最高优先级的胜者将获胜。 更新 :尽pipe这真的很难看,但我决定试图找出哪些单元格大于0(或者实际上是一个中点值,在这种情况下是1.33 ),哪些单元格更低,并将单元格引用明确地设置为这些单元格。 所以我尝试像这样定义的条件格式(正绿色标尺): <x:conditionalFormatting sqref="$E$5 $E$6 $E$10 $E$13 $E$15 $E$17 $E$18 $E$19 $E$22 $E$24 $E$25…" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> <x:cfRule type="colorScale" priority="1"> <x:colorScale> <x:cfvo type="num" val="1.13330279612636" /> <x:cfvo type="num" val="1.91050388235334" /> <x:color rgb="d6F4d6" /> <x:color rgb="148621" /> </x:colorScale> </x:cfRule> </x:conditionalFormatting> 像这样(负面的红色标尺): <x:conditionalFormatting sqref="$E$4 $E$7 $E$8 $E$9 $E$11 $E$12 $E$14 $E$16 […]

如何使用asp.net创build和下载excel文档

如何使用asp.net创build和下载excel文件? 目的是使用XML,LINQ或其他方式通过浏览器发送Excel文档给客户。 编辑: 用例 客户在浏览器中加载gridview(使用ajax框架),gridview直接链接到一个sql数据库。 我把一个button“出口到Excel”,让客户保存在他的电脑上的这个gridview数据ansd我想推出一个干净的Excel下载。 这里提出的解决scheme是不干净的,像发送一个HTML文件,并将头文件改为Excel文件等,我现在正在寻找一个简单的Codeplex解决scheme,我会让你知道。

我怎样才能得到实际使用的范围修改Excel使用Epplus?

我正在使用EPPlus从excel读数据到datable。 在读取了10行logging的excel表格后,我通过删除现有数据修改了excel表格,并只保存了一行数据。 但是,当我正在读取修改后的excel时,它仍然读取10行(值为1,剩余为空字段)到数据表。 怎么能限制这个? 我正在使用以下代码来读取Excel。 using (var pck = new OfficeOpenXml.ExcelPackage()) { using (var stream = File.OpenRead(FilePath)) { pck.Load(stream); } var ws = pck.Workbook.Worksheets.First(); bool hasHeader = true; // adjust it accordingly(this is a simple approach) foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column]) { DSClientTransmittal.Tables[0].Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column)); } var startRow […]

在Java中匹配Excel的浮点数

我在工作表1的左上方单元格中有一个单一数字的.xlsx电子表格。 Excel用户界面显示: -130.98999999999 这是在公式栏中可见的,即不受包含单元格设置显示的小数位数的影响。 这是Excel将为这个单元格显示的最准确的数字。 在底层的XML中,我们有: <v>-130.98999999999069</v> 当试图用Apache POI读取工作簿时,它通过Double.valueOf从XML中提供数字,并提供: -130.9899999999907 不幸的是,这与用户在Excel中可以看到的数字不同。 任何人都可以指向我的algorithm,以获得用户在Excel中看到相同的数字? 迄今为止,我的研究表明,Excel 2007文件格式使用IEE754浮点的稍微非标准版本,其中值空间不同。 我相信Excel的浮点数,这个数字是四舍五入的边界的另一边,因此出来,而不是向上舍入。

OpenXML SDK Spreadsheet入门套件

我正在尝试通过OpenXML SDK Spreadsheet API开始使用Excel文档。 但是我还没有find任何有关如何从头开始创buildxlsx文件的好的指南,甚至没有例子。 只有如何打开现有的文件并修改它。 我一直在想有一个空的模板文件,并制作一个副本,然后开始我的工作。 但是,这种感觉是对的。 这可能会更容易,但我不舒服的使用一种技术,我不觉得,我明白,至less“很好”。 所以我的问题是:有没有人有任何文章或书籍或任何其他types的资源解释API的好技巧? 提前致谢。 /约翰

添加自动筛选和sorting导致Excel崩溃

我正在开发一个应用程序,您可以使用OpenXML将一些数据导出到Excel文件。 除了自动filter之外,一切正常。 这个想法是将一个自动filter添加到数据的主体,以便用户自动控制过滤和sorting数据。 所以在代码中,我做了这样的事情: var filter = new AutoFilter() { Reference = string.Format("{0}:{1}", topLeftCellReference, bottomRightCellReference ) }; worksheet.AppendChild(filter); 在导出的XLSX中,它看起来像这样: <x:autoFilter ref="A4:L33" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main" /> 并将其添加到sheetData和mergeCells之间的工作表中。 我可以在Excel中打开这个filter,它工作正常。 预计如果您尝试对列进行sorting,该列将进行sorting,然后Excel崩溃。 保存并重新加载文件(强制Excel清理所有内容)不能解决问题。 但是,如果你先应用一个filter(比如过滤一个列到> 10 ,然后删除那个filter,你现在可以sorting而不会崩溃。我应用一个filter并删除它之后保存了一个文件,现在这个文件很好,但是看着“修复”文件的XML,我没有看到任何明显的差异。 有没有人知道什么可能会导致这个问题? 除了将其添加到工作表之外,在应用自动filter时还有其他事情要做吗? 注意:我们正在使用Excel 2010(版本14.0.7153.5000) 下面是一个示例文件 (点击下载,它将以.zip下载,重命名为.xlsx以在Excel中打开。启用编辑,select其中一列并尝试sorting)。 编辑 :玩这个更多。 如果您在Excel中重新保存文件,它仍然是坏的。 但是,如果您首先应用filter(然后清除它),然后在Excel中重新保存,则会得到一个工作文件。 仔细观察两个文件(仍然损坏的resaved文件和现在工作的文件),我注意到在应用(和清除)filter之后,这个额外的位被添加到工作簿中: <x:definedNames> <x:definedName name="_xlnm._FilterDatabase" localSheetId="0" hidden="1">'Sheet 1'!$A$1:$E$11</x:definedName> </x:definedNames> 不知道这可能是不是…

如何使用OpenXML格式SDK从电子表格读取数据?

我需要使用Open XML SDK 2.0从Excel 2007工作簿中的单个工作表中读取数据。 我花了很多时间去寻找这样做的基本指导原则,但是我只能在创build电子表格方面find帮助。 如何迭代工作表中的行,然后迭代每行中的单元格,使用此SDK?

ClosedXML – 创build多个数据透视表

我试图将一些数据导出到Excel数据表S1其数据在接下来的两张表S2 and S3显示为透视图。 我能够创build一个枢轴,它的工作原理是完美的。 但是,当我创build两个枢轴,随之而来的Excel文件呈现为损坏。 我的意思是腐败, 点击是,我得到这个 – 这里是我用来创build枢纽的代码 – using XL = ClosedXML.Excel; … XL.XLWorkbook wb = new XL.XLWorkbook(); dsData = Session["ExportData"] as DataSet; var sheet1 = wb.Worksheets.Add("output table"); sheet1.Cell(1, 1).InsertTable(dsData.Tables[0], "output table", true); // sheet1 is the reference sheet S1 var dataRange = sheet1.RangeUsed(); // First Pivot XL.IXLWorksheet ptSheet1 = wb.Worksheets.Add("S2"); var pt1 […]

用OpenXml sdk 2.0创buildExcel文档

我已经使用OpenXml SDK 2.0创build了一个Excel文档,现在我必须devise它,但是我不能。 我不知道如何绘制背景颜色或更改不同单元格中的字体大小。 我创build一个单元格的代码是: private static Cell CreateTextCell(string header, string text, UInt32Value index) { Cell c = new Cell(); c.DataType = CellValues.InlineString; c.CellReference = header + index; InlineString inlineString = new InlineString(); DocumentFormat.OpenXml.Spreadsheet.Text t = new DocumentFormat.OpenXml.Spreadsheet.Text(); t.Text = text; inlineString.AppendChild(t); c.AppendChild(inlineString); return c; }