【发布时间】: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