gpt4 book ai didi

excel - EPPlus : date column returning int rather than the actual displayed text value

转载 作者:行者123 更新时间:2023-12-04 20:06:36 40 4
gpt4 key购买 nike

我正在使用 EPPlus 读取 excel 数据。我需要在网格中按原样向用户显示 excel 单元格。

在阅读日期列 EPPlus 时给出 OAD日期 日期的 int 值。

有没有办法可以将值读取为字符串,用户通常在打开 excel 时会看到该字符串。即应用excel格式后的值。

CELL 类上似乎没有任何函数提供 valueAsString 或 valueAsDisplayed 等...

最佳答案

如果日期以 double 形式存储在 excel 中(如果没有时间组件,则为整数)并应用格式,这将是“正确”的方式,您已经在代码中重新创建日期并重新应用在 Excel 中应用的日期格式。唯一的问题是 excel 的格式与 .net 略有不同,尤其是在区分大小写方面,因此您应该在其中检查以确保 MMM 不是 mmm(这将使您在 .net 中花费几分钟)。所以像这样的工作:

[TestMethod]
public void OADate_Test()
{
//http://stackoverflow.com/questions/28046069/epplus-date-column-returning-int-rather-than-the-actual-displayed-text-value
var existingFile = new FileInfo(@"c:\temp\temp.xlsx");
if (existingFile.Exists)
existingFile.Delete();


using (var package = new ExcelPackage(existingFile))
{
//.NET is case sensive so MMM must be capital but Excel might not be
const string FORMATDATE = "dd-MMM-yyyy";
var mydate = new DateTime(2015, 1, 1);
var datedouble = mydate.ToOADate();

var worksheet = package.Workbook.Worksheets.Add("Newsheet");

worksheet.Cells["A1"].Value = "As Date";

worksheet.Cells["A2"].Value = datedouble;
worksheet.Cells["A2"].Style.Numberformat.Format = FORMATDATE;

package.Save();
}

using (var package = new ExcelPackage(existingFile))
{
var worksheet = package.Workbook.Worksheets["Newsheet"];

worksheet.Cells["B1"].Value = "As String";

var datedouble = (double) worksheet.Cells["A2"].Value;
worksheet.Cells["B2"].Value = DateTime.FromOADate(datedouble).ToString(worksheet.Cells["A2"].Style.Numberformat.Format);

package.Save();

}
}

关于excel - EPPlus : date column returning int rather than the actual displayed text value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28046069/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com