Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取excel文件时出错_C#_Excel - Fatal编程技术网

C# 读取excel文件时出错

C# 读取excel文件时出错,c#,excel,C#,Excel,我使用下面的代码从excel文件中获取数据。在打开连接时,我发现以下错误。有人能告诉我如何解决这个问题吗 请求“System.Data.OleDb.OleDbPermission,System.Data,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a561934e089”类型的权限失败。 注意:ExcelFilePath是存储在本地驱动器中的excel文件的路径 String connectionString = String.Format

我使用下面的代码从excel文件中获取数据。在打开连接时,我发现以下错误。有人能告诉我如何解决这个问题吗

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

注意: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.

            }

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

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

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

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

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

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

试试这个

遇到的异常表明,相对于.Net framework代码访问安全性(CAS)策略,包含您注册的存储过程的C#程序集没有足够的权限创建OleDbConnection对象。这可能意味着您的程序集已注册为PERMISSION_SET=SAFE,如果CREATE assembly DDL语句中未指定PERMISSION_SET,这也是默认设置

要解决此问题,您可以使用权限\u SET=EXTERNAL\u访问权重新注册程序集,以获得对ADO.Net类(包括OleDbConnection)的访问权。如果您使用的是Visual Studio,则必须在C#数据库项目的“属性”页面中从“安全访问”更改为“外部访问”


有关更多详细信息,请检查

实际上这是一个sharepoint web应用程序项目。您能否给出错误的完整描述(Stacktrace)?@Dany,Stacktrace:at System.Security.CodeAccessSecurityEngine.Check(Object demand,StackScrawMark&stackMark,Boolean isPermSet)at System.Security.PermissionSet.demand()位于System.Data.OleDb.OleDb.OleDb连接.PermissionDemand()的System.Data.Common.DbConnectionOptions.DemandPermission()的System.Data.OleDb.OleDb连接工厂.PermissionDemand(DbConnection outerConnection)的System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)位于System.Data.OleDb.OleDbConnection.Open()处,连接字符串为“Provider=Microsoft.ACE.OleDb.12.0;Data Source=server/ExcelFiles/Book1.xlsx;Extended Properties=“Excel 8.0;HDR=YES;IMEX=1;"您的问题是否得到解决?我编辑了我的答案。请检查。我必须在哪里给予完全信任?我的项目没有web.config文件。恐怕您需要对此具有某种共享点管理权限。本文可能会向您提供一些详细信息。嗨..thasnks我在应用程序中使用了.net framework 3.5。在文件夹%windir%\Microsoft.NET\Framework64\{version}\其中版本为v3.5,我可以找到配置文件和任何配置文件。有什么想法吗?实际上有配置文件夹,该文件夹包含配置文件。但是,您使用的是32位还是64位系统?该文件夹(框架)是空的还是包含其他文件夹?路径是空的“C:\Windows\Microsoft.NET\Framework64\v3.5”但我在这里面找不到任何配置文件。您能告诉我配置文件的确切名称吗?配置文件的名称是“Web.config”。可能存在这样的情况,即您正在使用framework 3.5,但您的计算机包含framework 4.0。因此配置文件夹将位于以下位置”C:\Windows\Microsoft.NET\Framework64\v4.0。“