Tag: openxml

设置Excel电子表格列属性问题

我试图使用OpenXML框架在Excel电子表格中设置默认列宽,结果我得到了破损的文件。 这里是代码 private void initSpreadsheetDocument() { // Add a WorkbookPart to the spreadsheet document. WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart(); workbookpart.Workbook = new Workbook(); var sheetData = new SheetData(); var properties = new SheetFormatProperties { DefaultColumnWidth = 25D }; Worksheet worksheet = new Worksheet(); worksheet.AppendChild(sheetData); // here is line of code that corrupt file // without it […]

Excel到SQL,C#库

我有一个客户端给我的excel电子表格,它被分解成多个工作表。 我需要逐行提取每个工作表中的某些列,并遍历每个工作表(所有相同的模板)以将数据转储到数据库表中。 还需要清除出现的任何重复项。 我希望build立一个简单的asp.net前端,使用C#语言。 你会推荐什么样的图书馆? 我还没有find任何有用的东西。 任何帮助将被极大的赞赏! 🙂 PS到目前为止我发现的最好的是OpenXML(Microsoft库)

如何使用C#和SDK获取OOXML中的“第一”表单?

所以! :)简单的问题 – 这可能是问,但我找不到它。 我正在使用Open XML SDK和C#从XLSX中检索数据。 我想获得“第一”表(如第一个你会看到在Excel中),但是当我使用… WorkbookPart wbPart = workBook.WorkbookPart; //Now let's find the dimension of the first worksheet string sheetArea = wbPart.WorksheetParts.First().Worksheet.SheetDimension.Reference.Value; 不幸的是,在一个全新的XLSX中,这个“Sheet3”取代了“Sheet1”。 我不能提前知道工作表名称,也不能强制用户仅提交一张工作表或指定工作表名称。 我目前的要求是抓住第一张纸。 有人可以帮忙吗? 🙂 编辑:我想通了! 但我不能回答我自己的问题7个小时,所以… 我通过挖掘其他SO问题的答案find了这个: Open XML SDK 2.0 – 如何更新电子表格中的单元格? 实质上,一个可行的例子可能是这样的: (wbPart.GetPartById(wbPart.Workbook.Sheets.Elements<Sheet>().First().Id.Value) as WorksheetPart).Worksheet.SheetDimension.Reference.Value

如何在EPPlus中对行/列进行分组

有没有一种方法可以在EPPlus中实现这一点? 只有我能在互联网上find的东西是分组具体的数据,例如: AAA —> AAA 5 occurrences AAA BBB 2 occurences BBB BBB AAA AAA AAA 但在截图中不像视觉效果

使用OpenXML C#获取Excel单元格的列索引

我一直在寻找一段时间,似乎无法find如何做到这一点。 我有一个Excel表格,我正在使用OpenXML阅读。 现在正常的事情是循环行,然后循环通过单元格获取值,这很好。 但是,随着值我需要的单元格的位置,这将是格式(rowindex,ColumnIndex)。 我设法得到rowIndex,但似乎无法find列索引。 我其实觉得这很容易,但显然不是。

如何使用OpenXML创buildExcel文件而不创build本地文件?

是否有可能使用OpenXML SDK创build和编辑Excel文档而不创build本地文件? 根据文档“创build”方法需要一个文件path,该文件path创build该文件的本地副本。 SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook); 我在这里引用MSDN文章: https : //msdn.microsoft.com/en-us/library/office/ff478153.aspx 我的要求是创build文件,它应该由浏览器单击button下载。 任何build议?

从OpenXml Excel文件中读取date

