gpt4 book ai didi

c# - NPOI - 如何区分日期时间格式的数字 Excel 单元格 (c#)

转载 作者:太空狗 更新时间:2023-10-30 00:10:00 26 4
gpt4 key购买 nike

背景

我有一个 Excel 文件 (xlxs),其中包含一些日期时间和小数,我想将其转换为二维字符串数组。数组中的字符串应该与用户在 excel 中输入的字符串完全一样。为此,我将 NPOI 2.2.1 版与 C# 一起使用。

请注意,示例中的 A 列在 Excel 中被格式化为日期!

COLUMN A     COLUMN B
2016-07-20 -46,95
2016-07-20 283,59
2016-07-20 -46,95
2016-07-20 52194,64

我有一个通用方法 ConvertCellToString() 可以将单元格转换为正确的字符串表示形式:

    private string GetCellAsString(ICell cell)
{
switch (cell.CellType)
{
case CellType.Boolean:
return cell.BooleanCellValue.ToString();
case CellType.Error:
return cell.ErrorCellValue.ToString();
case CellType.Formula:
return cell.CellFormula.ToString();
//ALL CELLS IN THE EXEMPEL ARE NUMERIC AND GOES HERE
case CellType.Numeric:
return cell.NumericCellValue.ToString();
case CellType.String:
return cell.StringCellValue.ToString();
case CellType.Blank:
case CellType.Unknown:
default:
return "";
}
}

但是,由于即使日期时间单元格也是数字单元格,此解决方案导致以下所有日期都被错误地表示为数字而不是日期(“21672”而不是“2016-07-20”等)

下面的方法需要区分带有日期时间的数字单元格和带有数字的单元格。有什么办法可以用 NPOI 做到这一点吗?我宁愿不求助于解析字符串,尤其是因为 NPIOs cell.ToString() 如果它是日期,则返回可怕的“2016-jan-20”格式。

我几乎被困在这里,所以非常感谢帮助!一定有一些我找不到的明显最佳实践!

最佳答案

事实证明 DateUtil.IsCellDateFormatted() 可以这样使用:

            case CellType.Numeric:
{
return DateUtil.IsCellDateFormatted(cell)
? cell.DateCellValue.ToString()
: cell.NumericCellValue.ToString();
}

关于c# - NPOI - 如何区分日期时间格式的数字 Excel 单元格 (c#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38872497/

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