Импорт файла Excel в базу данных SQL, как игнорировать 2-ю строку; asp.net & C # - PullRequest
1 голос
/ 24 января 2012

Я импортирую данные в базу данных SQL Server 2008 из файла Excel, где первая строка - заголовки (HDR = 1). Дело в том, что вторая строка также является своего рода заголовками, которые мне не нужно импортировать. Итак, как мне проигнорировать вторую строку из этого Excel (я думаю, если первая строка является заголовками, фактическая вторая строка в Excel является первой)?

В MySQL просто говорится, что IGNORE LINES 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();

Спасибо

Ответы [ 2 ]

1 голос
/ 24 января 2012

Быстрое решение будет следующим:

  1. Скопируйте файл
  2. Используйте Office Interop для удаления второй строки электронной таблицы
  3. Импортируйте исправленную электронную таблицу

Чтобы удалить строку из электронной таблицы:

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();
}
1 голос
/ 24 января 2012

Используйте следующее:

...
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
if( !dReader.Read() || !dReader.Read()) 
  return "No data";
SqlBulkCopy sqlBulk = new SqlBulkCopy(connectionString);
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...