Создать файл Excel из C# SQL - PullRequest
       3

Создать файл Excel из C# SQL

0 голосов
/ 20 февраля 2020

У меня есть ASP. NET веб-приложение, в которое я импортирую файл Excel (.xlsx) и сохраняю данные в базе данных.

Вот мой код для чтения файла Excel:

private void ImportBulkRegistraion(HttpContext context) 
{
 if (context.Request.Files.Count > 0) 
 {
  HttpFileCollection files = context.Request.Files;
  HttpPostedFile MyFile = files[0];

  DataTable dt = new DataTable();
  using(var excel = new ExcelPackage(MyFile.InputStream)) 
  {
   //loop for all of sheets
   for (int sheetcount = 1; sheetcount <= 1; sheetcount++) 
   {
    ExcelWorksheet worksheet = excel.Workbook.Worksheets[sheetcount];
    ExcelCellAddress startCell = worksheet.Dimension.Start;
    ExcelCellAddress endCell = worksheet.Dimension.End;

    // place all the data into DataTable
    for (int row = startCell.Row; row <= endCell.Row; row++) 
    {
     if (row == 1) 
     {
      //Add columns
      if (sheetcount == 1)
       for (int col = startCell.Column; col <= endCell.Column; col++)
        dt.Columns.Add(worksheet.Cells[row, col].Value.ToString());
     } 
     else
     {
      //Add Rows
      DataRow dr = dt.NewRow();
      int x = 0;
      for (int col = startCell.Column; col <= endCell.Column; col++)
       dr[x++] = worksheet.Cells[row, col].Value;
      dt.Rows.Add(dr);
     }
    }
   }
  }
  ExportUserToDB(dt);
 }
}

//ExportUserToDB(dt); вызывает хранимую процедуру, в которую я вставляю строки в базу данных.

Я хочу создать файл Excel, где, если есть какие-либо строки из входного Excel файл не может быть обработан, те же строки будут сохранены в этом недавно созданном файле Excel (в том же формате), который можно исправить вручную, а затем снова обработать.

Например: если строка имеет столбец Имя с имя как "O'Ma c", не обрабатывается SQL. Это ошибочная строка, и ее следует вставить во вновь созданный файл Excel.

1 Ответ

0 голосов
/ 20 февраля 2020
  1. Создать объект DataTable, выделенный для исключений, например:

    DataTable dtException = new DataTable ();

  2. Добавить все эти DataRows в dtException сбой

  3. Напишите метод, например WriteException (), и передайте dtException, чтобы записать все исключения в листе Excel:

        private void WriteException(DataTable dt)
        {<br>
            using (ExcelPackage excel = new ExcelPackage())
            {
                excel.Workbook.Worksheets.Add("Exceptions");</p>

<code>            var worksheet = excel.Workbook.Worksheets["Exceptions"];

            worksheet.Cells["A1"].LoadFromDataTable(dt,false);

            FileInfo excelFile = new FileInfo(@"C:\Temp\AllExceptions.xlsx");
            excel.SaveAs(excelFile);
        }
    }
</code>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...