2015-12-21 89 views
-1

我正在使用http://exceldatareader.codeplex.com/。我有一個Excel文件,其中列有日期,即D/M/Y。我想使用此代碼讀取該文件:ExcelDataReader:導入XLSX文件時不解析到{System.DateTime}對象中

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; 
     } 
} 

然後將其添加到數據集如下:

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

它在{System.DateTime}對象返回行。我希望他們能夠在System.String格式解析日期的數據

PS。(如日期2015年7月11日返回爲7/11/2015 12:00:00 AM {System.DateTime}。):我曾嘗試excelReader.AsDataSet(false);很好,但它產生相同的。

+0

你不能_parse_'DateTime'。你可以分析一個字符串。如何使用'DateTime.ToString()'方法呢?或者任何這些類支持的數據格式包含? –

+0

讓我解釋一下。 7/11/2015是excel文件中的字符串。它被解析爲'System.DateTime'。我想把這個字符串解析成一個'string'。無論是約會還是其他。 – Awais

回答

0

如果您正在使用excel,它將數字保留爲System.Double,日期爲System.DateTime,文本爲System.String(至少可以從.net中看到它)。當然,Excel用戶可以將一個單元格的格式,包含數字或日期設置爲一個字符串,但這不正常。因此,閱讀Excel文件,您的數字爲double,DateTime爲DateTime等等。很有用。你可以將它轉換爲任何你想要的,字符串是最簡單的。 Here是您需要的功能的文檔頁面。要轉換到你所提到的格式,請使用

dataTimeValue.ToString("G"); 
0

首先,...如何讀取Excel文件.. 參見:https://gist.github.com/Munawwar/924413

其次,這種LIB讀取日期時間fiels作爲一個Double值。如果你想閱讀DateTime,你需要做一些演員,如下所示:

double d = double.Parse(field_from_excel_datatable); DateTime conv = DateTime.FromOADate(d);

觀測值:你可以閱讀更多關於上面的代碼在這裏:Reading Datetime value From Excel sheet

祝你好運!