asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册Microsoft.Jet.OLEDB.4.0 提供程序...

笔者在项目中做做了一个从Excel表格中导入数据的模块、大体上asp.net项目中导入Excel大体分成三类:

1)采用c#内置方案System.Data.OleDb(限制较小, 通用)

2)采用Excel的COM组件(会有版本问题)

3)采用伪Excel文件、即使用文本流的方式根据需求自己定义数据格式。同时在服务端进行反格式化

笔者采用的是方案一、相关联开发环境如下:

Windows 7(x64)

Visual Studio 2010

方案中使用的代码:

 

 

 

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;

}

 

 

程序在执行时会抛出:

异常详细信息: System.InvalidOperationException: 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。

分析原因:

用于 Access 和 Excel 数据库的 Microsoft OLE DB Provider for Jet 在 64 位版本中不可用。

最终解决办法:

IIS中启用32位应该程序、设置见图。

转载于:https://www.cnblogs.com/zrprj/p/6825549.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值