c# 处理Excel时间格式问题
很多初学者一开始处理Excel表格的时候,如果遇到处理时间或多或少都会遇到一些坑。
用这种方式处理,就不会出现问题,如下所示:
/// <summary>
/// Excel读取为DataTable
/// </summary>
/// <param name="strExcelFileName"></param>
/// <param name="TableName"></param>
/// <returns></returns>
public static System.Data.DataTable ExcelToDataTable(string strExcelFileName, string TableName = null)
{
//源的定义
String strConn = "";
FileInfo file = new FileInfo(strExcelFileName);
switch (file.Extension)
{
case ".xls":
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strExcelFileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
break;
case ".xlsx":
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strExcelFileName + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'";
break;
default:
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strExcelFileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
break;
}
//连接数据源
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable NamesTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
//Sql语句
//string strExcel = string.Format("select * from [{0}$]", strSheetName); 这是一种方法
string sql = "SELECT * FROM [" + NamesTable.Rows[0][2] + "]";
if (!string.IsNullOrEmpty(TableName))
{
sql = "SELECT * FROM [" + TableName + "$" + "]";
}
OleDbDataAdapter adp = new OleDbDataAdapter(sql, strConn);
DataSet myDataSet = new DataSet();
adp.Fill(myDataSet);
DataTable NowDT = myDataSet.Tables[0];
return NowDT;
}