【发布时间】:2011-03-14 22:35:41
【问题描述】:
我正在使用 oledb 连接字符串来导入 Excel 工作表。我正在引用 12.0 对象库。 我尝试使用 excel 2003 和 2007 都得到了如下相同的异常
由于以下错误,从 IClassFactory 创建 CLSID 为 {00020820-0000-0000-C000-000000000046} 的 COM 组件实例失败: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 worksheet = new Excel.Worksheet();看起来很可疑,只需声明一个新变量,不要在Worksheet类型上调用new。只有Excel.Application对象可以为您提供一个新工作表。 -
20xA3:看起来他从不使用新版的工作表;该引用被对
theWorkbook.Worksheets.get_Item(1)的调用覆盖。我会说这可能是剩余的实验。也就是说,如果存在 error.... 可能是问题所在。
标签: c#