Я использую строку подключения oledb для импорта листа excel. Я ссылаюсь на библиотеки объектов 12.0. Я пробовал с excel 2003 и 2007 оба, но получал такое же исключение, что и нижеimport excel sheet in winform
Создание экземпляра COM-компонента с CLSID {00020820-0000-0000-C000-000000000046} из IClassFactory не удалось из-за следующей ошибки: 80010001 .
мой код
txtpath.Text = fdlg.FileName;
Excel.Worksheet worksheet = new Excel.Worksheet();
Excel.Sheets sheets;
Excel.Workbook theWorkbook;
string SheetName;
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"" + txtpath.Text + "\";Extended Properties=\"Excel 12.0 Xml;HDR=Yes;\";");
conn.Open();
Excel.Application ExcelObj = null;
ExcelObj = new Excel.Application();
theWorkbook = ExcelObj.Workbooks.Open(txtpath.Text, 0, false, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", true, true, 0, true, 1, 0);
sheets = theWorkbook.Worksheets;
worksheet = (Excel.Worksheet)theWorkbook.Worksheets.get_Item(1);
SheetName = worksheet.Name.Trim();
OleDbDataAdapter da = new OleDbDataAdapter("Select * FROM [" + SheetName + "$]", conn);
DataSet ds = new DataSet();
da.Fill(ds);
пожалуйста, помогите.
В какой строке возникает ошибка? Кроме того, ваша вторая строка ('Excel.Worksheet workheet = new Excel.Worksheet();' выглядит supsipicous, просто объявляет новую переменную и не вызывает 'new' в типе' Worksheet'. Только 'Excel.Application' объект может дать вам новый рабочий лист. –
20xA3: похоже, что он никогда не использует новый рабочий лист, ссылка перезаписывается вызовом 'theWorkbook.Worksheets.get_Item (1)'. Я бы сказал, что это, вероятно, осталось Это говорит о том, что если ошибка * есть ... может быть проблемой. – Randolpho