将数据库数据导出至Excel表格

将数据库数据导出至Excel表格

所用技术(poi
controller层代码

 public void upExcel(String fileName,HttpServletRequest request,HttpServletResponse response){
            OutputStream outputStream = null;
            //创建输出文件目录
            String excelPath = "E:\\file/" + fileName + ".xls";
            try {
                //创建输出流
                outputStream = new FileOutputStream(excelPath);
                //创建文件
                HSSFWorkbook workbook = new HSSFWorkbook();
                //创建工作表
                HSSFSheet sheet = workbook.createSheet(fileName);
                //获取表中字段集合
                List<Map> cols = this.proRequireService.findCols();//此处调用service层方法
                //创建表头
                HSSFRow row = sheet.createRow(0);
                //合并单元格
                CellRangeAddress cellRangeAddress = new CellRangeAddress(0,0,0,cols.size()-1);//第一行第一列分别记作0,0,表示将第0行到第0行,第0列到总列数减一列处合并
                //将合并的单元格放入文件中并写入数据(将文件名放进表头处)
                sheet.addMergedRegion(cellRangeAddress);
                row.createCell(0).setCellValue(fileName);
                //创见表头
                row = sheet.createRow(1);
                ArrayList<String> cnlist = new ArrayList();
                HashMap cn_en_map = new HashMap();
                //将数据写入表头
                for (Map map : cols) {
                    cnlist.add(map.get("COLUMN_NAME").toString());
                    cn_en_map.put(map.get("COLUMN_NAME").toString(),
                            map.get("COMMENTS").toString());
                }
                for (int i = 0; i < cnlist.size(); i++) {
                    System.out.println(cnlist.get(i).toString());
                    HSSFCell cell = row.createCell(i);
                    cell.setCellValue(cn_en_map.get(cnlist.get(i).toString()).toString());
                }
                //给表中写数据
                List<Map> datas = this.proRequireService.getDatas();
                for (int i = 0; i < datas.size(); i++) {
                    Map data = datas.get(i);
                    row = sheet.createRow(i + 2);
                    for (int j = 0; j < cnlist.size(); j++) {
                        row.createCell(j).setCellValue(data.get(cnlist.get(j).toString())==null?"":data.get(cnlist.get(j).toString()).toString());
                    }
                }
                workbook.write(outputStream);
                System.out.println("end");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                try {
                    outputStream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
       }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值