-1

我正在使用http://exceldatareader.codeplex.com/。我有一个带有日期列的 Excel 文件,即 D/M/Y。我正在尝试使用以下代码读取此文件:

FileStream stream = File.Open(FilePath, FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = null;
lock (LockToReadExcelFile)
{
       if (FilePath.EndsWith(".xls", true, System.Globalization.CultureInfo.InvariantCulture))
       {
           excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
       }
       else if (FilePath.EndsWith(".xlsx", true, System.Globalization.CultureInfo.InvariantCulture))
       {
           excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
       }
       else
       {
           return;
       }
}

然后将其添加到 DataSet 中,如下所示:

excelReader.IsFirstRowAsColumnNames = false;
DataSet excelDataTable = excelReader.AsDataSet();

它返回{System.DateTime}对象中的行。我希望他们以System.String格式解析日期数据。(例如 Date 7/11/2015 返回为7/11/2015 12:00:00 AM {System.DateTime}。)

PS:我也尝试过excelReader.AsDataSet(false);,但效果相同。

4

2 回答 2

0
于 2017-01-27T16:47:44.220 回答
0

如果您正确使用 excel,它会将数字保留为 System.Double,将日期保留为 System.DateTime,将文本保留为 System.String(至少,正如您从 .net 中看到的那样)。当然,Excel 用户可以将单元格的格式,包含数字或日期设置为字符串,但这不正常。因此,读取 Excel 文件时,您的数字为 double,日期为 DateTime,依此类推。很有用。您可以将其转换为您想要的任何内容,字符串是最简单的。是您需要的功能的文档页面。要转换为您提到的格式,请使用

dataTimeValue.ToString("G");
于 2015-12-21T16:03:31.400 回答