我想使用SharpZipLib从.xlsx文件中读取数据,将其解压缩(在内存中)并读取内部xml文件。 一切都很好,但承认date – 他们存储在julean格式,我需要以某种方式识别,如果一个数字是一个date或只有一个数字。 在另一个话题(不幸的是它死了,我需要快速的回答)我知道一些从马克·贝克的东西,但它还不够… “Excel将date存储为浮点值…整数部分是从1/1/1900(或1/1/1904取决于正在使用哪个日历)以来的天数,小数部分是一天中的比例(即时间部分)…… 1900年被认为是闰年这一事实稍微有些尴尬。 数字与数字唯一区分的是数字格式掩码。 如果您可以阅读格式掩码,则可以使用该格式将该值标识为date而不是数字,然后从基准date计算date值/格式。 “但date的属性”s“的值总是”1“吗?我知道它定义了风格,但也许?)” s属性引用styles.xml中的style xf条目,并不总是date条目1 …这一切都取决于在工作簿中使用了多less种不同的样式。 xf样式依次引用数字格式掩码。 要标识包含date的单元格,您需要执行样式xf – > numberformat查找,然后确定该numberformat掩码是否是date/时间numberformat掩码(而不是例如百分比或会计号码格式掩码) “另外一个问题 – 我现在正在查看style.xml的内容,在部分我看到像这样的元素:”<xf numFmtId =“14”… applyNumberFormat =“1”/>“,”<xf numFmtId = “1”… applyNumberFormat =“1”/>“等,但没有<numFmts>部分…有没有”标准“格式?或者我只是想念一些东西? 有人可以帮我吗? 提前致谢。

如何使用OpenXML从Excel表格中检索选项卡名称

我有一个电子表格文件,其中有182列。 我需要将电子表格数据放入一个数据表中,但是我需要从每个选项卡添加数据,选项卡名称是什么,并将选项卡名称添加到数据表中的列。 这是我如何设置数据表。 然后,我在工作簿中循环,深入到sheetData对象,遍历每一行和每列,获取单元格数据。 DataTable dt = new DataTable(); for (int i = 0; i <= col.GetUpperBound(0); i++) { try { dt.Columns.Add(new DataColumn(col[i].ToString(), typeof(string))); } catch (Exception e) { MessageBox.Show("Uploader Error" + e.ToString()); return null; } } dt.Columns.Add(new DataColumn("SheetName", typeof(string))); 然而,在我用于数据表的string数组的末尾,我需要添加标签名称。 如何在Open XML表单中循环查找标签名称? 这是我的代码到目前为止: using (SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Open(Destination, false)) { WorkbookPart workbookPart = spreadSheetDocument.WorkbookPart; […]

Excel 2003 XML格式 – AutoFitWidth无法正常工作

我有一个程序,以Excel 2003 XML格式吐出Excel工作簿。 它工作正常,有一个问题,我不能自动设置列宽。 我产生的片段: <Table > <Column ss:AutoFitWidth="1" ss:Width="2"/> <Row ss:AutoFitHeight="0" ss:Height="14.55"> <Cell ss:StyleID="s62"><Data ss:Type="String">Database</Data></Cell> 这不会将列设置为自动适应。 我试过没有设置宽度,我尝试了很多东西,我卡住了。 谢谢。

OpenXML SDK:使Excel重新计算公式

我通过Microsoft Office OpenXML SDK 2.0更新Excel电子表格的某些单元格。 更改值使所有单元格包含依赖于更改的单元格无效的公式。 但是,由于caching的值,Excel不会重新计算公式,即使用户单击“立即计算”。 通过SDK使整个工作簿的所有相关单元失效的最佳方法是什么? 到目前为止,我在http://cdonner.com/introduction-to-microsofts-open-xml-format-sdk-20-with-a-focus-on-excel-documents.htm上find了以下代码片段: public static void ClearAllValuesInSheet (SpreadsheetDocument spreadSheet, string sheetName) { WorksheetPart worksheetPart = GetWorksheetPartByName(spreadSheet, sheetName); foreach (Row row in worksheetPart.Worksheet. GetFirstChild().Elements()) { foreach (Cell cell in row.Elements()) { if (cell.CellFormula != null && cell.CellValue != null) { cell.CellValue.Remove(); } } } worksheetPart.Worksheet.Save(); } 除了这个片段不能编译的事实,它有两个限制: 它仅使单张纸无效,但其他纸张可能包含相关公式 它不考虑任何依赖关系。 我正在寻找一种有效的方法(特别是,只使依赖于某个单元格值的单元格无效),并考虑所有表单。 […]