本文主要是将数据库取出的数据按照自定义的行列格式导出到excel中,POI则是实现我们需求所用到的技术。

POI介绍

使用spring boot导入相关依赖

获取数据(自行处理)

完整代码实例:创建excel,将数据写入excel

1.POI介绍

要想使用POI对Excel进行操作,我们需要先了解一下Excel的两种版本:一种是97-2003版本扩展名是“.xls”;一种是2007版本扩展名是“.xlsx”。POI分别针对这两种版本需要导入的jar包不同,操作类也不同。

HSSF:操作的是.xls;XSSF:操作的是.xlsx。

不管哪种操作,基本思路都是一致,先要对应一个Excel文件,然后在对应文件中的某个sheet,接下来在操作某一行和这一行中的某一列。对应POI包:文件(webbook)、sheet(sheet)、行(row)和具体单元格(cell)。

2.通过spring boot导入依赖

为了使用java操控excel,需要将相关的jar引入,对于HSSF只需要导入POI.jar,而XSSF则需要导入四个jar,具体导入见下面代码

将代码块的依赖放入工程的pom.xml文件中就可以了。

工程不是spring boot的需要手动将下面jar导入。

org.apache.poi

poi

RELEASE

org.apache.xmlbeans

xmlbeans

2.6.0

dom4j

dom4j

1.6.1

org.apache.poi

poi

3.9

org.apache.poi

poi-ooxml

3.9

3完整代码实例:简单的创建excel,将数据写入excel

依赖导入成功之后,就可以开始进行excel的生成。详细步骤在代码注释中有说明。

/**

* 创建excel

* @param listresult 是需要写入excel中的数据,通过map中的k-v来将数据写入excel

* @return

*/

private XSSFWorkbook createUserListExcel(List> listresult){

// 1.创建HSSFWorkbook,一个HSSFWorkbook对应一个Excel文件

XSSFWorkbook wb = new XSSFWorkbook();

// 2.在workbook中添加一个sheet,对应Excel文件中的sheet

XSSFSheet sheet = wb.createSheet("sheet1");

// 3.设置表头,即每个列的列名

String[] titel = {"rowName1","rowName2","rowName3","rowName4"};

// 3.1创建第一行

XSSFRow row = sheet.createRow(0);

// 此处创建一个序号列

row.createCell(0).setCellValue("序号");

// 将列名写入

for (int i = 0; i < titel.length; i++) {

// 给列写入数据,创建单元格,写入数据

row.createCell(i+1).setCellValue(titel[i]);

}

// 写入正式数据

for (int i = 0; i < listresult.size(); i++) {

// 创建行

row = sheet.createRow(i+1);

// 序号

row.createCell(0).setCellValue(i+1);

// 医院名称

row.createCell(1).setCellValue(listresult.get(i).get("rowKey1").toString());

sheet.autoSizeColumn(1, true);

// 业务类型

row.createCell(2).setCellValue(listresult.get(i).get("rowKey2").toString());

// 异常信息

row.createCell(3).setCellValue(listresult.get(i).get("rowKey3").toString());

// 数量

row.createCell(4).setCellValue(listresult.get(i).get("rowKey4").toString());

}

/**

* 上面的操作已经是生成一个完整的文件了,只需要将生成的流转换成文件即可;

* 下面的设置宽度可有可无,对整体影响不大

*/

// 设置单元格宽度

int curColWidth = 0;

for (int i = 0; i <= titel.length; i++) {

// 列自适应宽度,对于中文半角不友好,如果列内包含中文需要对包含中文的重新设置。

sheet.autoSizeColumn(i, true);

// 为每一列设置一个最小值,方便中文显示

curColWidth = sheet.getColumnWidth(i);

if(curColWidth<2500){

sheet.setColumnWidth(i, 2500);

}

// 第3列文字较多,设置较大点。

sheet.setColumnWidth(3, 8000);

}

return wb;

}

/**

* 用户列表导出

* @param userForm

*/

private String downUserList(List> listresult){

// getTime()是一个返回当前时间的字符串,用于做文件名称

String name = getTime();

// csvFile是我的一个路径,自行设置就行

String ys = csvFile + "//" + name + ".xlsx";

// 1.生成Excel

XSSFWorkbook userListExcel = createUserListExcel(listresult);

try{

// 输出成文件

File file = new File(csvFile);

if(file.exists() || !file.isDirectory()) {

file.mkdirs();

}

// TODO 生成的wb对象传输

FileOutputStream outputStream = new FileOutputStream(new File(ys));

userListExcel.write(outputStream);

outputStream.close();

}catch(Exception e){

e.printStackTrace();

}

return name;

}

因为工作中多次用到了这个,所以简单的记录一下,如有问题,欢迎指正。

点击进入简书地址

点击进入csdn地址

