NPOI 导入导出excel两种方式 和 错误 无法访问已关闭的流解决方式
【无法访问已关闭的流】的原因是流关闭了,在方法结束后流会自动被垃圾回收,我们不用手动关闭。
解决办法:把流的主动关闭代码注释即可解决! //ms.close();//错误示例,不要关闭流
项目中基础的UI图:
1.基础的自己构建的html
2.jQuery.Upload插件
好,入正题,今天主要记录一下下载功能,以NPOI下载方法为例
分享以下两种方式:
1.直接手动生成文档,填充数据,下载
2.读取现有文档,填充数据,下载,较为推荐!
1.直接手动生成一份文档,填充数据,下载
HSSFWorkbook book = new HSSFWorkbook(); ISheet sheet = book.CreateSheet("举例下载"); sheet.SetColumnWidth(0,16*256);//设置第一列的宽度 sheet.SetColumnWidth(1,12 * 256);//设置第二列的宽度 for (int rowId = 0; rowId <= 10; rowId++) { IRow row = sheet.CreateRow(rowId); for (int i = 0; i < 2; i++) { ICell cell = row.CreateCell(i); cell.SetCellType(CellType.String); cell.SetCellValue("测试"+i); } } var ms = new MemoryStream(); book.Write(ms); ms.Position = 0; string fileName = "测试举例.xls"; return File(ms, "application/vnd.ms-excel", fileName);
2.加载预定义的一份模板文件,填充数据,下载
//读模板的方式加载 string filePath = System.Web.HttpContext.Current.Server.MapPath("~/Template/BasicInfoTemplete.xlsx"); IWorkbook workbook; FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Read); workbook = WorkbookFactory.Create(fs); ISheet sheet = workbook.GetSheetAt(0);//获取Excel中的第一个Sheet ICellStyle cellStyle = workbook.CreateCellStyle(); //设置单元格上下左右边框线 cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; //文字水平和垂直对齐方式 cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; ICell Cell = null; IRow row = null; for (int i = 2; i < 10; i++) { row = sheet.CreateRow(i); for (int j = 1; j <= 5; j++) { Cell = row.CreateCell(j); Cell.CellStyle = cellStyle; Cell.SetCellValue(i+"测试举例"+j); } }
var ms = new MemoryStream();
book.Write(ms);
ms.Position = 0;
ms.close();//错误示例,不要关闭流
string fileName = "测试举例.xls";
return File(ms, "application/vnd.ms-excel", fileName);
html中调用
<a href="/UploadCarInfo/DownLoadBasicInfo" target="ajaxDownload"><i class="fa fa-download"></i> 车型参考</a> <iframe name="ajaxDownload" style="display:none"></iframe>
文中涉及考点:Stream的理解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南