导出数据

数据导出:
首先查询出要导出的数据
1、 检查模板文件是否存在
2、 使用NPOI打开模板文件
3、 构建单元格样式
4、 设置标题
5、 填充数据
6、 最后以文件方式返回
完成后然后在视图用 window.open() 调用这个方法就可以了。

代码写法:
1-检查模板文件是否存在
// Server.MapPath 将相对的路径转为实际的物理路径
string templatePath = Server.MapPath("~/Document/ARDataTemplate.xls");
//判断模板是否存在
if (!System.IO.File.Exists(templatePath))
{
//如果不存在,就返回失败信息
return Content(“导出失败,请联系网站管理员”);
}

2.使用文件打开模板文件
FileStream templateStream = System.IO.File.Open(templatePath, FileMode.Open);
2.2-使用NPOI打开模板Excel 得到一个工作簿
NPOI.HSSF.UserModel.HSSFWorkbook excelBookTemplate = new NPOI.HSSF.UserModel.HSSFWorkbook(templateStream);
3-打开模板所在第一个工作表
NPOI.SS.UserModel.ISheet sheet = excelBookTemplate.GetSheetAt(0);

3、构建单元格样式
NPOI.SS.UserModel.ICellStyle style = excelBookTemplate.CreateCellStyle();

        //水平垂直居中对齐
        style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
        style.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
        //设置边框为实线
        style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
        style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
        style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
        style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

4、设置标题
if (!string.IsNullOrEmpty(startEndDate))
{
//提取模板标题
NPOI.SS.UserModel.IRow rowTitle = sheet.GetRow(0);
rowTitle.GetCell(0).SetCellValue("订单数据 " + startEndDate);
}

		5.填充数据
        //for循环遍历查询出的数据 填充Excel单元格
        for (int i = 0; i < list.Count(); i++)
        {
            NPOI.SS.UserModel.IRow row = sheet.CreateRow(index); ;//给sheet添加一行
            row.Height = 22 * 20;//设置行高
            //设置单元格数据
            row.CreateCell(0).SetCellValue(i + 1);
            row.CreateCell(1).SetCellValue(list[i].orderNo);
            row.CreateCell(2).SetCellValue(list[i].payTime.ToString());
            row.CreateCell(3).SetCellValue(list[i].totalPrice.ToString());
            row.CreateCell(4).SetCellValue(list[i].agencyFee.ToString());
            row.CreateCell(5).SetCellValue(list[i].payMoney.ToString());
            row.CreateCell(6).SetCellValue(list[i].userGroup.ToString());
            row.CreateCell(7).SetCellValue(list[i].jobNumber.ToString());
            row.CreateCell(8).SetCellValue(list[i].PNR.ToString());
            //设置单元格样式
            for (int j = 0; j < row.Cells.Count; j++)
            {
                row.GetCell(j).CellStyle = style;
            }
            index++;
        }

6、最后以文件方式返回
//以流的方式返回
string fileName = “订单信息” + DateTime.Now.ToString(“yyyy-MM-dd-HH-mm-ss-ffff”) + “.xls”;
//把Excel转化为流,输出
MemoryStream BookStream = new MemoryStream();//定义内存流
excelBookTemplate.Write(BookStream);//将工作薄写入内存流
//输出之前调用Seek(偏移量,游标位置)方法:获取文件流的长度
BookStream.Seek(0, SeekOrigin.Begin);

最后通过File的方法以文件方式返回
return File(BookStream, “application/vnd.ms-excel”, fileName);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值