VS 2015: получение исключения: «System.Data.OleDb.OleDbException» в System.Data.dll при попытке подключения к Excel

Хорошо, вот мой код:

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 Утилиты.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\Studio.Visual.Visual 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». 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.OleDb.OleDbException" в System.Data.dll

Я использую Visual Studio 2015. Файл встроен в Excel 2010. И Office, и VS 2015 являются версиями x64 на ноутбуке x64. Есть идеи, что здесь может происходить?


person Michael P.    schedule 07.01.2016    source источник
comment
переместите код на нажатие кнопки, и вы можете получить другое/лучшее исключение   -  person Ňɏssa Pøngjǣrdenlarp    schedule 08.01.2016
comment
Как вы ожидаете, что это сработает, если вы никогда не открываете соединение?   -  person Camilo Terevinto    schedule 08.01.2016
comment
@cFrozenDeath на самом деле метод .Fill вызывает открытое за кулисами   -  person MethodMan    schedule 08.01.2016
comment
@MethodMan Я смотрю на ReferenceSource и нигде не могу его найти, не могли бы указать мне на вызов? referencesource.microsoft.com/#System.Data/ Система/Данные/OleDb/   -  person Camilo Terevinto    schedule 08.01.2016
comment
Мне любопытно посмотреть, что произойдет, когда OP добавит cn.Open() в свой код, и мне интересно, правильно ли sheet name, а есть способ сделать то же самое, просто открыв файл excel и не выбирая имя листа, которое я только что протестировал один я хотел бы копию этого файла excel для проверки   -  person MethodMan    schedule 08.01.2016
comment
Я добавил cn.Open() в код после строки OleDbConnection и получил те же результаты.   -  person Michael P.    schedule 08.01.2016
comment
Я только что попробовал это с помощью кнопки, и на этот раз я получил сообщение об ошибке всплывающего окна. Выделенная строка является da.Fill, и ошибка читается: Необработанное исключение типа «System.Data.OleDb.OleDbException» произошло в System.Data.dll. Дополнительная информация: «marks$» не является допустимым название. Убедитесь, что оно не содержит недопустимых символов или знаков препинания и не слишком длинное.   -  person Michael P.    schedule 08.01.2016


Ответы (1)


Я понял. Смотрите мой последний комментарий для решения. Я нашел ошибку, добавив код к кнопке вместо загрузки формы. Это показало, что имя моего листа было неправильным в файле Excel. Обновил и все заработало. Спасибо за всю помощь, ребята!

person Michael P.    schedule 08.01.2016