技术文摘
ASP.Net MVC 借助 NPOI 实现 Excel 导入导出的示例代码
ASP.Net MVC 借助 NPOI 实现 Excel 导入导出的示例代码
在 ASP.Net MVC 开发中,经常会遇到需要实现 Excel 导入导出的功能。NPOI 是一个强大的开源库,能够帮助我们轻松地完成这一任务。下面将为您展示一个示例代码,帮助您理解如何在 ASP.Net MVC 中借助 NPOI 来实现 Excel 的导入导出。
确保您已经在项目中引入了 NPOI 的相关 DLL 引用。
导出 Excel 的代码实现如下:
public ActionResult ExportExcel()
{
var workbook = new HSSFWorkbook();
var sheet = workbook.CreateSheet("Sheet1");
// 设置表头
var headerRow = sheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("ID");
headerRow.CreateCell(1).SetCellValue("名称");
headerRow.CreateCell(2).SetCellValue("年龄");
// 模拟数据
var data = new List<Person>
{
new Person { Id = 1, Name = "张三", Age = 25 },
new Person { Id = 2, Name = "李四", Age = 30 }
};
// 填充数据
for (int i = 0; i < data.Count; i++)
{
var row = sheet.CreateRow(i + 1);
row.CreateCell(0).SetCellValue(data[i].Id);
row.CreateCell(1).SetCellValue(data[i].Name);
row.CreateCell(2).SetCellValue(data[i].Age);
}
// 将工作簿写入内存流
using (var ms = new MemoryStream())
{
workbook.Write(ms);
return File(ms.ToArray(), "application/vnd.ms-excel", "Export.xls");
}
}
导入 Excel 的代码实现相对复杂一些,需要对文件进行读取和解析:
[HttpPost]
public ActionResult ImportExcel(HttpPostedFileBase file)
{
if (file == null || file.ContentLength == 0)
{
ModelState.AddModelError("File", "请选择要导入的 Excel 文件");
return View();
}
using (var workbook = new HSSFWorkbook(file.InputStream))
{
var sheet = workbook.GetSheetAt(0);
for (int rowNum = 1; rowNum <= sheet.LastRowNum; rowNum++)
{
var row = sheet.GetRow(rowNum);
if (row!= null)
{
int id = Convert.ToInt32(row.GetCell(0).NumericCellValue);
string name = row.GetCell(1).StringCellValue;
int age = Convert.ToInt32(row.GetCell(2).NumericCellValue);
// 在此处处理导入的数据
}
}
}
return RedirectToAction("Index");
}
通过上述示例代码,我们可以看到,借助 NPOI 库,在 ASP.Net MVC 中实现 Excel 的导入导出功能变得相对简单和高效。您可以根据实际的业务需求,对数据的处理和逻辑进行进一步的扩展和优化。
希望这段示例代码能够对您在 ASP.Net MVC 开发中实现 Excel 导入导出功能有所帮助,让您的应用更加完善和实用。
TAGS: 示例代码 NPOI ASP.NET MVC Excel 导入导出
- 我能在 CSS 中写 if/else 语法了吗?
- 不会处理鉴权?Casbin 助您快速入门
- Sharding-Jdbc 达成读写分离与分库分表 堪称佳作
- Chrome 96 为开发者工具带来众多新功能
- 学会 REST 深度进阶指南
- JVM 开胃菜:蜻蜓戏水的奥秘
- 以下几个 GitHub 开源项目超给力
- Python 3.10 的六个新特性
- HarmonyOS 中 JS FA 调用 PA 的全新方式
- 每日算法之数据流中位数
- 5 个 Python 实用示例,轻松教新学妹!
- 我国 VR 产业发展步入新周期,机遇与挑战并存
- 腾讯 C++ 笔面试题与答案
- 超详细的秒杀架构设计与运维
- 保姆级 Go+ 快速入门体验指南,你掌握了吗?