2
我有兩個彼此不相關的程序,但他們有一個相同的方法,他們試圖從excel文件中讀取行。兩個程序試圖讀取excel一個成功一個失敗,代碼相同
計劃1
public DataTable GetExcelInfo(string filepath)
{
DataTable datatab = new DataTable();
try
{
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=1;ImportMixedTypes=Text\\";
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT Format([F1], \"#\"), Format([F2], \"#\"), Format([F3], \"#\") FROM [Sheet1$]", conn);
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
string[] values = new string[3];
values[0] = reader.GetString(0);
values[1] = reader.GetString(1);
values[2] = reader.GetString(2);
DataRow dr = datatab.NewRow();
dr.ItemArray = values;
datatab.Rows.InsertAt(dr, i);
i++;
}
}
}
}
計劃2
private static DataTable GetInvoiceItems(string filepath)
{
DataTable dt = new DataTable();
string excelConString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Excel=8.0;IMEX=1;HDR=NO;TypeGuessRows=1;ImportMixedTypes=Text\\";
using (OleDbConnection conn = new OleDbConnection(excelConString))
{
OleDbDataAdapter ada = new OleDbDataAdapter("SELECT [F1], [F2], [F3], [F4], [F5] FROM [Sheet1$]", conn);
conn.Open();
ada.Fill(dt);
}
return dt;
}
現在奇怪的是第一個程序工作在同一PC完美運行,而第二個程序得到一個錯誤,說是沒有安裝ISAM在PC上。有什麼建議麼?
你的bin目錄中是否有任何DLL?可能有一個名稱以Msexcl ##。dll或Mspdbe ##。dll之類的Ms開頭,如果有,而另一個沒有,請嘗試複製它。 – Dispersia