VS 2015:尝试连接到 Excel 时出现“抛出异常:System.Data.dll 中的‘System.Data.OleDb.OleDbException’”

Posted

技术标签:

【中文标题】VS 2015:尝试连接到 Excel 时出现“抛出异常:System.Data.dll 中的‘System.Data.OleDb.OleDbException’”【英文标题】:VS 2015: Getting "Exception thrown: 'System.Data.OleDb.OleDbException' in System.Data.dll" When Attempting Connect to Excel 【发布时间】:2016-04-12 11:23:22 【问题描述】:

好的,这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace DisplayingDataFromExcelSheets

    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();
        

        private void Form1_Load(object sender, EventArgs e)
        
            string datasource = @"C:\Users\E180728\Documents\FakeGradesTable.xlsx";
            string cs = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + datasource + ";Extended Properties='Excel 12.0;HDR=YES'";
            OleDbConnection cn = new OleDbConnection(cs);
            Console.WriteLine("Connecting to: " + cs);
            OleDbDataAdapter da = new OleDbDataAdapter("select * from [marks$]", cn);
            DataSet ds = new DataSet();
            da.Fill(ds, "marks");
            dataGridView1.DataSource = ds.Tables[0];

        
    

当我尝试运行它时,表单会出现一个空白的 DataGridView,并且输出中会显示以下内容:

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib。 dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio .HostingProcess.Utilities.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0。 0__b77a5c561934e089\System.Windows.Forms.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。 “DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll”。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\ System.Drawing.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\14.0.0.0__b03f5f7f11d50a3a\Microsoft .VisualStudio.HostingProcess.Utilities.Sync.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio .Debugger.Runtime.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\Users\E180728\Documents\Visual Studio 2015\Projects\ADOProject\DisplayingDataFromExcelSheets\bin\Debug\DisplayingDataFromExcelSheets。 vshost.exe'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\ System.Core.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0。 0__b77a5c561934e089\System.Xml.Linq.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0。 0__b77a5c561934e089\System.Data.DataSetExtensions.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\ Microsoft.CSharp.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\ System.Data.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Deployment\v4.0_4.0.0.0__b03f5f7f11d50a3a\ System.Deployment.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Net.Http\v4.0_4.0.0。 0__b03f5f7f11d50a3a\System.Net.Http.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\ System.Xml.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

线程 0x3218 已退出,代码为 0 (0x0)。 线程 0x2b8c 已退出,代码为 0 (0x0)。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\Users\E180728\Documents\Visual Studio 2015\Projects\ADOProject\DisplayingDataFromExcelSheets\bin\Debug\DisplayingDataFromExcelSheets。 EXE文件'。已加载符号。

正在运行的应用程序

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\ System.Configuration.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_32\System.Transactions\v4.0_4.0.0.0__b77a5c561934e089\ System.Transactions.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

连接到:Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:\Users\E180728\Documents\FakeGradesTable.xlsx;扩展属性='Excel 12.0;HDR=YES' 'DisplayingDataFromExcelSheets.vshost.exe' (CLR v4.0.30319: DisplayingDataFromExcelSheets.vshost.exe): 加载'C:\windows\Microsoft.Net\assembly\GAC_32\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices .dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

“DisplayingDataFromExcelSheets.vshost.exe”(CLR v4.0.30319:DisplayingDataFromExcelSheets.vshost.exe):已加载“C:\windows\Microsoft.Net\assembly\GAC_32\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\ System.EnterpriseServices.Wrapper.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

抛出异常:System.Data.dll 中的“System.Data.OleDb.OleDbException”

我正在运行 Visual Studio 2015。该文件内置于 Excel 2010 中。office 和 VS 2015 都是 x64 笔记本电脑上的 x64 版本。有什么想法可能在这里发生吗?

【问题讨论】:

将代码移动到单击按钮,您可能会得到不同/更好的异常 如果您从未真正打开连接,您希望它如何工作? @cFrozenDeath 实际上是.Fill 方法在后台调用了open @MethodMan 我正在查看 ReferenceSource,但在任何地方都找不到,介意指点我来电吗? referencesource.microsoft.com/#System.Data/System/Data/OleDb/… 我很想知道当 OP 在他们的代码中添加 cn.Open() 时会发生什么我也想知道 sheet name 是否正确以及有一种方法可以通过打开来做同样的事情excel 文件,而不是选择我刚刚测试过的工作表名称我想要一份该 excel 文件的副本来测试 【参考方案1】:

我想通了。有关解决方案,请参阅我的最后一条评论。我通过将代码添加到按钮而不是表单加载来发现错误。它表明我的工作表名称在 excel 文件中是错误的。更新了它,它工作得很好。感谢大家的帮助!

【讨论】:

以上是关于VS 2015:尝试连接到 Excel 时出现“抛出异常:System.Data.dll 中的‘System.Data.OleDb.OleDbException’”的主要内容,如果未能解决你的问题,请参考以下文章

VS 2015的Azure远程调试未连接

使用加密连接连接到数据源时出现 Power Query 错误

Sqoop - 尝试连接到 Oracle DB 服务器时出现 java.lang.NullPointerException

尝试从 gitpod IDE(ubuntu 服务器)连接到 MySql 数据库时出现套接字异常

尝试远程连接到 Websphere 上的 JMS 队列时出现 sun/io/MalformedInputException

PayPal IPN 模拟器:尝试连接到 URL 时出现问题。请检查网址并重试