使用NPOI操作Excel

Posted 叶祖辉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用NPOI操作Excel相关的知识,希望对你有一定的参考价值。

案例:用NPOI动态生成一个Excel表,然后弹出对话框让用户下载,文件名是"用户列表.xls" 先去相关网站下载 NPOI DLL文件,再引用
application/x-excel, application/octet-stream(不知道的类型都可用)
技术分享
   context.Response.ContentType = "application/x-excel";    //设置返回类型
   string name = HttpUtility.UrlEncode("用户列表.xls");
   context.Response.AddHeader("Content-Disposition", "attachment;filename=" + name);
   HSSFWorkbook workbook = new HSSFWorkbook();     //创建 一个 Excel 表
   HSSFSheet sheet = workbook.CreateSheet();       //创建 一个表
   HSSFRow row = sheet.CreateRow(0);               //创建 第一行
   HSSFRow row2 = sheet.CreateRow(1);              //创建 第二行
   HSSFCell cell = row.CreateCell(0, HSSFCell.ENCODING_COMPRESSED_UNICODE); //创建单元格
   cell.SetCellValue("ID");        // 第1行第1列值
   row.CreateCell(1, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue("姓名"); //第1行第2列值
   row.CreateCell(2, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue("年龄"); //第1行第3列值

   row2.CreateCell(0, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue(1);     // 第2行第1列值
   row2.CreateCell(1, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue("小高");// 第2行第2列值
   row2.CreateCell(2, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue(21);   // 第2行第3列值
   workbook.Write(context.Response.OutputStream);    //写入到输出流中
技术分享

然后在html页面中调用 <a href="down.asxh">Excel下载</a>

 

案例:将数据库的内容导入到Excel表中,让用户下载

 

技术分享
  context.Response.ContentType = "application/x-excel";
   string name = HttpUtility.UrlEncode("用户列表.xls");
   context.Response.AddHeader("Content-Disposition", "attachment;filename=" + name);

   HSSFWorkbook workbook = new HSSFWorkbook();  //先创建Excel文件
   HSSFSheet sheet = workbook.CreateSheet();    //先创建一张表

   using (SqlConnection conn = new SqlConnection("server=.;database=mytest;uid=sa;pwd=gao;"))
    {
          conn.Open();
         IDbCommand cmd = conn.CreateCommand();    //IDbCommand 是一个接口,用 SqlCommand 一样
          cmd.CommandText = "select username,passwd from mydo";
         IDataReader dr = cmd.ExecuteReader();     //IDataReader 也是个接口,用 SqlDataReader 一样
          int rownum = 0;        //定义一个变量,用来操作行数
          while (dr.Read())
           {
             string UserName =Convert.ToString(dr["username"]);    //取得用户名
             string Password = Convert.ToString(dr["passwd"]);  //取得密码
             HSSFRow row = sheet.CreateRow(rownum);        //创建一行,以 rownum 为准

             row.CreateCell(0, HSSFCellType.STRING).SetCellValue(UserName); //第一列为 用户名
             row.CreateCell(1, HSSFCellType.STRING).SetCellValue(Password); //第二列为 密码
             rownum++;            //行数变量自增,即可实现自动插入下一行
            }
     }
     workbook.Write(context.Response.OutputStream);        //将Excel表写入到输出流中
技术分享

 

以上是关于使用NPOI操作Excel的主要内容,如果未能解决你的问题,请参考以下文章

.Net Core+NPOI快速导入导出Excel

NPOI操作Excel文件

NPOI操作excel

NPOI操作Excel 005:写入空Excel(Winform版)

NPOI操作Excel 004:写入空Excel(添加保存提示框)

使用NPOI操作Excel