读取excel文件时出错

时间:2012-11-02 11:54:56

标签: c# excel

我使用以下代码从excel文件中获取数据。打开连接时,我收到以下错误。任何人都可以告诉我如何解决这个问题?

请求类型'System.Data.OleDb.OleDbPermission,System.Data,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。

注意:ExcelFilePath是存储在本地驱动器中的excel文件的路径。

String connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""", ExcelFilePath);

 DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");

            DbConnection connection = factory.CreateConnection();

            connection.ConnectionString = connectionString;

            connection.Open(); // GIVES ERROR 

            DataTable tbl = connection.GetSchema("Tables");

            connection.Close();

            foreach (DataRow row in tbl.Rows)
            {
                //get sheets.

            }

2 个答案:

答案 0 :(得分:2)

此错误通常由代码访问安全性引起。尝试以完全信任模式运行您的应用程序。

<trust level="Full" originUrl="" />

答案 1 :(得分:0)

如果您使用的是32位系统,则配置文件位于

位置

%windir%\Microsoft.NET\Framework\{version}\CONFIG

如果您使用的是64位系统,则配置文件位于

位置

%windir%\Microsoft.NET\Framework64\{version}\CONFIG

试试这个。

您遇到的异常表示,与.Net框架代码访问安全性(CAS)策略相关,包含您注册的存储过程的C#程序集没有足够的权限来创建OleDbConnection对象。这可能意味着您的程序集已使用PERMISSION_SET = SAFE注册,如果在CREATE ASSEMBLY DDL语句中未指定PERMISSION_SET,这也是默认值。

要解决此问题,您可以使用PERMISSION_SET = EXTERNAL_ACCESS重新注册程序集,以获取对ADO.Net类(包括OleDbConnection)的访问权限。如果您使用的是Visual Studio,则必须在C#数据库项目的属性页中将此更改从SAFE更改为EXTERNAL_ACCESS。

更多详细信息请查看http://msdn.microsoft.com/en-us/library/0x4t63kb.aspx