讲点废话,吐个槽

最近有个要求,表格导出,之前也搞过,但觉得每次都到处找太麻烦了,有些大佬,展示部分代码,看着挺多个类,复制粘贴运行就报错,一检查,少个关键类,没办法跑,要么就是标注个什么什么大全,下载打钱,虽然白嫖不好,毕竟别人学习总结成果,但我爽啊,一直白嫖一直爽,咱自己翻了点资料,总结了一下导出表格大概也就两种情况

标准表格

如果导出的这种表格,那么就是很简单的事,上代码

准备

pom文件

        <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>

实体类

@Data
public class Member {/***  学号*/private Integer code;/***  姓名*/private String name;/***  年龄*/private Integer age;/***  生日*/private Date birth;

工具类方法

    public static void createExcel(Map<String, List<String>> map, String[] strArray) {// 创建一个webbook,对应一个Excel文件HSSFWorkbook wb = new HSSFWorkbook();// 在webbook中添加一个sheet,对应Excel文件中的sheetHSSFSheet sheet = wb.createSheet("sheet1");// 在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制shortHSSFRow row = sheet.createRow(0);// 添加标题行HSSFCell cell = null;for (int i = 0; i < strArray.length; i++) {// 获取行内对应单元格cell = row.createCell(i);// 单元格赋值cell.setCellValue(strArray[i]);}// 写入实体数据,实际应用中这些数据从数据库得到,list中字符串的顺序必须和数组strArray中的顺序一致int i = 0;for (String str : map.keySet()) {// 除去标题行,遍历获取后面行号对象row = sheet.createRow(i + 1);// 获取要添加到单元格的集合数据List<String> list = map.get(str);// 遍历当前行内所有单元格for (int j = 0; j < strArray.length; j++) {// 创建单元格,并设置值row.createCell(j).setCellValue(list.get(j));}// 第六步,将文件存到指定位置try {FileOutputStream fout = new FileOutputStream("D:/国家机密.xls");wb.write(fout);fout.close();} catch (Exception e) {e.printStackTrace();}i++;}}

测试代码

/*** @Author: wanyuan* Date: 2020/8/26 16:23*/
public class DownloadExcel {public static void main(String[] args) {Map<String, List<String>> memberMap = getMember();String[] strArray = excelTitle();ExcelUtil.createExcel(memberMap, strArray);}/*** 初始化数据,将会被存储到excel表格中** @return* @throws Exception*/private static Map<String, List<String>> getMember() {List<Member> list = new ArrayList<Member>();Map<String, List<String>> map = new HashMap<String, List<String>>();SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");try {Member user1 = new Member(1, "赵丽颖", 18, df.parse("2002-10-16"));Member user2 = new Member(2, "娜美", 20, df.parse("2000-08-19"));Member user3 = new Member(3, "汉克库", 25, df.parse("1995-11-22"));list.add(user1);list.add(user2);list.add(user3);for (int i = 0; i < list.size(); i++) {ArrayList<String> members = new ArrayList<String>();members.add(list.get(i).getCode() + "");members.add(list.get(i).getName());members.add(list.get(i).getAge() + "");members.add(df.format(list.get(i).getBirth()));map.put(list.get(i).getCode() + "", members);}} catch (ParseException e) {e.printStackTrace();}return map;}/*** 创建标题行数据*/public static String[] excelTitle() {String[] strArray = { "学号", "姓名", "年龄", "生日" };return strArray;}
}

输出结果

非正常表格

非常简单的一个例子,填写的简历,让导出成为表格,那就不是循环遍历,挨着存入的了,而是需要人为控制表格的填写

所以需要一个模板文件,如:

工具类

    public static void readExcel(String[] strArray){try{// Excel模板文件路径String temlateRealPath = "D:/国家机密.xls";//读取模板文件创建Excel表格对象HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(new File(temlateRealPath)));// 获取模板文件第一个sheet,对应Excel文件中的sheetHSSFSheet sheet = workbook.getSheetAt(0);// 根据要求,可以得出结论,我们需要填写的单元格是2-B,2-D,3-B,3-D// 获取对应行号HSSFRow row = sheet.getRow(1);// 对应单元格填入数据row.getCell(1).setCellValue(strArray[0]);row.getCell(3).setCellValue(strArray[1]);row = sheet.getRow(2);row.getCell(1).setCellValue(strArray[2]);row.getCell(3).setCellValue(strArray[3]);try {// 输出流FileOutputStream fout = new FileOutputStream("D:/维多利亚的秘密.xls");workbook.write(fout);fout.close();} catch (Exception e) {e.printStackTrace();}}catch (Exception e){e.printStackTrace();}}

测试代码

/*** @Author: wanyuan* Date: 2020/8/26 16:23*/
public class DownloadExcel {public static void main(String[] args) {String[] strArray = excelTitle();ExcelUtil.readExcel(strArray);}/*** 准备数据*/public static String[] excelTitle() {String[] strArray = { "赵丽颖", "18", "160", "2002-10-16" };return strArray;}
}

输出结果

总结

  • 标准表格导出很简单,高兴就好
  • 奇奇怪怪的表格导出,没发现其他什么好一点的办法,如果有大佬知道别的好办法,可以告诉小弟一声
  • 第二个工具类导出方法具体逻辑根据模板文件来定,但愿你们没有这种需求(PS:对提这个需求的产品经理说句,一路走好,愿天堂没有痛苦,愿天堂没有纷争)

【工具类】JAVA POI 代码导出表格的两种办法(代码全注释,小白也不怕)相关推荐

  1. Java工具类 —— Java POI 4.X 的Excel基本操作

    Excel报表操作在日常办公和生活中应用非常广泛,今天我们来看看Java是怎么操作Excel的. 先分享一下工具类:工具类ExcelOperators,点击下载 欢迎下载使用,更希望自己动动手,写一下 ...

  2. java poi pdf 导出

    java poi pdf 导出 (java poi pdf导出 文字+图片两张放置一行) 思路:流传入图片 ,pdf没有行的概念,只有列即为一行,两张图片可以先建立一列在一列总再建立两列各放置一张图片 ...

  3. 「Java工具类」pdf导出工具类java导出pdf文件工具类

    介绍语 本号主要是Java常用关键技术点,通用工具类的分享:以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+d ...

  4. java练习(数组工具类的封装)[目前写过最长的代码,虽然不难]

    java练习(数组工具类的封装)[目前写过最长的代码,虽然不难] package myUtil.arrayUtil;public class ArraysUtil {/*** 升序排列一个byte数组 ...

  5. java 中间容器 表格_【JAVA SE基础篇】45.迭代器、Collections工具类以及使用容器存储表格...

    本文将要为您介绍的是[JAVA SE基础篇]45.迭代器.Collections工具类以及使用容器存储表格,具体完成步骤: 1.迭代器 迭代器为我们提供了统一遍历容器(List/Map/Set)的方式 ...

  6. ApachePOI导出exce,设置单元格风格的属性和设置字体风格的属性的两个工具类,POI宽度和excel 像素转换

    设置单元格风格的属性和设置字体风格的属性的两个工具类,POI宽度和excel 像素转换 /*** 功能:设置单元格风格的属性* */public static HSSFCellStyle SetCel ...

  7. java poi word导出

    java poi word导出 (含有文字,图像) 导出word效果如下: 思路:建立预期导出word效果,设置为模板,然后填充对应信息,注意,加粗,居中等一些图片,文字格式预先设置好.然后进行文字或 ...

  8. Java解决Excel导出大批量数据(附上测试代码)

    记录一次项目中使用POI导出Excel报错的修改方案. 参考了作者:happyljw的文章 JAVA使用POI如何导出百万级别数据,对代码进行封装扩展.由于项目时间太紧,并未对写的代码进行严格测试,遇 ...

  9. C#底层库--操作Excel帮助类(读取、导出表格)

    系列文章 C#底层库–记录日志帮助类 本文链接:https://blog.csdn.net/youcheng_ge/article/details/124187709 C#底层库–MySQL脚本自动构 ...

最新文章

  1. 数据分析软件python 对电脑的要求-用于数据分析的BI工具还是python?
  2. reuse project css less path folder hierarchy issue
  3. 递归调用方法时栈内存是如何变化的?(使用内存图演示递归调用过程)
  4. .NET实现之(自动更新
  5. EIGRP单边邻居——认证
  6. php+分针和时针重合,关于时针和分钟重合次数的计算
  7. c++折线平移算法_【MITA周刊】第十五周:聚类算法
  8. java hex to ascii_使用java实现hex和ascii码的转换
  9. 研究了EXCEL的行高问题
  10. php 获取文件名 行号,PHP – 找到文件中的字符串,然后显示它的行号
  11. hive 窗口函数(开窗函数)
  12. mac抓包工具charles破解版安装及简单使用
  13. spring常见用法之安全模块(注册登录模块)
  14. python 实现批量抠图
  15. 大数据之实战足球盘口、凯利、必发和预测结果分析
  16. GUI提示功控件,LVGL『Label标签控件』介绍
  17. Daily Scrum Meeting 11.05
  18. Python笔记_07_列表的相关操作_列表相关函数_深浅拷贝_字典相关函数_集合相关函数_冰冻集合
  19. 人脸识别方案(一)-ocr
  20. Dropbear替代Openssh-ssh client使用

热门文章

  1. excel表格最大行数
  2. 税务系统问题分析 来自CSNA论坛
  3. 转帖:RIA(Rich Internet Application,富互联网应用系统)
  4. div css图片列表实例
  5. Hibernate一对多单向关联和双向关联映射方法及其优缺点
  6. Android 启动过程详解
  7. Android Studio 1.01 + BlueStacks 开发调
  8. android开发调用照相机
  9. 现在c++都转go了
  10. 计算机网络:三层ISP结构