使用c#在Excel中循环工作表

时间:2015-03-25 11:01:46

标签: c# asp.net excel loops oledb

我想循环excel中的所有工作表,需要将其插入sql server表中。

我已经完成了一个编码部分,将单个表格excel插入到sql server表中。

如果excel包含更多工作表,我想循环这些工作表并需要将它插入到sql server表中。

我已经编写了以下用于循环目的的代码,但它给出了以下错误;

  

“ComException被捕获”“检索COM类工厂   CLSID为{00024500-0000-0000-C000-000000000046}的组件失败   出现以下错误:80040154未注册类(例外情况除外)   HRESULT:0x80040154(REGDB_E_CLASSNOTREG))。“

这是循环代码:

string path = @"D:/Projects/sample.xls";
string strConnection = ConfigurationManager.ConnectionStrings["Source"].ToString();
string excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\";";
Excel.Application ExcelApp = new Excel.Application();
var Wbook = ExcelApp.Workbooks.Open(path);
foreach (var sheet in Wbook.Worksheets)
                {
                    OleDbCommand cmd = new OleDbCommand("Select [Name], [City], [Address], [Designation] from [" + sheet + "$]", excelConnection);
                    excelConnection.Open();
                    OleDbDataReader dReader;
                    dReader = cmd.ExecuteReader();
                    SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
                    //Give your Destination table name
                    sqlBulk.DestinationTableName = "temp1";
                    sqlBulk.WriteToServer(dReader);
                    excelConnection.Close();
                }

但在执行行

var Wbook = ExcelApp.Workbooks.Open(path);

出现上述错误。请建议我。

1 个答案:

答案 0 :(得分:1)

您需要安装Microsoft Office才能使用互操作程序集。

您必须:

  • 安装Excel;
  • 或使用第三方组件,例如EPPlus