我正在尝试设置单元格的数据类型,但是用EPPlus似乎是不可能的。
如果将数字作为值存储在单元格中,则会在导出的Excel文件中获得“常规”数据类型。
如果设置单元格的NumberFormat,例如:
workSheet.Cells[range].Style.Numberformat.Format = "mm/dd/yyyy hh:mm:ss";
那么我仍然不会得到日期或时间。导出的Excel文件将显示单元格为“自定义”数据类型。
我只能获取常规或自定义数据类型。我想将Cells的数据类型设置为Time,但是不能。问题是,如果未设置数据类型,则由于某种原因,其他工作表中的数据透视表会将数字排序为字符串:(
那么,有什么办法可以设置单元格的数据类型吗?
数字格式与excel有点怪异。基本上,它是预定义字符串的列表,因此它逐个单元进行匹配。要查看该列表在EPPlus中的外观,请查看源代码中的ExcelNumberFormat.cs类。
但是,如果您只需要让Excel在HOME功能区的Number-> Number Format下拉列表中以某种类型“查看”该单元格,那么应该可以:
[TestMethod]
public void Date_Format_Test()
{
//http://stackoverflow.com/questions/29473920/how-to-set-cell-data-type
var existingFile = new FileInfo(@"c:\temp\temp.xlsx");
if (existingFile.Exists)
existingFile.Delete();
using (var pck = new ExcelPackage(existingFile))
{
var ws = pck.Workbook.Worksheets.Add("Content");
var date = DateTime.Now;
//Raw date value as number
ws.Cells["A1"].Value = date;
//As "Short Date"
ws.Cells["A2"].Value = date;
ws.Cells["A2"].Style.Numberformat.Format = "mm-dd-yy";
//As "Time"
ws.Cells["A3"].Value = date;
ws.Cells["A3"].Style.Numberformat.Format = "[$-F400]h:mm:ss\\ AM/PM";
pck.Save();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句