我正在使用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
格式解析日期数据。(例如,日期7/11/2015返回为7/11/2015 12:00:00 AM {System.DateTime}
。)
PS:我也试过了excelReader.AsDataSet(false);
,但结果相同。
答案 0 :(得分:0)
如果你正确使用excel,它会将数字保存为System.Double,将日期保存为System.DateTime,将文本保存为System.String(至少,您可以从.net中看到它)。当然,Excel用户可以将单元格的格式,包含数字或日期设置为字符串,但这不正常。因此,读取Excel文件时,您的数字为double,日期为DateTime,依此类推。很有用。你可以把它转换成你想要的任何东西,字符串是最简单的。 Here是您需要的功能的文档页面。要转换为您提到的格式,请使用
dataTimeValue.ToString("G");
答案 1 :(得分:0)
首先......如何阅读Excel文件.. 请参阅:https://gist.github.com/Munawwar/924413
其次,此lib将Datetime fiels读为Double值。如果你想读作DateTime,你需要做一些演员表,如下所示:
double d = double.Parse(field_from_excel_datatable); DateTime conv = DateTime.FromOADate(d);
Obs:您可以在此处详细了解上述代码:Reading Datetime value From Excel sheet
祝你好运!