我正在尝试设置单元格的数据类型,但似乎用EPPlus无法做到.
如果我将一个数字作为值放在单元格中,我会在导出的Excel文件中获得常规数据类型.
如果设置了Cells的NumberFormat,例如:
workSheet.Cells[range].Style.Numberformat.Format = "mm/dd/yyyy hh:mm:ss";
Run Code Online (Sandbox Code Playgroud)
然后我仍然不会得到日期或时间.导出的Excel文件将单元格显示为自定义数据类型.
我只能获得常规或自定义数据类型.我想将Cell的数据类型设置为Time,但我不能.问题是,如果没有设置数据类型,那么由于某种原因,其他工作表中的数据透视表是将数字排序为字符串:(
那么,有什么方法可以设置单元格的数据类型吗?
Ern*_*e S 10
使用excel的数字格式有点奇怪.基本上,它是一个预定义字符串列表,因此它逐个单元格进行匹配.要查看EPPlus中的列表,请查看源代码中的ExcelNumberFormat.cs类.
但是如果您只需要让Excel在"HOME"功能区的"数字 - >数字格式"下拉列表中"看到"单元格作为某种类型,那么这应该是您:
[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();
}
}
Run Code Online (Sandbox Code Playgroud)
以下是EPPlus/EPPlus/Style/ExcelNumberFormat.cs (位于此处)中列出的49种格式 :
"General"
"0"
"0.00"
"#,##0"
"#,##0.00"
"0%"
"0.00%"
"0.00E+00"
"# ?/?"
"# ??/??"
"mm-dd-yy"
"d-mmm-yy"
"d-mmm"
"mmm-yy"
"h:mm AM/PM"
"h:mm:ss AM/PM"
"h:mm"
"h:mm:ss"
"m/d/yy h:mm"
"#,##0 ;(#,##0)"
"#,##0 ;[Red](#,##0)"
"#,##0.00;(#,##0.00)"
"#,##0.00;[Red](#,#)"
"mm:ss"
"[h]:mm:ss"
"mmss.0"
"##0.0"
"@"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11857 次 |
| 最近记录: |