zoukankan      html  css  js  c++  java
  • 网页导出excel

    工具,以输出流的形式导出excel文件

    package com.zhiyou.usermanage.util;
    
    import java.io.OutputStream;
    import java.net.URLEncoder;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;
    
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.joda.time.DateTime;
    
    
    public class ExportExcel {
          public static void exportXls(List<Map<String,Object>> list,HttpServletResponse response) throws Exception {
               OutputStream os=response.getOutputStream();//取得输出流
               response.reset();//清空输出流
               response.setContentType("application/msexcel;charset=utf-8");// 定义输出类型
               String filename="会员管理"+".xls";
               filename=URLEncoder.encode(filename,"utf-8");//设置中文文件名
               response.setHeader("Content-disposition", "attachment; filename="+filename);// 设定输出文件头
                HSSFWorkbook workbook = new HSSFWorkbook();
             // 创建Excel的sheet
                HSSFSheet sheet = workbook.createSheet("用户");
                sheet.setForceFormulaRecalculation(true);
                // 根据模板中表达式位置, 修改对应单元格的值
                //创建表格头
                Map<String, Object> first=list.get(0);
                HSSFRow header=sheet.createRow(0);
                int headerColNum=0;
                for(Entry<String, Object> e:first.entrySet()) {
                    header.createCell(headerColNum).setCellValue(e.getKey());
                    headerColNum++;
                }
                int rowNum = 1;
                for (Map<String, Object> map : list) {
                        HSSFRow row = sheet.createRow(rowNum);
                        int colNum=0;
                        for (String key : map.keySet()) {
                                if(map.get(key) instanceof Date) {
                                        row.createCell(colNum).setCellValue(new DateTime(map.get(key)).toString(Constants.DATE_TIME));
                                }else {
                                    row.createCell(colNum).setCellValue(map.get(key).toString());
                                }
                                colNum++;
                                        }
                        rowNum++;
                }
                workbook.write(os);
                os.close();
            }
    }

    其中的Constants类

    package com.zhiyou.usermanage.util;
    
    public interface Constants {
    
        public String DATE = "yyyy-MM-dd";
    
        public String DATE_TIME = "yyyy-MM-dd hh:mm:ss";
    
    }

    映射文件,按顺序存放了字段头信息,在导出过程中只需选取第一行的key值写出表格头

    <select id="selectExport" resultType="java.util.LinkedHashMap">
          select <include refid="Base_Column_List"/> from tb_user
      </select>
  • 相关阅读:
    html 输入框 只能输入数字 只能输入字母数字 等组合
    element中table高度自适应问题
    设置千分位问题(改变数据结构形式--转成字符串)
    在element的table接受数据设置千分位问题(不改变数据类型)
    element在使用tab页时,echarts只在第一个页面加载(第二个tab页也在默认tab页显示)问题
    css1
    B/S(Web)实时通讯解决方案
    WebRTC介绍及简单应用
    webpack的编译流程
    01 写一个 mySetInterVal(fn, a, b),每次间隔 a,a+b,a+2b 的时间,然后写一个 myClear,停止上面的 mySetInterVal
  • 原文地址:https://www.cnblogs.com/psxfd4/p/11645209.html
Copyright © 2011-2022 走看看