读取excel文件时出错

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

请求“System.Data.OleDb.OleDbPermission,System.Data,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”types的权限失败。

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

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. } 

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

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

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

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

如果你正在使用64位系统,那么configuration文件在位置

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

尝试这个。

您遇到的exception表示包含您注册的存储过程的C#程序集相对于.Net框架代码访问安全性(CAS)策略,没有足够的权限来创buildOleDbConnection对象。 这可能意味着您的程序集已注册了WITH 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/zh-CN/library/0x4t63kb.aspx