Tag: openxml

如何使用OpenXML SDK 2.0添加一行到Excel?

我是OpenXML的新手,并且一直在添加一行新的行(含有单元格数据),并在A1中添加了一个新的单元格数据行。 所以基本上我想在“行1”列“A1”和“testing”在“行2”列“A1”中插入“testing”。 这是我的代码,它看起来很好,并创build文件,但Excel不打开它。 我在OpenOffice中打开它,它只显示一行而不是两行。 当我注释到追加row2到sheetdata,它工作正常。 所以我想我是错误地创build第二行。 任何帮助表示赞赏。 先谢谢你。 这里是代码: using (SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Create("generated.xlsx", SpreadsheetDocumentType.Workbook)) { //Add a WorkbookPart to the document. WorkbookPart workbookpart = spreadSheetDocument.AddWorkbookPart(); //create new workbook workbookpart.Workbook = new Workbook(); // Add a WorksheetPart to the WorkbookPart. WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>(); //instantiate new worksheet with new sheetdata worksheetPart.Worksheet = new Worksheet(new SheetData()); […]

OpenXML花费比OLEDB更长的时间从Excel工作表中读取行

当我使用OLEDB时,从Excel工作表中读取3200行只需要2 – 3秒。 我更改为OpenXML格式,现在需要1分钟以上才能从Excel工作表中读取3200行。 以下是我的代码: public static DataTable ReadExcelFileDOM(string filename) { DataTable table; using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open(filename, true)) { WorkbookPart workbookPart = myDoc.WorkbookPart; Sheet worksheet = workbookPart.Workbook.Descendants<Sheet>().First(); WorksheetPart worksheetPart = (WorksheetPart)(workbookPart.GetPartById(worksheet.Id)); SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); List<List<string>> totalRows = new List<List<string>>(); int maxCol = 0; foreach (Row r in sheetData.Elements<Row>()) { // Add the empty […]

保存工作表时Excel Web查询引用中断

当我修改包含Web查询的现有Excel工作簿时,我添加的任何新的Web查询都将正常工作,直到我保存并重新打开该文档。 当我重新打开时,突然所有表返回相同的数据,因为(以某种方式)新查询的query参数已被replace为添加到文档的第一个查询。 也就是说,当我重新打开文档并查看查询参数时,它们都是这样的: 所以我决定探索xlsx工作簿中的XML来看看发生了什么。 原来,我所有的新查询都存在于/xl/queryTables/path中,但它们都引用相同的数据连接(连接被id号引用),而且, /xl/queryTables/ /xl/connections.xml中没有提及新的数据连接我创build。 所以我想我会很聪明,只需在connections.xml创build一些新的节点,然后通过相应的id引用正确的连接。 不幸的是,Excel决定这样做并不好,决定把我的工作手册打破回去。 有谁知道修复,黑客或解决方法? 必须有一些方法来获得新的查询保存在工作簿中。 [我的环境] :Excel Mac版本14.2.4(120824) – 写作时的最新版本; MacOS山狮10.8.2。

是否存在用于打开xml Excel编辑的良好包装类和/或库?

我正在寻找一个很好的库来编辑和/或生成我们的Windows服务器上的Excel文件。 我觉得开放的xml sdk可能是要走的路,但对我来说,学习曲线似乎陡峭,我们的开发时间是有限的。 我认为编辑一个Excel文档应该不是那么困难。 我准备重新发明轮子,但认为首先要问是否有一个很好的项目/库,包装打开XML并使得与Excel交互更容易是值得的。 在这个官方的MS教程中,检索单元格值的代码长达数十行。 http://msdn.microsoft.com/en-us/library/bb739834.aspx?cs-save-lang=1&cs-lang=vb#ManipulateOpenXMLExcelPowerPoint_RetrievetheValueofaCellinaWorksheet 这似乎难以置信的笨拙,我希望有一个更好的接口,这个function。 注意:我对如何使这个问题更容易StackOverflow困惑,但我不知道更好的方法。

格式化来自OpenXML的单元格值

我打开xlsx文件作为一个包,并阅读XML文件的内容。 我能够获得我需要的共享string,边框等,这比我使用Interop时快了几个数量级。 我唯一的问题是当涉及到拉出数字和格式正确的格式是在Excel文件中。 是否有一个generics函数的某个地方需要一个值和格式并返回格式化的string? 例如,如果我有值31502008和自定义格式“$ *#,## 0 _”; $ *(#,## 0)“有一个简单的方法来获得Excel显示($ 31,502,008)。 很明显,Excel知道如何处理它,但我有一些表格有疯狂的自定义格式的数量,我想知道如何确保我得到的代码中的string与Excel中所看到的一致。 有任何想法吗? 非常感谢您的帮助。

如何从使用OpenXML和C#的Excel文档中的合并单元格中获取值

我有合并单元格的问题。 如果我在第一个单元格(B3)中具有值,并且此单元格与其他某些单元格(例如C3,D3,E3,F3,F4)合并在一起 – 在Excel文档中,我只能看到一个值。 这是伟大的,但我想从我的GetCellValue函数获得相同的B3值,当我要求C3,D3,E3,F3值。 我想有必要find所有合并单元格列表,并从第一个值读取值 – 但如何使用OpenXml做到这一点? public string GetCellValue(char ch, int y) { WorksheetPart wsPart = GetWorksheetPart(_sheetName); var addressName = new StringValue(ch + "" + y); Cell cell = wsPart.Worksheet.Descendants<Cell>(). Where(c => c.CellReference.Value == addressName).FirstOrDefault(); if (cell == null) return null; return cell.InnerText; } 更新: 我find了部分解决scheme(在OpenXML中查找合并的列名): List<MergeCells> mergeCells; WorksheetPart wsPart = GetWorksheetPart(_sheetName); if […]

将XMLembedded到Excel工作表中

我有一个XML文件,其中包含几个计算值以及项目列表,如: <?xml version="1.0" encoding="utf-8"?> <XmlContent> <Elements> <CreationDate>…</CreationDate> <Filename>….</Filename> </Elements> <PersonItems> <PersonItem> <FirstName>…</FirstName> <LastName>…</LastName> <Speed>…</Speed> </PersonItem> <PersonItem> <FirstName>…</FirstName> <LastName>…</LastName> <Speed>…</Speed> </PersonItem> […] </PersonItems> </XmlContent> 现在应该使用Excel 2007 OpenXmlFormat在Excel工作表中显示这些值。 计算的值应该映射到工作表内的一个特定的单元格,应该将PersonItems绑定到同一工作表中的一个表。 有没有办法将XML文件embedded到工作表包中,并通过使用c#Package API作为CustomXmlPart将值绑定到适当的字段? 我在Channel9上find了一个例子,Matthew Scott用Word Content Control Toolkit做了一些与Word 2007类似的东西。 但是,这只适用于Word。 有什么类似的Excel? 还是有更好的方法来解决这个任务?

OpenXML SDK – 合并多个Excel文件

我有2个文件。 我有Test1.xlsx和Test2.xlsx,我需要结合它有问题。 做这个的最好方式是什么? 我正在使用C#,MVC 3。 我已经看到提及AltChunk,但已经看到它与Documents和SpreadSheets一起使用。

如何将条件格式添加到XML / Excel文件?

我通过为它编写XML来生成一个Excel文件。 我差不多完成了,但是我无法按照自己想要的方式获得条件格式。 我想对某些单元格应用一个条件。 例如,对于每个数据行(不是页眉或页脚),如果列7-13中的值大于列6中的值,则列7-13应该高亮显示红色。下面的代码仅适用于第一个数据行。 我怎样才能得到它适用于一组行? </Table> <ConditionalFormatting xmlns="urn:schemas-microsoft-com:office:excel"> <Range>RC7:RC13</Range> <Condition> <Qualifier>Greater</Qualifier> <Value1>RC6</Value1> <Format Style='background-color:#F7A9A5'/> </Condition> </ConditionalFormatting> </Worksheet> </Workbook> 我宁愿不必指定确切的行号(B7-B13)。 理想情况下,我可以将它应用到我想要的每一行或通用的一组行如何。 更新:我还有一个问题,被比较的列(C6)是一个string。 如果string为空,则不应应用格式。 但是,如果该列包含一个数字,则应将其视为一个数字并进行比较。 更新: 这是更完整的代码: <?xml version="1.0"?> <?mso-application progid="Excel.Sheet"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> <Author>Sodexo Platform</Author> <LastAuthor>@HttpContext.Current.User.Identity.Name</LastAuthor> <Created>@DateTime.Now.ToUniversalTime()</Created> <LastSaved>@DateTime.Now.ToUniversalTime()</LastSaved> <Company>Sodexo</Company> <Version>1</Version> </DocumentProperties> <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> <DownloadComponents/> <LocationOfComponents HRef="file:///D:\"/> </OfficeDocumentSettings> <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> <WindowHeight>8700</WindowHeight> <WindowWidth>11355</WindowWidth> […]

在Excel中打开文件时出错,但在Open XML SDK中可以正常打开

我创build了一个testing文件,在A1列上只包含一个string。 当我在Excel中打开文件时,显示错误消息: filex.xml包含不可读的内容 当我点击Yes来尝试恢复文件时,我收到以下消息(已翻译): 这些工作室的一些部分被恢复或删除 删除logging:从/xl/worksheets/sheet1.xml中收集Celinformation 所以A1列中的string值被删除。 当我打开Microsoft Office的Open XML SDK 2.0生产力工具中的文件并单击validate ,我没有得到任何错误。 我怎样才能解决这个问题? 该文件可以在: file.xml下载