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 的需求,又不想搞得太复杂,这套方案还是挺推荐的。想看更多例子,可以看看这个文章。
excel 批量上传.rar
预估大小:3个文件
excel 批量上传
文件夹
upchengji.aspx
1KB
stu.xls
20KB
upchengji.aspx.cs
5KB
6.48KB
文件大小:
评论区