Как пропустить 15 строк в Excel (вынуть заголовок)? - PullRequest
0 голосов
/ 07 мая 2019

Я хочу пропустить несколько строк в файле Excel, 15 строк (от А1 до А14), чтобы иметь возможность импортировать на сервер SQL ... Но то, что я нахожу в Интернете, не работает со мной, я был думаю, если вы, ребята, могли бы взглянуть на мой код

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", но это не сработало, я, вероятно, сделал это неправильно.

Ответы [ 2 ]

1 голос
/ 08 мая 2019

@ MacroMarc и ADyson помогли мне Вот решение:

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

На этом:

 OleDbCommand cmd = new OleDbCommand("Select * from [rptListaMovs_4$]", excelConnection);
1 голос
/ 07 мая 2019

Если вы знаете, что всегда хотите пропустить ровно первые 14 строк и начать импорт запроса с A15, вы можете написать свой SQL-запрос следующим образом:

Select * from [rptListaMovs_4$A15:G]

Заменить G на правильный столбец Буква

P.S. Благодарим этот ответ за это вдохновение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...