资讯专栏INFORMATION COLUMN

poi导出excel

RayKr / 1825人阅读

摘要:积分消费明细对账单其中,有四个参数,分别是,,,。导出读取数据库的信息,转成。

public void detailExport() {
    
    String sourceSystem = getPara("source_system");
    String dataDate = getPara("data_date");
    Integer pointsType = getParaToInt("points_type");
    
    List zjPointsConsumeDetails = zjPointsConsumeDetailService.findByDate(sourceSystem, dataDate, pointsType);
    
    File modelFile = new File(PathKit.getWebRootPath() + File.separator + "excel" + File.separator +"pointsConsumeDetails.xlsx");
    File outputFile = new File(PathKit.getWebRootPath() + File.separator + "temp" + File.separator + "积分消费明细对账单.xlsx");
    
    ExcelHelper excelHelper = SpringContextHolder.getBean(ExcelHelper.class);
    excelHelper.exportExcelFile("zjPointsConsumeDetailExcel", modelFile, outputFile, zjPointsConsumeDetails);
    renderFile(outputFile);
}

其中,exportExcelFile有四个参数,分别是String mapping,File modelFile,File outputFile,List<> dataList。mapping对应ZjPointsConsumeDetailExcel 类,ZjPointsConsumeDetailExcel 的作用是将数据库中的字段与excel中展示的字段一一对应,并可进行特殊字段的转换,代码如下:

package com.cwl.excel;

import com.cwl.plugin.poi.ExcelField;
import com.cwl.plugin.poi.ExcelModel;

@ExcelModel(name="zjPointsConsumeDetailExcel", rowCount="4")
public class ZjPointsConsumeDetailExcel {

    @ExcelField(fieldName = "id", index = "0", title = "序号", type = ExcelField.CELL_TYPE_NUMERIC)
    private Long id;
    
    @ExcelField(fieldName = "consume_kind", index = "1", title = "消费分类", type = ExcelField.CELL_TYPE_STRING)
    private String consumeKind;
    
    @ExcelField(fieldName = "consume_abstract", index = "2", title = "消费摘要", type = ExcelField.CELL_TYPE_STRING)
    private String consumeAbstract;
    
    @ExcelField(fieldName = "points_type", index = "3", title = "积分类型", type = ExcelField.CELL_TYPE_NUMERIC, convert = {"0:普通积分", "1:白金积分"})
    private String pointsTypeName;
    
    @ExcelField(fieldName = "consume_points", index = "4", title = "消费分值", type = ExcelField.CELL_TYPE_NUMERIC)
    private Long consumePoints;
    
    @ExcelField(fieldName = "consume_time", index = "5", title = "消费时间", type = ExcelField.CELL_TYPE_STRING)
    private String consumeTime;
    
    @ExcelField(fieldName = "related_order", index = "6", title = "关联订单号", type = ExcelField.CELL_TYPE_STRING)
    private String relatedOrder;
    
}

以上仅是如何使用,有空补上源码。

总结

导入:读取Sheet信息,并且保存至数据库。
导出:读取数据库的信息,转成Sheet。

使用poi导出excel

