将excel文件导入SQL数据库,如何忽略第二行;asp.net及;C#

将excel文件导入SQL数据库,如何忽略第二行;asp.net及;C#,c#,asp.net,sql-server,excel,import,C#,Asp.net,Sql Server,Excel,Import,我正在从excel文件导入SQL Server 2008数据库中的数据,其中第一行是标题(HDR=1)。问题是第二行也是我不需要导入的标题。那么,如何忽略excel中的第二行(我猜如果第一行是标题,excel中实际的第二行是第一行) 在MySQL中,只是在import命令的末尾说忽略第1行。。。如何在SQL Server中执行此操作 下面是代码的一部分: //Create Connection to Excel work book OleDbConnection exc

我正在从excel文件导入SQL Server 2008数据库中的数据,其中第一行是标题(HDR=1)。问题是第二行也是我不需要导入的标题。那么,如何忽略excel中的第二行(我猜如果第一行是标题,excel中实际的第二行是第一行)

在MySQL中,只是在import命令的末尾说忽略第1行。。。如何在SQL Server中执行此操作

下面是代码的一部分:

 //Create Connection to Excel work book
            OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);


            //Create OleDbCommand to fetch data from Excel
            OleDbCommand cmd = new OleDbCommand("Select [task_code],[status_code],[wbs] from [task$]", excelConnection);

            excelConnection.Open();
            OleDbDataReader dReader;
            dReader = cmd.ExecuteReader();
            SqlBulkCopy sqlBulk = new SqlBulkCopy(connectionString);
            //Give your Destination table name
            sqlBulk.DestinationTableName = "task";
            sqlBulk.WriteToServer(dReader);
            sqlBulk.Close();
谢谢

请使用以下内容:

...
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
if( !dReader.Read() || !dReader.Read()) 
  return "No data";
SqlBulkCopy sqlBulk = new SqlBulkCopy(connectionString);
...

一个快速的解决办法是:

  • 复制文件
  • 使用Office interop删除电子表格的第二行
  • 导入修改后的电子表格
  • 要从电子表格中删除该行,请执行以下操作:

    public static void DeleteRow(string pathToFile, string sheetName, string cellRef)
    {
        Application app= new Application();
        Workbook  workbook = app.Workbooks.Open(pathToFile);
    
        for (int sheetNum = 1; sheetNum <  workbook.Sheets.Count + 1; sheetNum++)
        {
            Worksheet sheet = (Worksheet)workbook.Sheets[sheetNum];
            if (sheet.Name != sheetName)
            {
                continue;
            }
    
            Range secondRow = sheet.Range[cellRef];
            secondRow.EntireRow.Delete();
    
        }
    
        workbook.Save();
        workbook.Close();
        app.Quit();
    }
    
    publicstaticvoiddeleteRow(字符串pathToFile、字符串sheetName、字符串cellRef)
    {
    应用程序app=新应用程序();
    工作簿=app.Workbooks.Open(路径文件);
    对于(int sheetNum=1;sheetNum
    在写入之前从数据读取器中读取两行?太棒了。。。我不能真正理解if语句的逻辑,它为什么会跳过行。。。但是谢谢:)我刚发现我丢了一些行。。。你能再解释一下它应该检查什么吗?ThanksTwo在
    中读取,如果
    用户跳过前两行,如果它们存在,如果不存在-它将返回OK,但有一些错误..它也忽略了第二行不应该忽略的地方!我想如果我设置HDR=No,会成功吗?我只需要跳过第一行(实际上是excel中的第二行),其中第一行是标题…只跳过一行重写
    if
    如下:
    if(!dReader.Read())