OleDbException не было обработано; Превышен системный ресурс

public void LoadExcel_Click(object sender, EventArgs e)
{
    OpenFileDialog fileDLG = new OpenFileDialog();
    fileDLG.Title = "Open Excel File";
    fileDLG.Filter = "Excel Files|*.xls;*.xlsx";
    fileDLG.InitialDirectory = @"C:\Users\...\Desktop\";

    if (fileDLG.ShowDialog() == DialogResult.OK)
    {
        string filename = System.IO.Path.GetFileName(fileDLG.FileName);
        string path = System.IO.Path.GetDirectoryName(fileDLG.FileName);
        excelLocationTB.Text = @path + "\\" + filename;
        string ExcelFile = @excelLocationTB.Text;
        if (!File.Exists(ExcelFile))
            MessageBox.Show(String.Format("File {0} does not Exist", ExcelFile));

        OleDbConnection theConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelFile + ";Extended Properties=Excel 12.0;");
        theConnection.Open();
        OleDbDataAdapter theDataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", theConnection);
        DataSet DS = new DataSet();
        theDataAdapter.Fill(DS, "ExcelInfo");
        dataGridView1.DataSource = DS.Tables["ExcelInfo"];
        formatDataGrid();
        MessageBox.Show("Excel File Loaded");
        toolStripProgressBar1.Value += 0;
    }
}

Итак, я получил этот код от Microsoft.

theDataAdapter.Fill(DS, "ExcelInfo");

Это строка, которая дала мне ошибку.

В основном этот код должен использовать диалоговое окно для открытия файла и отображения его в форме. Всякий раз, когда я открывал файл Excel, он выдавал мне эту ошибку. Я даже пытался создать пустой файл Excel, и он все равно дал мне это.


person puretppc    schedule 14.01.2014    source источник
comment
Столкнулся с похожей проблемой, хочу поделиться наблюдением. Когда я открываю файл Excel, нажмите «Включить редактирование» и снова нажмите «Сохранить». Тот же файл читается без ошибки.   -  person Mr.Hunt    schedule 11.03.2014


Ответы (2)


Изменил ваш код. добавлен OleDbCommand для выбора запроса. просто попробуй.

OleDbConnection theConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Projects\Demo\Demo.xls;Extended Properties=Excel 8.0;");
        theConnection.Open();
        OleDbCommand theCmd = new OleDbCommand("SELECT * FROM [Sheet1$]", theConnection);
        OleDbDataAdapter theDataAdapter = new OleDbDataAdapter(theCmd);
        DataSet DS = new DataSet();
        theDataAdapter.Fill(DS);
        theConnection.Close();
person Biby Augustine    schedule 14.01.2014
comment
ты проверял соединение? он правильно настроен? - person Biby Augustine; 14.01.2014
comment
Как вы проверяете связь? - person puretppc; 14.01.2014
comment
я обновил строку подключения в приведенном выше коде. Пожалуйста, проверьте эту строку подключения... :) - person Biby Augustine; 14.01.2014
comment
theDataAdapter.Fill(DS, "ExcelInfo"); все еще выдает эту ошибку. Я только что скопировал этот отредактированный код :( - person puretppc; 14.01.2014
comment
привет... я использовал Microsoft.Jet.OLEDB.4.0 в качестве провайдера и расширенные свойства = Excel 8.0, он отлично работает для меня... просто попробуйте еще раз, используя новую строку подключения, пожалуйста..... :) - person Biby Augustine; 14.01.2014
comment
Ну, я не знаю, почему это не работает для меня. Он сказал, что Excel не существует в текущем контексте. Я полагаю, вы имеете в виду Excel (с кавычками), поэтому я изменил его. Затем я снова запустил его, но он не работает. У меня версия VS 2012. Завтра попробую на другом компе. - person puretppc; 14.01.2014
comment
я добавил свой excel в корневой каталог моего проекта и предоставил строку подключения, подобную этой... Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Projects\Demo\Demo.xls;Extended Properties=Excel 8.0; просто попробуйте предоставить источник данных вручную, как указано выше......, и я также изменил код для простого импорта данных Excel в набор данных..... :) - person Biby Augustine; 14.01.2014
comment
Ооо, это все еще дает мне ту же ошибку. Я даже проверил это на другой машине. О, хорошо, я дам вам голос за попытку. - person puretppc; 15.01.2014

Я видел эту ошибку раньше, и она может не иметь никакого отношения к вашему коду. Приведенный ниже код работает нормально, но если вы получаете источник, который заблокировал файл, убедитесь, что вы щелкнули файл правой кнопкой мыши, перейдите в свойства и установите флажок разблокировать. Это может быть, если вы загружаете файл из какого-либо источника и т. д. Хороший тест — просто открыть экспортированный файл Excel, сохранить его и повторить попытку. Или скопируйте содержимое в новый файл Excel.

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

string excelconString = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1""", filePath);
string excelQuery = "select col1 from [Sheet1$]";

DataSet ds = new DataSet();
DataTable dt = new DataTable();

using (var excelConn = new OleDbConnection(excelconString))
{
    excelConn.Open();
    using (var oda = new OleDbDataAdapter(excelQuery, excelConn))
    {
        oda.Fill(ds);
        dt = ds.Tables[0];
    }
}
person maguy    schedule 10.10.2019