参考博客:使用poi实现导入导出

    /**
     * 导出数据至Excel文件
     * @param excelColumns  报表头信息
     * @param excelHeadConvertMap   需要对数据进行特殊转换的列
     * @param modelFile  模板Excel文件
     * @param outputFile 导出文件
     * @param dataList  导入excel报表的数据来源
     * @return void
     * 2012-4-19 上午10:04:30
     */
    public void exportExcelFile(ExcelHead head, File modelFile, File outputFile, List dataList) {
        // 读取导出excel模板
        InputStream inp = null;
        Workbook wb = null;
        try {
            inp = new FileInputStream(modelFile);
            wb = WorkbookFactory.create(inp);
            Sheet sheet = wb.getSheetAt(0);
            // 生成导出数据
            buildExcelData(sheet, head, dataList);
             
            // 导出到文件中
            FileOutputStream fileOut = new FileOutputStream(outputFile);
            wb.write(fileOut);
            fileOut.close();
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (InvalidFormatException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
    
     /**
     * 生成导出至Excel文件的数据
     * @param sheet 工作区间
     * @param excelColumns  excel表头
     * @param excelHeadMap  excel表头对应实体属性
     * @param excelHeadConvertMap   需要对数据进行特殊转换的列
     * @param dataList      导入excel报表的数据来源
     * @auther hubo
     * @return void
     * 2012-4-19 上午09:36:37
     */
    private void buildExcelData(Sheet sheet, ExcelHead head, List dataList) {
        List excelColumns = head.getColumns(); 
        Map excelHeadConvertMap = head.getColumnsConvertMap();
         
        // 将表结构转换成Map
        Map excelHeadMap = convertExcelHeadToMap(excelColumns);
         
        // 从第几行开始插入数据
        int startRow = head.getRowCount();
        int order = 1;
        //数据循环
        for (Object obj : dataList) {
            Row row = sheet.createRow(startRow++);
            ////字段循环(通过字段名,拿到对象该字段的值)
            for (int j = 0; j < excelColumns.size(); j++) {
                Cell cell = row.createCell(j);
                cell.setCellType(excelColumns.get(j).getType());
                String fieldName = excelHeadMap.get(j);
                if(fieldName != null) {
                    Object valueObject = BeanUtil.getProperty(obj, fieldName);
                     
                    // 如果存在需要转换的字段信息,则进行转换
                    if(excelHeadConvertMap != null && excelHeadConvertMap.get(fieldName) != null) {
                        valueObject = excelHeadConvertMap.get(fieldName).get(valueObject);
                    }
                     
                    if(valueObject == null) {
                        cell.setCellValue("");
                    } else if (valueObject instanceof Integer) {
                        cell.setCellValue((Integer)valueObject);
                    } else if (valueObject instanceof String) {
                        cell.setCellValue((String)valueObject);
                    } else if (valueObject instanceof Date) {
                        cell.setCellValue(new JDateTime((Date)valueObject).toString("YYYY-MM-DD"));
                    } else {
                        cell.setCellValue(valueObject.toString());
                    }
                } else {
                    cell.setCellValue(order++);
                }
            }
        }
    }

poi的使用及简单介绍

1.创建工作簿 (WORKBOOK)  

HSSFWorkbook wb = new HSSFWorkbook();  

FileOutputStream fileOut = new FileOutputStream("workbook.xls");  

wb.write(fileOut);  

fileOut.close();  

2.创建工作表(SHEET)  

HSSFWorkbook wb = new HSSFWorkbook();  

HSSFSheet sheet1 = wb.createSheet("new sheet");  

HSSFSheet sheet2 = wb.createSheet("second sheet");  

FileOutputStream fileOut = new FileOutputStream("workbook.xls");  

wb.write(fileOut);  

fileOut.close();  

3.创建单元格(CELL)  

HSSFWorkbook wb = new HSSFWorkbook();  

HSSFSheet sheet = wb.createSheet("new sheet");  

// Create a row and put some cells in it. Rows are 0 based.  

HSSFRow row = sheet.createRow((short)0);  

// Create a cell and put a value in it.  

HSSFCell cell = row.createCell((short)0);  

cell.setCellValue(1);  

// Or do it on one line.  

row.createCell((short)1).setCellValue(1.2);  

row.createCell((short)2).setCellValue("This is a string");  

row.createCell((short)3).setCellValue(true);  

// Write the output to a file  

FileOutputStream fileOut = new FileOutputStream("workbook.xls");  

wb.write(fileOut);  

fileOut.close();  

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66527.html

相关文章

  • POI如何高效导出百万级Excel数据?

    摘要:阅读原文如何高效导出百万级数据在一个具有统计功能的系统中,导出功能几乎是一定的,如何导出导出的数据有多少如何高效的导出简介什么是就不用介绍了,这里主要说明不同版本下每个下的行列限制。 阅读原文:POI如何高效导出百万级Excel数据? 在一个具有统计功能的系统中,导出excel功能几乎是一定的,如何导出excel?导出的数据有多少?如何高效的导出? Excel简介什么是excel就不用...

    lemanli 评论0 收藏0
  • POI的使用及导出excel报表

    摘要:的使用及导出报表首先,了解是什么一基本概念是软件基金会的开放源码函式库,提供给程序对格式档案读和写的功能。 POI的使用及导出excel报表 首先,了解poi是什么? 一、基本概念 ​ Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 二、基本结构 ​ HSSF - 提供读写...

    Ilikewhite 评论0 收藏0
  • 使用ApachePOI生成XLSX格式Excel文档大数据量导出

    摘要:最近在做使用进行大数据量导出,现在把其整理成工具类供大家参考。版本增加了前缀为相关的类,主要用于大数据量的写入与读取。 最近在做使用POI进行大数据量导出,现在把其整理成工具类供大家参考。Apache POI 3.8版本增加了前缀为SXSSF相关的类,主要用于大数据量的写入与读取。关于ApachePOI导出Excel基本的使用我这里就不详解了,具体参考: Apache POI官方网站...

    Shihira 评论0 收藏0
  • Java导出excel文件

    摘要:效果预览导出文件效果点击下载弹出框效果代码总览为公司业务代码,大多为从缓存或者数据库中获取导出数据,不影响导出功能。导出导出导出所有在线离线用户成功导出所有在线离线用户失败引用导出表格 需求 将每个xmpp机房的在线/离线用户信息导出到Excel表格中(定时任务+网页按钮),并在网页上提供下载按钮进行下载。 效果预览 showImg(https://segmentfault.com/i...

    import. 评论0 收藏0
  • 慕课网_《解密JAVA实现Excel导入导出》学习总结

    时间:2017年07月06日星期四说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:无学习源码:https://github.com/zccodere/s... 第一章:课程介绍 1-1 预备知识 基础知识 struts2框架(上传下载功能) xml解析技术(导入模板) JQuery EasyUI(前台美观) 课程目录 实现方式 定制导入模版 导入文件 导...

    enrecul101 评论0 收藏0

发表评论

0条评论

RayKr

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<