• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp.net使用npoi读取excel模板并导出下载详解

    为什么要使用NPOI导出Excel?

    一、解决传统操作Excel遇到的问题:

    如果是.NET,需要在服务器端装Office,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导出过程中出问题可能导致服务器宕机。
    Excel会把只包含数字的列进行类型转换,本来是文本型的,Excel会将其转成数值型的,比如编号000123会变成123。
    导出时,如果字段内容以“-”或“=”开头,Excel会把它当成公式进行,会报错。
    Excel会根据Excel文件前8行分析数据类型,如果正好你前8行某一列只是数字,那它会认为该列为数值型,自动将该列转变成类似1.42702E+17格式,日期列变成包含日期和数字的。

    二、个人认为使用NPOI的优势

    导出的速度很快,跟传统的方式不是一个数量级的。
    不用担心进程问题,因为传统的导出方式每导出一个Excel会打开一个Excel进程,不会自动关闭,若手工关闭,必须遍历把所有的Excel进程都杀死,这样会造成不能并发导出的问题。

    使用步骤

    第一步:在解决方案中添加引用。

    在这里使用的是NPOI 1.2.5的.net2.0版本,需要引用两个文件:

    NPOI 1.2.5的下载地址为:http://npoi.codeplex.com/releases/view/38113

    第二步:在CS文件中添加引用。

    复制代码 代码如下:

    using NPOI.HSSF.UserModel;
    using System.IO;//内存流的使用
    using NPOI.SS.UserModel

    第三步:具体使用代码

    复制代码 代码如下:

    #region加载模板文件到工作簿对象中

    //创建工作簿对象
    HSSFWorkbookhssfworkbook;
    //打开模板文件到文件流中
    using(FileStreamfile=newFileStream(HttpContext.Current.Request.PhysicalApplicationPath+@"template/book1.xls",FileMode.Open,FileAccess.Read))
    {
    //将文件流中模板加载到工作簿对象中
    hssfworkbook=newHSSFWorkbook(file);
    }
    #endregion

    #region根据模板设置工作表的内容

    //建立一个名为Sheet1的工作表
    ISheetsheet1=hssfworkbook.GetSheet("Sheet1");
    //将数据添加到表中对应的单元格中,因为行已经创建,不需要重新创建行
    sheet1.GetRow(1).GetCell(1).SetCellValue(200200);
    sheet1.GetRow(2).GetCell(1).SetCellValue(300);
    sheet1.GetRow(3).GetCell(1).SetCellValue(500050);
    sheet1.GetRow(4).GetCell(1).SetCellValue(8000);
    sheet1.GetRow(5).GetCell(1).SetCellValue(110);
    sheet1.GetRow(6).GetCell(1).SetCellValue(100);
    sheet1.GetRow(7).GetCell(1).SetCellValue(200);
    sheet1.GetRow(8).GetCell(1).SetCellValue(210);
    sheet1.GetRow(9).GetCell(1).SetCellValue(2300);
    sheet1.GetRow(10).GetCell(1).SetCellValue(240);
    sheet1.GetRow(11).GetCell(1).SetCellValue(180123);
    sheet1.GetRow(12).GetCell(1).SetCellValue(150);

    //强制Excel重新计算表中所有的公式
    sheet1.ForceFormulaRecalculation=true;
    #endregion
    #region设置响应头(文件名和文件格式)
    //设置响应的类型为Excel
    Response.ContentType="application/vnd.ms-excel";
    //设置下载的Excel文件名
    Response.AddHeader("Content-Disposition",string.Format("attachment;filename={0}","test.xls"));
    //Clear方法删除所有缓存中的HTML输出。但此方法只删除Response显示输入信息,不删除Response头信息。以免影响导出数据的完整性。
    Response.Clear();
    #endregion
    #region写入到客户端
    using(MemoryStreamms=newMemoryStream())
    {
    //将工作簿的内容放到内存流中
    hssfworkbook.Write(ms);
    //将内存流转换成字节数组发送到客户端
    Response.BinaryWrite(ms.GetBuffer());
    Response.End();
    }
    #endregion

    3、总结

    加载模板文件到工作簿对象中。
    根据模板设置工作表的内容。
    设置响应头(文件名和文件格式)。
    写入到客户端。

    您可能感兴趣的文章:
    • POI通过模板导出EXCEL文件的实例
    • 基于apache poi根据模板导出excel的实现方法
    • Springboot使用POI实现导出Excel文件示例
    • 详解poi+springmvc+springjdbc导入导出excel实例
    • jsp利用POI生成Excel并在页面中导出的示例
    • Java利用POI实现导入导出Excel表格示例代码
    • java使用poi导出Excel的方法
    • POI导出Excel报错No such file or directory的解决方法
    • Java poi导出Excel下载到客户端
    • POI通用导出Excel(.xls,.xlsx)的方法
    上一篇:log4net配置和使用方法分享
    下一篇:asp.net连接数据库读取数据示例分享
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    asp.net使用npoi读取excel模板并导出下载详解 asp.net,使用,npoi,读取,excel,