java poi 添加列数据_java使用POI将数据导出放入Excel相关推荐

  1. POI动态字段导出Excel-导入Excel,解析加密数据再导出

    一.POI动态字段导出Excel-导入Excel 1.直接导出Excel public static void main(String[] args) throws IOException { // ...

  2. SpringBoot将数据放入Excel里面通过浏览器直接下载到本地

    SpringBoot将数据放入Excel里面通过浏览器直接下载到本地 说明 依赖 代码 效果 说明 以前做java方面的导出下载的时候,都是先把数据导出到linux服务器里面的某个目录,然后才是通过浏 ...

  3. java取网页数据_Java抓取网页数据(原来的页面+Javascript返回数据)

    转载请注明出处. 有时候因为种种原因.我们须要採集某个站点的数据.但因为不同站点对数据的显示方式略有不同! 本文就用Java给大家演示怎样抓取站点的数据:(1)抓取原网页数据.(2)抓取网页Javas ...

  4. java导入excel数据_java使用POI批量导入excel数据的方法

    一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取e ...

  5. java excel 列数_JAVA使用POI获取Excel的列数与行数

    前言 报表输出是Java应用开发中经常涉及的内容,而一般的报表往往缺乏通用性,不方便用户进行个性化编辑.Java程序由于其跨平台特性,不能直接操纵Excel.因此,本文探讨一下POI视线Java程序进 ...

  6. java hssfcell 单元格样式_Java使用poi进行对Excel的操作

    Java使用poi进行对Excel的操作 废话不多说,直接进入正题 先看看目录结构 一.将Excel表中的数据通过List集合打印在就控制台 二.将数据库中的数据导入的Excel表中 上述两条在这里统 ...

  7. poi 获取excel列宽度_JAVA使用POI获取Excel的列数与行数

    JAVA使用POI获取Excel的列数与行数 发布于 2020-8-19| 复制链接 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Ja ...

  8. java自动生成项目编号_java - Apache POI,在同一文档中创建项目符号点和编号列表 - 堆栈内存溢出...

    我试图用apache poi创建一个既包含圆点又包含编号列表的文档. 我想得到这样的结果. 名单: 清单1项目0 清单1项目1 清单1项目2 列表后的段落. 清单2: 清单2项目0 清单2项目1 清单 ...

  9. JAVA怎么才能强制换行_Java利用POI生成Excel强制换行(转载)

    使用POI创建一个简单的 myXls.xls 文件 常用的包为 org.apache.poi.hssf.usermodel.*; 例子: import java.io.*; import org.ap ...

最新文章

  1. pycharm中导出依赖包 在pycharm下边的Terminal打开命令行终端执行命令
  2. 机器学习奠基人Michael Jordan:下代技术是融合经济学,解读2项重要进展(含PPT)...
  3. 中小型研发团队架构实践:电商如何做企业总体架构?
  4. building commercial website using Microsoft tech stack
  5. mysql connector读后记
  6. 第八章指针实验成绩汇总
  7. django基础 第一章 环境搭建
  8. html 如何写退出程序,vb点击关闭窗口 单击退出程序的VB代码怎么写
  9. Mac大小写切换需长按capslock键解决办法
  10. 通俗的解释机器学习的预测原理
  11. 那些惊艳到你了的古诗词?
  12. scp 保留文件属组_SCP命令用法详解-hdparm工具参数详解-改变文件组命令chgrp和改变文件属主命令chown_169IT.COM...
  13. note3+android+5.1,最新的安卓5.1.1 ROOT教程(不需要刷第三方内核)
  14. java 自幂数_JAVA 编程01:用JAVA语言实现所有自幂数的输出
  15. python快速排名seo代码_python打造seo必备工具-自动查询排名
  16. Java进阶_3 注解、APT
  17. 京东2017年4月7日笔试编程原题解析(站队、终结者C)
  18. 2021年中国旅游产业整体现状分析,疫情后市场恢复不及预期,相较疫情前仍有差距「图」
  19. 启明星辰携手联想云 共建企业云服务新生态
  20. Windows在局域网内无法访问Linux服务器上的web项目问题

热门文章

  1. CreateFont比CreateFontIndirect好用啊~
  2. 解决Vivado implementation拥塞的策略方法(一)
  3. mysql中vlookup函数_excel精确匹配vlookup用法(数据库属性匹配)
  4. 【安卓】——Autofill Framework(自动填写)用法详解
  5. Java使用Spire将网页保存为Word并去除Evaluation Warning水印方案
  6. 校验MD5值是什么意思?
  7. pikachu之sql注入
  8. 查看 Docker 容器的名字空间 .
  9. web课程设计网页规划与设计----公司官网带轮播图 (页面精美 1页)
  10. 高新技术企业避坑解读之“盲目跟风”