【问题标题】:C# Import data from specified Excel sheet into SQL ServerC#将数据从指定的Excel工作表导入SQL Server
【发布时间】:2017-03-13 04:49:20
【问题描述】:

我有一些将 Excel 导入数据库的 C# 代码,但它只能将第一张工作表 (Sheet1) 中的数据导入 SQL Server 数据库。我想将 Excel 文件的第二张表 (Sheet2) 中的数据导入数据库。请修改代码,教我怎么做。

private void button1_Click(object sender, EventArgs e)
{
        OpenFileDialog ope = new OpenFileDialog();
        ope.Filter = "Excel Files|*.xls;*.xlsx;*slsm";

        if (ope.ShowDialog() == DialogResult.Cancel)
            return;

        FileStream stream = new FileStream(ope.FileName, FileMode.Open);
        IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

        DataSet result = excelReader.AsDataSet();
        DataClasses1DataContext conn = new DataClasses1DataContext();           

        foreach(DataTable table in result.Tables)
        {
            //Default start value of foreach statement is 0
            //Please tell me: How to count dr from 1 instead of 0???
            foreach (DataRow dr in table.Rows)
            {
                //if index of dr==1, then continue
                if (table.Rows.IndexOf(dr) == 0)
                {
                    continue;
                }

                test addtable = new test()
                {
                    id = Convert.ToInt32(dr[0]),
                    name = Convert.ToString(dr[1]),
                    surname = Convert.ToString(dr[2]),
                    age = Convert.ToInt32(dr[3])
                };

                conn.tests.InsertOnSubmit(addtable);
            }
        }

        conn.SubmitChanges();
        excelReader.Close();
        stream.Close();

        MessageBox.Show("Import table completed!");
}

【问题讨论】:

  • 索引从零 (0) 开始。要获得工作簿中的“第二张”工作表(如果存在),您是否尝试过 result.Tables[1]... 看来您的代码正在循环所有工作表。
  • 查看类似问题及可能的答案here

标签: c# sql-server excel


【解决方案1】:

假设您希望从电子表格 Sheet2 中获取数据,这应该可以:

DataSet result = excelReader.AsDataSet();
while (excelReader.NextResult())
{
    if (excelReader.Name == "Sheet2")
    {
        result = excelReader.AsDataSet();
        break;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多