读取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