程式開發完畢本機測試沒有問題,將Web發佈到IIS上,
發生錯誤:Microsoft.ACE.OLEDB.12.0' 提供者並未登錄於本機電腦上。
因為Server上沒有安裝Access Database Engine 2010 的驅動程式。
直接下載安裝的 AccessDatabaseEngine.exe
因使用者可能會呼叫的環境是(Win 7 X64),所以要一併將 64位元的版本裝上去.....
因此需下載AccessDatabaseEngine_X64.exe 執行安裝。
若需將 64 位元與 32 位元版本的並存,
將AccessDatabaseEngine_X64.exe放置C:\
安裝在同一作業系統上需在命令列提示列(cmd)中,並執行
cd c:\
AccessDatabaseEngine_X64.exe /passive
結果我安裝完後還是發生 Microsoft.ACE.OLEDB.12.0' 提供者並未登錄於本機電腦上。
因此又繼續加裝了2007 Office system 驅動程式:資料連線元件
Server上即可讀取Excel並用linqToExcel轉成C#物件。
var fullFileName = System.IO.Path.Combine(@"C:\", "Book.xlsx"); //取得檔案
var products = default(IEnumerable<Products>);//範例(回傳類型)
try
{
var excel = new LinqToExcel.ExcelQueryFactory(fullFileName);//取得EXCEL及其中資料
products = (from x in excel.Worksheet<Products>("工作表名稱。ex:Sheet1")
select x).AsEnumerable();
}
catch (Exception ex)
{
throw Exception($"{ex.Message}");
}
return products;
而後,突然出現異常狀況,偵錯後發現 LinqToExcel元件出現異常(Exception:外部元件傳回例外狀況)
只要將網站執行的Application Pool開啟32位元相容,位置:
IIS->應用程式集區->選擇網站執行的Pool->進階設定
Enable 32-Bit Application(啟用32位元應用程式) 設定成 True即可!