【问题标题】:Create Excel file from C# SQL从 C# SQL 创建 Excel 文件
【发布时间】:2020-06-04 05:16:30
【问题描述】:

我有一个 ASP.NET Web 应用程序,我在其中导入 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'Mac”,则不会被 SQL 处理。这是一个失败的行,应该插入到新创建的 Excel 文件中。

【问题讨论】:

  • 看起来很可行,首先添加一个try-catch。但是您是否尝试过为根本问题找到解决方案?
  • 听起来您要求我们为您编写代码。 Stack Overflow 不适合那样做。

标签: javascript c# asp.net sql-server excel


【解决方案1】:
  1. 创建一个专用于异常的 DataTable 对象,例如:

    DataTable dtException = new DataTable();

  2. 在 dtException 中添加所有失败的 DataRows

  3. 编写一个方法,例如WriteException() 并通过 dtException 在 Excel 工作表中写入所有异常:

私人无效WriteException(数据表dt) {
使用 (ExcelPackage excel = new ExcelPackage()) { excel.Workbook.Worksheets.Add("例外"); var worksheet = excel.Workbook.Worksheets["Exceptions"]; worksheet.Cells["A1"].LoadFromDataTable(dt,false); FileInfo excelFile = new FileInfo(@"C:\Temp\AllExceptions.xlsx"); excel.SaveAs(excelFile); } }

【讨论】:

    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 2023-03-23
    • 2016-06-23
    • 2013-06-12
    相关资源
    最近更新 更多