Excel批量上传功能实现

Excel 的批量上传功能,在企业项目里真是个老大难问题。你总不能让用户一个个手动录入数据吧?用 ASP.NET C# 搭配 SQL Server,外加一个轻巧的开源库 NPOI,就能帮你搞定这个事儿。比起依赖 Office 环境,NPOI 用起来轻松多了,不用装什么套件,部署也简单。

NPOI 的安装挺方便,直接通过 NuGet 安装就好。之后你可以用 HSSFWorkbook 来读取 Excel 文件内容,遍历每一行每一列,数据就出来了:

var workbook = new HSSFWorkbook(new FileStream("path_to_excel", FileMode.Open));
var sheet = workbook.GetSheetAt(0);
for (int i = 0; i < sheet xss=removed xss=removed xss=removed>

数据拿到了,接下来就是和数据库打交道了。连接 SQL Server 可以用 ADO.NET,你可以用 SqlConnection 建个连接,用 SqlBulkCopy 一口气把数据批量灌进去。效率比一条条插入高得多:

using (var bulkCopy = new SqlBulkCopy(conn)) {
  bulkCopy.DestinationTableName = "YourTable";
  bulkCopy.ColumnMappings.Add("Column1", "Column1Name");
  bulkCopy.WriteToServer(yourDataTable);
}

记得加上异常,像文件不存在、连接失败、数据类型不匹配这些问题都挺常见,不能忽略。上传前也最好先验证下文件内容,防止一些奇怪的数据灌进库里。

性能方面也别偷懒,一次读太多行会爆内存,可以试试分批,比如每 1000 条导一次;SqlBulkCopy.BatchSize 这个属性别忘了设。

安全方面也得上点心。你永远不知道用户会上传什么,SQL 注入、恶意数据都得防。建议用参数化 SQL,必要时还可以先把数据存到临时表里再。

如果你项目里有导入 Excel 的需求,又不想搞得太复杂,这套方案还是挺推荐的。想看更多例子,可以看看这个文章

rar
excel 批量上传.rar 预估大小:3个文件
folder
excel 批量上传 文件夹
file
upchengji.aspx 1KB
file
stu.xls 20KB
file
upchengji.aspx.cs 5KB
rar 文件大小:6.48KB