0
我有一個奇怪的問題,
當我嘗試打開並加載Excel數據到DataTable,
在Excel工作表中加載一些數據,但有些數據不加載,
是什麼問題,
你能幫助我嗎?
我加了GetExcelData函數,
請看這段代碼,
請告訴我是什麼問題。的Excel在C#中的DataTable錯誤
GROUP CLASS TYPE C1 C2 C3 C4 C4 C5
M1 10 A D B D A A D
M1 10 B C D E E D D
M2 11 A D D D D D E
M2 11 B C D E D E A
上面我放置了樣本表。
它只複製GROUP,CLASS和TYPE列中的數據。
但奇怪的是,在一些Excel文件中,這個錯誤不會發生,
,我沒有找到答案,決定在這裏問它。
public DataTable GetExcelData(string fileName, string sheetName)
{
string sql = "";
OleDbConnection conn = new OleDbConnection();
OleDbCommand command;
OleDbDataAdapter adapter = new OleDbDataAdapter();
DataTable dt = new DataTable();
command = conn.CreateCommand();
string excel_file = fileName;
string excel_type = System.IO.Path.GetExtension(excel_file);
string connstr = "";
if(excel_type=="XLSX")
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0";
else
connstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +fileName + ";Extended Properties='Excel 12.0;IMEX=1; HDR=YES'";
conn.ConnectionString = connstr;
sql = "SELECT * FROM [" + sheetName + "$]";
command.CommandText = sql;
adapter.SelectCommand = command;
adapter.Fill(dt);
return dt;
}
請添加更多的信息在什麼數據加載,什麼沒有,我們還需要知道的Excel工作表中的內容,至少在數據類型 – ntziolis 2012-03-17 13:08:48
不會吧需要交換兩個連接字符串?你正在使用Excel 8.0的.xlsx文件,我相信這應該是其他方法。 – xxbbcc 2012-03-17 13:10:36
@xxbbcc:起初我以爲同樣的事情,但代碼將工作,因爲對'GetExtension()'的調用將返回「.xlsx」而不是「XLSX」,這意味着將無意中選擇正確的連接字符串。所以它的工作原理是錯誤的。 – 2012-05-08 00:10:05