Tag: openxml sdk

OpenXML SDK2.5(Excel):如何确定单元格是否包含数值?

我忙于开发一个从MS Excel(2016)文件导入数据的组件。 该组件使用MS OpenXML SDK2.5库。 MS Excel的最终用户安装基于荷兰国家/地区设置。 该文件包含一个包含财务数据(数字)的列。 这个专栏的位置是事先不知道的。 为了确定一个单元格是否包含数字数据我计算Cell.DataType属性(CellValuestypes,它是一个枚举)。 起初看来,这个属性是完美的候选人来确定这一点。 CellValues可能的值是:Boolean,Number,Error,SharedString,String,InlineString或Date。 所以我期望Cell.DataType设置为CellValues.Number。 经过一些debugging后,我发现当单元格包含数字数据时,Cell.DataType为null。 当在互联网上searchfind解释我find以下MSDN文章: https : //msdn.microsoft.com/en-us/library/office/hh298534.aspx 这篇文章描述了我在debugging过程中所发现的: Celltypes提供了一个DataType属性,用于指示单元格内数据的types。 对于数字和datetypes,DataType属性的值为null。 有谁知道为什么Cell.DataType没有分别与CellValues.Number或CellValues.Date初始化? 确定单元格是否包含数值的最佳方法是什么?

使用OpenXML从Excel文件中读取date

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

打开xml sdk,读取excel公式单元格

我有单元格C4中有公式= SUM(C2:C3)的excel文件。 我分别在单元格C2和C3中有值15和17。 以编程方式,我希望能够执行C4公式并返回值32(公式的结果)。 有人build议我应该使用OpenXml SDK。 因为这个代码将被Windows Azure网站托pipe和使用。 这是我的代码到目前为止,单元格不在C4中执行公式。 string filename = Server.MapPath("/") + "ExcelData.xlsx"; using (SpreadsheetDocument document = SpreadsheetDocument.Open(filename, true)) { document.WorkbookPart.Workbook.CalculationProperties.ForceFullCalculation = true; document.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = true; Sheet sheet = document.WorkbookPart.Workbook.Descendants<Sheet>().SingleOrDefault(s => s.Name == "myRange1"); if (sheet == null) { throw new ArgumentException( String.Format("No sheet named {0} found in spreadsheet {1}", "myRange1", filename), "sheetName"); […]

从Excel单元格读取十进制值(在C#中)

从Excel单元格中读取包含小数的值时,我遇到了以下问题:如果在Excel中的单元格中input9.95,则C#中的CellValue.InnerText将返回“9.9499999999999993” 我怎样才能得到input的实际值,意思是“9.95”,知道试图获得这些值的代码事先并不知道它是小数还是数字。

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>() […]

Excel的最小样式表打开XML的date?

我正在尝试使用Open XML SDK创build一个Excel文件,并使用最less的样式表,这将允许我将单元格格式化为date。 以下是我在样式表中的尝试: <?xml version="1.0" encoding="utf-8"?> <x:styleSheet xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> <x:cellXfs count="1"> <x:xf numFmtId="14" xfId="0" applyNumberFormat="1" /> </x:cellXfs> </x:styleSheet> 即使没有从单元格中引用此样式,Excel也会告诉我我的文件已损坏。 如果我删除cellXfs元素,文件打开罚款。 有人可以解释我还需要添加到这个? 下面是创build样式表的C#代码。 var stylesheet = new Stylesheet(); var cellFormats = new CellFormats() { Count = 1 }; var cellFormat = new CellFormat(); cellFormat.NumberFormatId = 14; cellFormat.FormatId = 0; cellFormat.ApplyNumberFormat = BooleanValue.FromBoolean(true); cellFormats.Append(cellFormat); stylesheet.Append(cellFormats); 我已经尝试添加单元格样式和单元格样式,但只是有上述似乎打破了文件,我不确定为什么。

OpenXML SDK – Excel范围

有了微软的OpenXML SDK,有没有办法使用范围从DataSet插入Excel? 以前,Excel API(Interop Assemblies)会让你这样做。 现在,至less通过尝试和读取样本,我发现的唯一方法是使用循环来创build每一行和单元格。 我已经看到了一些第三方工具,但是我喜欢它。 谢谢。

重新启动使用openxml创build的单词中的子标题编号

我生成Word文档从Excel工作表使用OpenXML提取内容&我已经应用了很多段落的样式。我得到的输出为 标题1 1.1标题2 1.2标题3 标题1 1.3标题 1.4标题 我需要在子标题中重新开始编号 。 我如何在OpenXML中做到这一点? 输出应该像 标题1 1.1标题2 1.2标题3 标题1 2.1标题 2.2标题

打开xml sdk读取数字和date时间/数字值

我正在使用Open XML SDK 2.0来读取excel文件。 该文件包含如下信息。 Number DataFound摘要 10 2012-12-12 abslsoddsdls 20 2012-11-12 sllsdislkdrr 当我使用Open XML SDK从文件中获取数据时,我总是获取单元格的数据types为string(共享string)。我需要获取数据types,因为它在Excel文件中。 看看我的代码如下。 任何想法如何获得单元格的数据types,因为它是在Excel文件中? SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Open(dataStream, false); WorkbookPart workbookPart = spreadSheetDocument.WorkbookPart; IEnumerable<Sheet> sheets = spreadSheetDocument.WorkbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>(); string relationshipId = sheets.First().Id.Value; WorksheetPart worksheetPart = (WorksheetPart)spreadSheetDocument.WorkbookPart.GetPartById(relationshipId); Worksheet workSheet = worksheetPart.Worksheet; SheetData sheetData = workSheet.GetFirstChild<SheetData>(); IEnumerable<Row> rows = sheetData.Descendants<Row>(); foreach (Cell cell in […]

打开XML SDK – dynamic创build行

我需要使用XML SDK来创build一个Excel文件。 我以前用XML SDK做过,但不知道如何根据数据dynamic创build行。 因此,我有静态的页眉和页脚。 对于正文,不知道如何dynamic添加行。 有没有人有一个链接,我可以进一步了解这个或一些示例代码。 顺便说一句,我用这个与C#。 先谢谢你。