sql="select [F16] as Complete_Date,[F4] as Job,[F6] as INV,sum([F14]) as QTY from [Completion$] where [F4 is not null and isnumeric([F14]) group by [F16],[F4],[F6]";
string fullPath=Tools.GetFilePath("Excel文件|*.xls;*.xlsx",false,initialDirectory); //"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fullPath+"; Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
dt=Tools.GetDataTableFromExcelByFullPathAndSQL(fullPath,sql);
foreach(DataRow r in dt.Rows){
strCplDate=r["Completed_Date"].ToString(); //调试结果是 strCplDate="14-八月"
cplDate=Convert.ToDateTime(r["Completed_Date"]);//调试结果是 cplDate=08/01/2014 00:00:00
}如上结果,原来Excel中的日期是 2013-08-14 转换后却成了 2014-08-01 ,请高手帮忙解决,谢谢。

解决方案 »

  1.   

    strCplDate=r["Completed_Date"].ToString("YYYY-MM-DD"); 
      

  2.   

    你的方法GetDataTableFromExcelByFullPathAndSQL又不清楚里面是怎么处理的。
    还有你的Excel的列格式是如何也不清楚。如果你的列是double型的,或者再试下DateTime.FromOADate(r["Completed_Date"])
      

  3.   

    谢谢楼上回复,调试后提示:“ToString”方法没有采用“1”个参数的重载 (CS1501) 
      

  4.   

    Provider我写出来了,Excel单元格的日期格式是 Category: Date  Type:14-Mar , 试过DateTime.FromOADate(r["Completed_Date"]) 不行。