【问题标题】:How to fill datatable(s) in C# from excel如何从excel填充C#中的数据表
【发布时间】:2012-06-01 23:00:18
【问题描述】:

我正在使用以下代码将数据从 excel 2007 电子表格选项卡导入数据表。

                DataTable dtImport1 = new DataTable();
                DataTable dtImport2 = new DataTable();
                DataTable dtImport3 = new DataTable();
                string strRange1;
                string strRange2;
                string strRange3;

                strRange1 = "A0:I22000";
                strRange2 = "A22000:I41999";
                strRange3 = "A41999:I58432";

                OleDbDataAdapter cmdExcel1 = new OleDbDataAdapter("select * from [" + importTabs[i].ToString() + "$" + strRange1 + "]", connExcel);
                cmdExcel1.Fill(dtImport1);
                dtImport1.AcceptChanges();


                OleDbDataAdapter cmdExcel2 = new OleDbDataAdapter("select * from [" + importTabs[i].ToString() + "$" + strRange2 + "]", connExcel);
                cmdExcel2.Fill(dtImport2);
                dtImport2.AcceptChanges();


                OleDbDataAdapter cmdExcel3 = new OleDbDataAdapter("select * from [" + importTabs[i].ToString() + "$" + strRange3 + "]", connExcel);
                cmdExcel3.Fill(dtImport3);
                dtImport3.AcceptChanges();

目前的情况如下:

dtImport1 可以很好地导入范围。

第二个数据表,dtImport2 导入没有错误,但最后一条记录仍然部分填充,

dtimport3 根本不导入,并给我以下异常:

“此表格包含超出此电子表格中定义的单元格范围的单元格”

如何改进代码,使其从 excel 中提取所有行而不会出现任何错误?

附加信息:

我在 excel 中有大约 58433 行需要导入的数据。

从 .xlsx (2007 Excel) 导入

我尝试只使用一个数据表并导入整个选项卡,但它给了我与 dtImport3 数据表相同的错误。

感谢任何帮助。

【问题讨论】:

  • 您确定您的电子表格是“干净的”,即没有奇怪的格式或电子表格末尾的数据吗?如果您尝试只导入最后一行会发生什么?
  • 你能告诉我们你的连接字符串吗?只是猜测,但如果您使用的是旧的 OLEDB 驱动程序,可能会发生这种情况?
  • 是的,电子表格很干净,没有格式错误。数据表对可以输入的数据量有限制吗?或者填满?

标签: c# excel-2007


【解决方案1】:

您可以查看以下文章
Import data from Excel to SQL Server
希望有所帮助。
问候。

【讨论】:

    猜你喜欢
    • 2016-10-25
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多