我使用以下代码将日期时间添加到电子表格中的列:
var dt = DateTime.Now;
r.AppendChild<Cell>(new Cell()
{
CellValue = new CellValue(dt.ToOADate().ToString()),
DataType = new EnumValue<CellValues>(CellValues.Date),
StyleIndex = 1,
CellReference = header[6] + index
});
Run Code Online (Sandbox Code Playgroud)
当我尝试在Excel 2010中打开该文件时,我收到错误
var dt = DateTime.Now;
r.AppendChild<Cell>(new Cell()
{
CellValue = new CellValue(dt.ToOADate().ToString()),
DataType = new EnumValue<CellValues>(CellValues.Date),
StyleIndex = 1,
CellReference = header[6] + index
});
Run Code Online (Sandbox Code Playgroud)
如果我注释掉这一行,一切都很好.
我在StackOverFlow上提到了simiiar问题,但它们基本上和我一样有相同的代码
所以!:)简单的问题 - 它可能被问到,但我找不到它.我正在使用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;
Run Code Online (Sandbox Code Playgroud)
不幸的是,在一个全新的XLSX中,这拉动了"Sheet3"而不是"Sheet1".我提前不知道工作表名称,也不能强制用户只提交一张工作簿或指定工作表名称.我目前的要求是抓住第一张纸.
有人可以帮忙吗?:)
编辑:我想通了!但我无法回答7个小时的问题,所以......
我通过挖掘其他SO问题的答案找到了这个:
Open XML SDK 2.0 - 如何更新电子表格中的单元格?
从本质上讲,一个工作的例子可能是这样的:
(wbPart.GetPartById(wbPart.Workbook.Sheets.Elements<Sheet>().First().Id.Value) as WorksheetPart).Worksheet.SheetDimension.Reference.Value
Run Code Online (Sandbox Code Playgroud) 我有一个使用OpenXML SDK读取和写入Excel(xlsx)单元格的类.该课程基于此处最多投票的答案:Open XML SDK 2.0 - 如何更新电子表格中的单元格?
我需要更新一个单元格,然后获取另一个单元格的值,其中包含一个计算公式.更新工作正常,但是当我在更新后读取公式单元格时,我得到旧值,在编辑之前存在于doc中.但是,当我在运行程序后手动打开我的xlsx时,我可以看到正确的值.
所以看起来像单元格的旧值被缓存在某个地方......这很奇怪,因为我每次在读/写单元格之前打开/关闭我的文档.
编辑:文森特的回答让我更新了我的示例代码.我添加了一个Refresh方法,可以在后台运行的Excel应用程序中打开,保存和关闭文档.这会重新计算我的公式.有关更多详细信息和C#代码示例,请参阅:http://fczaja.blogspot.com/2013/05/how-to-read-and-write-excel-cells-with.html