MVC 使用NPOI导出Excel
最近在把C/S搬到B/S上面,MVC很少做过简单来聊一下在前端做导出
JS代码:
按钮就不放上去了,用平常的<input type:“button” οnclick=“DataExport()”>就可以,然后加入点击事件
<script>
//导出按钮
function DataExport() {
window.location.href = "@Url.Action("ExportByNPOI")";
}
</script>
后端代码:
这里的数据源是之前保存到Session里的,而且这是我第一次认识到直接将数据流返回到前端,使用location.href来接收,选择文档保存路径之后就直接完成下载的动作
/// <summary>
/// 导出Excel
/// </summary>
/// <param name="VisitNo"></param>
/// <returns></returns>
public ActionResult ExportByNPOI()
{
List<IPFeeRecord> data = Session["IPFeeRecord"] as List<IPFeeRecord>;
//获取当前日期
var nowDate = DateTime.Now.Date.ToString("yyyy年MM月dd日");
//获取病人名称
var Name = Session["Name"].ToString();
//文件名
string filename = Name + "_" + nowDate + "_" + "手术费用.xls";
//2、创建Excel文件的对象
HSSFWorkbook excel = new HSSFWorkbook();
//3、添加一个sheet
ISheet sheet = excel.CreateSheet("Sheet1");
//合并单元格
//把C3:E5合并为一个单元格 并赋值
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 1, 0, 4));
sheet.CreateRow(0).CreateCell(0).SetCellValue("华山手术费用清单");
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(2, 2, 0, 4));
sheet.CreateRow(2).CreateCell(0).SetCellValue("姓名:" + Session["Name"] + " " + "住院号:" + Session["Code"] + " " + "日期:" + nowDate);
//给sheet1添加标题行
IRow head = sheet.CreateRow(3);
head.CreateCell(0).SetCellValue("费用名称");
head.CreateCell(1).SetCellValue("执行科室");
head.CreateCell(2).SetCellValue("单价");
head.CreateCell(3).SetCellValue("数量");
head.CreateCell(4).SetCellValue("总价");
//将数据逐步写入sheet1各个行
for (int i = 0; i < data.Count; i++)
{
IRow row = sheet.CreateRow(i + 4);
row.CreateCell(0).SetCellValue(data[i].ITEM_NAME);
row.CreateCell(1).SetCellValue(data[i].EXECUTE_DEPTName);
row.CreateCell(2).SetCellValue(data[i].PACKAGE_PRICE.ToString());
row.CreateCell(3).SetCellValue(data[i].EXE_PIECE_QUANTITY.ToString());
row.CreateCell(4).SetCellValue(data[i].APPLY_DTL_SEQ);
}
IRow rows = sheet.CreateRow(data.Count + 4);
rows.CreateCell(4).SetCellValue("合计:" + Session["LumpSum"].ToString());
//写入到客户端
MemoryStream ms = new MemoryStream();
excel.Write(ms);
ms.Seek(0, SeekOrigin.Begin);
return File(ms, "application/vnd.ms-excel", filename);
}
如果本篇文章对您有帮助请点赞分享,谢谢!