从 C# SQL 创建 Excel 文件
Posted
技术标签:
【中文标题】从 C# SQL 创建 Excel 文件【英文标题】:Create Excel file from C# SQL 【发布时间】: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 不适合那样做。 【参考方案1】:创建一个专用于异常的 DataTable 对象,例如:
DataTable dtException = new DataTable();
在 dtException 中添加所有失败的 DataRows
编写一个方法,例如WriteException() 并通过 dtException 在 Excel 工作表中写入所有异常: var worksheet = excel.Workbook.Worksheets["Exceptions"];
worksheet.Cells["A1"].LoadFromDataTable(dt,false);
FileInfo excelFile = new FileInfo(@"C:\Temp\AllExceptions.xlsx");
excel.SaveAs(excelFile);
【讨论】:
以上是关于从 C# SQL 创建 Excel 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# 从 DataSet 创建包含多个工作表的 excel 文件
C#:Datagrid 到 Excel .Cell 边框在创建的 excel 文件中丢失