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, и он все еще дал мне это.
1 ответ
Модифицировал ваш код. добавлен 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();
Я видел эту ошибку раньше, и она может не иметь ничего общего с вашим кодом. Приведенный ниже код работает нормально, но если вы получаете источник, который заблокировал файл, убедитесь, что вы щелкнули файл правой кнопкой мыши, перейдите в свойства и установите флажок разблокировать. Это может быть, если вы загружаете файл из какого-либо источника и т. Д. Хороший тест - просто открыть экспортированный файл 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];
}
}