C# 如何在excel中跳过15行(去掉标题)?
我想跳过excel文件中的几行,15行(A1到A14),以便能够在sql server中导入。。。但我在互联网上发现的东西对我不起作用,我在想你们能不能看看我的代码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);
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)代码>?哦,是的,我试着输入单引号,但没有它们会给我同样的错误