asp.net採用OLEDB方式導入Excel數據時提示:未在本地計算機上註冊"Microsoft.Jet.OLEDB.4.0" 提供程序"

 筆者在項目中作作了一個從Excel表格中導入數據的模塊、大致上asp.net項目中導入Excel大致分紅三類:數據庫

1)採用c#內置方案System.Data.OleDb(限制較小, 通用)c#

2)採用Excel的COM組件(會有版本問題)asp.net

3)採用僞Excel文件、即便用文本流的方式根據需求本身定義數據格式。同時在服務端進行反格式化ide

筆者採用的是方案1、相關聯開發環境以下:ui

Windows 7(x64)spa

Visual Studio 2010.net

方案中使用的代碼:code

 

複製代碼
public sealed class ExcelHelper
{ private const string CONNECTION_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;"; public static DataSet ExcelDataSource(string filePath, string sheetName) { OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetName + "$]", string.Format(CONNECTION_STRING,filePath)); DataSet ds = new DataSet(); oada.Fill(ds); return ds; } public static List<string> ExcelSheetName(string filePath) { List<string> list = new List<string>(); OleDbConnection conn = new OleDbConnection(string.Format(CONNECTION_STRING, filePath)); conn.Open(); DataTable sheetNames = conn.GetOleDbSchemaTable (System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); conn.Close(); foreach (DataRow dr in sheetNames.Rows) { list.Add((string)dr[2]); } return list; }
複製代碼

程序在執行時會拋出:orm

異常詳細信息: System.InvalidOperationException: 未在本地計算機上註冊「Microsoft.Jet.OLEDB.4.0」提供程序。blog

分析緣由:

用於 Access 和 Excel 數據庫的 Microsoft OLE DB Provider for Jet 在 64 位版本中不可用。

最終解決辦法:

在IIS中啓用32位應該程序、設置見圖。

相關文章
相關標籤/搜索