Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在excel中跳过15行(去掉标题)?_C#_Asp.net_Excel_Database - Fatal编程技术网

C# 如何在excel中跳过15行(去掉标题)?

C# 如何在excel中跳过15行(去掉标题)?,c#,asp.net,excel,database,C#,Asp.net,Excel,Database,我想跳过excel文件中的几行,15行(A1到A14),以便能够在sql server中导入。。。但我在互联网上发现的东西对我不起作用,我在想你们能不能看看我的代码 protected void Upload_Click(object sender, EventArgs e) { string excelPath = Server.MapPath("~/Nova pasta/") + Path.GetFileName(FileUpload1.PostedFile.FileName);

我想跳过excel文件中的几行,15行(A1到A14),以便能够在sql server中导入。。。但我在互联网上发现的东西对我不起作用,我在想你们能不能看看我的代码

protected void Upload_Click(object sender, EventArgs e)
{
    string excelPath = Server.MapPath("~/Nova pasta/") + Path.GetFileName(FileUpload1.PostedFile.FileName);

    string filepath = Server.MapPath("~/Nova pasta/") + Path.GetFileName(FileUpload1.FileName);
    string filename = Path.GetFileName(filepath);
    FileUpload1.SaveAs(excelPath);
    string ext = Path.GetExtension(filename);

    String strConnection = @"Data Source=PEDRO-PC\SQLEXPRESS;Initial Catalog=costumizado;Persist Security Info=True;User ID=sa;Password=1234";
    string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties=\"Excel 12.0 Xml;HRD=YES;IMEX=1;\"";

    OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);

    OleDbCommand cmd = new OleDbCommand("Select * from [rptListaMovs_4$]", excelConnection);

    excelConnection.Open();

    cmd.ExecuteNonQuery();

    DataSet ds = new DataSet();

    SqlDataAdapter da = new SqlDataAdapter("Select * from [rptListaMovs_4$] ", strConnection);

    OleDbDataReader dReader;
    dReader = cmd.ExecuteReader();

    using (SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection))
    {
        sqlBulk.DestinationTableName = "Dados";
        sqlBulk.ColumnMappings.Add("Data Mov", "Data Mov.");
        sqlBulk.ColumnMappings.Add("Data Valor", "Data Valor");
        sqlBulk.ColumnMappings.Add("Descrição do Movimento", "Descrição do Movimento");
        sqlBulk.ColumnMappings.Add("Valor em EUR", "Valor em EUR");

        sqlBulk.WriteToServer(dReader);
    }

    excelConnection.Close();
}

我已经尝试过输入“IEnumerable”,但它不起作用,我可能是弄错了。

如果您知道您总是希望跳过前14行并在A15开始查询导入,那么您可以这样编写SQL查询:

Select * from [rptListaMovs_4$A15:G]
用正确的列字母替换G


这一灵感归功于。

如果您知道您总是希望跳过前14行并在A15开始查询导入,那么您可以这样编写SQL查询:

Select * from [rptListaMovs_4$A15:G]
用正确的列字母替换G


顺便说一句,这是我的灵感来源。

@MacroMarc和ADyson帮助了我 以下是解决方案:

OleDbCommand cmd = new OleDbCommand("Select * from [rptListaMovs_4$A15:D75]", excelConnection);
除此之外:

 OleDbCommand cmd = new OleDbCommand("Select * from [rptListaMovs_4$]", excelConnection);

@马克和阿德森帮了我 以下是解决方案:

OleDbCommand cmd = new OleDbCommand("Select * from [rptListaMovs_4$A15:D75]", excelConnection);
除此之外:

 OleDbCommand cmd = new OleDbCommand("Select * from [rptListaMovs_4$]", excelConnection);


要跳过这些特定行的条件是什么?它们是否位于工作表中的某个位置,或在特定单元格中是否具有特定值?标准的性质有助于确定您如何实现目标。请编辑问题以包含更多细节。@ADyson我想跳过excel中的15行以便能够导入数据库是的……你已经说过了。再次阅读我的评论,然后回答其中更具体的问题。谢谢。为了简化:我问你想跳过哪15行。@ADyson我不知道你的意思,我想做的是跳过“标题”。。。通常excel文件从A1开始,但我想跳到A15,否则我的程序不工作,会给我一个错误,因为我的列只是从A15开始,而不是从A15开始。要跳过这些特定行的条件是什么?它们是否位于工作表中的某个位置,或在特定单元格中是否具有特定值?标准的性质有助于确定您如何实现目标。请编辑问题以包含更多细节。@ADyson我想跳过excel中的15行以便能够导入数据库是的……你已经说过了。再次阅读我的评论,然后回答其中更具体的问题。谢谢。为了简化:我问你想跳过哪15行。@ADyson我不知道你的意思,我想做的是跳过“标题”。。。通常excel文件从A1开始,但我想跳到A15,否则我的程序不工作,会给我一个错误,因为我的列只是从A15开始,而不是A15。Microsoft Access数据库引擎找不到对象“rptListaMovs_4$”A16:end“”。确保对象存在,并且正确拼写其名称和路径名。如果“rptListaMovs_4$”A16:end“”不是本地对象,请检查您的网络连接或与服务器管理员联系。“错误哪一行引发该错误?我注意到在您的代码中,您尝试运行了两次SELECT查询,第二次(行
SqlDataAdapter da=…
)使用了错误的数据库连接,并创建了一个从未使用过的dataAdapter。我不确定,但我想你可以去掉那条线<代码>数据集ds=新数据集()似乎也没有必要。这是第一次选择它给我一个错误。。。我已经取出了第二个select,但是什么也没有发生。在错误消息中有一些有趣的单引号。要明确的是,您的代码看起来是否完全像这样:
OleDbCommand cmd=new-OleDbCommand(“Select*from[rptListaMovs_4$A15:end]”,excelConnection)?哦,是的,我试着输入单引号,但如果没有单引号,则会出现相同的错误Microsoft Access数据库引擎无法找到对象“rptListaMovs_4$”A16:end“”。确保对象存在,并且正确拼写其名称和路径名。如果“rptListaMovs_4$”A16:end“”不是本地对象,请检查您的网络连接或与服务器管理员联系。“错误哪一行引发该错误?我注意到在您的代码中,您尝试运行了两次SELECT查询,第二次(行
SqlDataAdapter da=…
)使用了错误的数据库连接,并创建了一个从未使用过的dataAdapter。我不确定,但我想你可以去掉那条线<代码>数据集ds=新数据集()似乎也没有必要。这是第一次选择它给我一个错误。。。我已经取出了第二个select,但是什么也没有发生。在错误消息中有一些有趣的单引号。要明确的是,您的代码看起来是否完全像这样:
OleDbCommand cmd=new-OleDbCommand(“Select*from[rptListaMovs_4$A15:end]”,excelConnection)?哦,是的,我试着输入单引号,但没有它们会给我同样的错误