poi导出excel的心得

最近公司给了一个需求,就是将自己数据导出到excel,当时听了还是感觉有点压力的,不过后面都解决了,回想这几天收获很多,今天便写一篇博客说一些我解决这个需求吧。
本人的思路是先上代码,然后在讲业务逻辑,废话不多说,上代码
第一步引入poi依赖
在这里插入图片描述
第二步 写我们封装的实体类,execl实体类很多,在网上都能找到,但是我自己却是蒙蔽了许多,因为网上很多都是坑,然后自己看网上代码有点蒙蔽,下班了然后自己看了一些视频,才觉得很简单,
utils实体类代码
public class ExcelTest {
//test01导出功能
public void excelin(List shopBalances,Integer direction) throws Exception{
// 创建新的Excel 工作簿
Workbook workbook = new HSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值 Sheet0
//Sheet sheet = workbook.createSheet();
// 如要新建一名为"会员登录统计"的工作表,其语句为:

    Sheet sheet = workbook.createSheet("我的财务中心表");

    // 创建行(row 1)
    Row row1 = sheet.createRow(0);

    // 创建单元格(col 1-1)
    Cell cell10 = row1.createCell(0);
    cell10.setCellValue("对方姓名");

    // 创建单元格(col 1-2)
    Cell cell11= row1.createCell(1);
    cell11.setCellValue("账单分类");

    // 创建单元格(col 1-3)
     Cell cell12=row1.createCell(2);
    cell12.setCellValue("收款方式");

    // 创建单元格(col 1-4)
     Cell cell13=row1.createCell(3);
    cell13.setCellValue("账单标题");

    //创建单元格(col 1-5)
     Cell cell14 =row1.createCell(4);
    cell14.setCellValue("入账时间");

    //创建单元格(col 1-5)
      Cell cell15=row1.createCell(5);
    cell15.setCellValue("收入金额");
    List<ShopBalance> list = shopBalances;
    for (int i = 0; i < list.size(); i++){
        row1 = sheet.createRow(i+1);
        ShopBalance stu = list.get(i);
        // 第四步,创建单元格,并设置值
        row1.createCell(0).setCellValue(stu.getShopName());
        row1.createCell(1).setCellValue(stu.getTypeName());
        row1.createCell(2).setCellValue(stu.getPaymentType());
        row1.createCell(3).setCellValue(stu.getTitle());
        cell11 = row1.createCell(4);
        cell11.setCellValue(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(stu.getAddDate()));
        //将bigdecmal类型转换为double类型
        double payment = stu.getPayment().doubleValue();
         row1.createCell(5).setCellValue(payment+"0");
    }
    // 新建一输出文件流(注意:要先创建文件夹)
    if(direction.equals(1)){
        FileOutputStream out = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\我的收入.xls");
        // 把相应的Excel 工作簿存盘
        workbook.write(out);
        out.flush();
        // 操作结束,关闭文件
        out.close();
    }else {
        FileOutputStream out = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\我的支出.xls");
        // 把相应的Excel 工作簿存盘
        workbook.write(out);
        out.flush();
        // 操作结束,关闭文件
        out.close();
    }

    System.out.println("文件生成成功");
}
这个我自己弄的,下面就是传入我们需要导入数据库的参数,数据库增删改查的几个方法查询的数据直接放入在我的这个实体类方法里
测试代码:
@RequestMapping(value = "/export")

public AjaxResult exportSysTest(
@RequestParam(value = “Direction”, required = false) Integer direction
) {
ExcelTest excelTest = new ExcelTest();
//定义一个文件名
try {
if (“0”.equals(direction)&&direction.equals(null)){
return AjaxResult.GetResult(“输入的Direction不能为空”);
}
if (direction.equals(1)){
ShopBalanceExample example=new ShopBalanceExample();
ShopBalanceExample.Criteria criteria = example.createCriteria();
//数据库里面Direction有两个状态1收入,2支出
criteria.andDirectionEqualTo(direction);
List shopBalances = shopBalanceMapper.selectByExample(example);
excelTest.excelin(shopBalances,direction);

    }else {
        ShopBalanceExample example=new ShopBalanceExample();
        ShopBalanceExample.Criteria criteria = example.createCriteria();
        //数据库里面Direction有两个状态1收入,2支出
        criteria.andDirectionEqualTo(direction);
        List<ShopBalance> shopBalances = shopBalanceMapper.selectByExample(example);
        excelTest.excelin(shopBalances,direction);
    }

} catch (Exception e) {
    e.printStackTrace();
    return AjaxResult.GetResult("失败");
}
return AjaxResult.GetResult("成功");
  }

}
最后导出效果,
在这里插入图片描述
这个接口算是写好了。
整个流程下来我遇到一些问题点想和大家一起分享,首先这些代码都不是很难,主要还是我太菜了,最后实现了,还是准备写一下心得和感悟。
遇到的问题点
1 poi依赖我引入方式错了,导致我仓库没生成poi的jar
2在导出数据的时候发现导入的格式不对,也就是我写表格的代码哪里,在网上看了很多,但是都没怎么解决,后来是我自己一步步测代码测出来的,
比如说我们的模板,一开是我new了一个对象,但是生出来的模板只有一个,后来我想是不是覆盖问题,因为我列名有6个,我就new了6个列名对象最后模板出来了,比较激动
3这个问题有点想抽我自己,我导出的数据我有一列单元,对方姓名那一列下面全是空,当时我第一反应是表格代码格式是不是错了,我找了半天没思路,然后看到excel表里面才5个有值,有一个列名为空,我才反应过来是不是我数据库那里面都没存值,我立马就去看了数据库,果然哪里没值
总结:
还是自己太菜了,poi不熟悉,io流没怎么用,忘记了。暴露出我许多缺点,古人有越王勾践卧薪尝胆,我只能苦逼写文以此明之志。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值