Java中使用POI导出excel文件

  • 前言
    • 需要的jar包
    • 上代码
      • 使用JDBC连接数据库获取导出的数据
        • MySQL数据库表结构
        • 实体类代码
        • DBHelper连接MySQL数据库
        • 数据操作Dao类
      • 导出excel文件的工具类代码
      • 运行测试代码
      • 运行结果
  • 总结

前言

在系统开发中最常用的功能就是列表数据的导出了,Java中常用的方法是用apache的POI进行操作的,现在我们就一起来学习下POI导出excel文件的基本用法。

需要的jar包

上代码

使用JDBC连接数据库获取导出的数据

MySQL数据库表结构

实体类代码

package com.cgp.excelexport.pojo;public class Person {private Long id;private String name;private int age;private String phone;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}@Overridepublic String toString() {return "Person{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", phone='" + phone + '\'' +'}';}
}

DBHelper连接MySQL数据库

package com.cgp.excelexport.utils;import java.sql.Connection;
import java.sql.DriverManager;public class DBHelper {//MySQL数据库驱动private static final String driver = "com.mysql.jdbc.Driver";//数据库连接地址private static final String url = "jdbc:mysql://localhost:3306/test_1?useUnicode=true&characterEncoding=UTF-8";//数据库用户名private static final String username = "root";//数据库密码private static final String password = "root";//声明数据库连接对象private static Connection conn = null;//静态代码块先加载驱动static {try {Class.forName(driver);} catch (ClassNotFoundException e) {e.printStackTrace();}}//创建数据库连接,供外部调用public static Connection getConnection() throws Exception{if(conn==null){//连接数据库conn = DriverManager.getConnection(url, username, password);return conn;}return conn;}
}

这里有静态代码块,静态方法和静态的常量,小伙伴们可以思考下这三个在类中加载顺序,在下面的评论区互相讨论下。

数据操作Dao类

package com.cgp.excelexport.dao;import com.cgp.excelexport.pojo.Person;
import com.cgp.excelexport.utils.DBHelper;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;public class PersonDao {private static Connection conn = null;private static PreparedStatement pst = null;private static ResultSet rs = null;public List<Person> getPersonList() {List<Person> list = new ArrayList<>();try {conn = DBHelper.getConnection();String sql = "select * from person";pst = conn.prepareStatement(sql);rs = pst.executeQuery();while (rs.next()) {Person person = new Person();person.setId(rs.getLong(1));person.setName(rs.getString(2));person.setAge(rs.getInt(3));person.setPhone(rs.getString(4));list.add(person);}} catch (Exception e) {e.printStackTrace();}return list;}

我这里使用最原始的JDBC来连接数据库,大家现实开发中会用到mybatis这种持久化框架,请以实际开发为准。

导出excel文件的工具类代码

package com.cgp.excelexport.utils;import com.cgp.excelexport.pojo.Person;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;public class ExportExcelUtil {public static void ExportExcel(List<Person> list, String[] titles) {SXSSFWorkbook wb = new SXSSFWorkbook(100);Sheet sheet = wb.createSheet();Row row = sheet.createRow(0);//给单元格设置样式CellStyle cellStyle = wb.createCellStyle();Font font = wb.createFont();//设置字体大小font.setFontHeightInPoints((short) 12);//设置字体加粗font.setBold(true);//给字体设置样式cellStyle.setFont(font);//设置单元格背景颜色cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//设置单元格填充样式(使用纯色背景颜色填充)cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);for (int i = 0; i < titles.length; i++) {Cell cell = row.createCell(i);cell.setCellValue(titles[i]);cell.setCellStyle(cellStyle);//设置列的宽度sheet.setColumnWidth(i, 200*50);}for (int j = 0; j < list.size(); j++) {Row rowData = sheet.createRow(j + 1);Person person = list.get(j);Cell cell = rowData.createCell(0);cell.setCellValue(person.getId());Cell cell2 = rowData.createCell(1);cell2.setCellValue(person.getName());Cell cell3 = rowData.createCell(2);cell3.setCellValue(person.getAge());Cell cell4 = rowData.createCell(3);cell4.setCellValue(person.getPhone());}String fileName = "D:/人员信息导出.xlsx";try {FileOutputStream fileOutputStream = new FileOutputStream(fileName);wb.write(fileOutputStream);wb.close();} catch (IOException e) {e.printStackTrace();}}
}

运行测试代码

package com.cgp.excelexport.test;import com.cgp.excelexport.dao.PersonDao;
import com.cgp.excelexport.pojo.Person;
import com.cgp.excelexport.utils.ExportExcelUtil;import java.util.List;public class ExportExcelTest {public static void main(String[] args) {PersonDao personDao = new PersonDao();List<Person> list = personDao.getPersonList();String[] titles = {"编号","姓名","年龄","手机号"};ExportExcelUtil.ExportExcel(list, titles);System.out.println("人员数据导出成功!");}
}

运行结果



可以看出excel文件成功的导出到了D盘目录下面

总结

以上就是Java中使用JDBC连接数据库获取表数据,使用POI导出excel文件的基本方法,本文仅供参考,请以实际开发业务为准!

Java中使用POI导出excel文件相关推荐

  1. springboot中使用poi导出excel文件(亲测实现了第一个功能)

    1.POI简介 Jakarta POI 是一套用于访问微软格式文档的Java API. 组件HWPF用于操作Word的; 组件HSSF用于操作Excel格式文件. 2.常用组件 HSSFWorkboo ...

  2. Java:使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开

    使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开 问题 方案 问题 在SpringBoot项目中,使用POI导出查询结果至Excel文件中,成功导出后打开Excel文件 ...

  3. java中使用poi导出Excel详解,kotlin音标

    到这个问题,可以设置encoding为双字节.POI可以到www.apache.org下载到. 编译好的jar主要有这样4个:poi包, poi Browser包, poi hdf包, poi hss ...

  4. Java之使用poi导出excel文件,并为特定单元格加锁

    使用 SXSSFWorkbook 进行Excel导出下载 注意:测试结果没有达到预期,那换个方式试试 参考:1.https://blog.csdn.net/aiza4108/article/detai ...

  5. java中使用jxl导出excel表格的工具类(全网唯一亲测可用,在原来基础上扩展)

    java中后台导出excel的话,有两种方案,一是使用poi(不过由于是windows版本的,存在不兼容,但功能更多,更强大),而是使用jxl(纯java编写,不过兼容,简单一些),可以设置输出的ex ...

  6. POI导出Excel文件时,单元格内文字竖排、横排默认不展示,必须点击一下问题解决

    //创建单元格样式设置CellStyle cs_vertical = wb.createCellStyle();//设置字体Font textFont = wb.createFont();textFo ...

  7. 解决poi导出Excel文件打开警告(一)

    项目中需要导出Excel报表,使用poi导出Excel文件,添加依赖 <dependency><groupId>org.apache.poi</groupId>&l ...

  8. Yii框架中使用PHPExcel导出Excel文件

    Yii框架中使用PHPExcel导出Excel文件http://www.cnblogs.com/wgx214/p/3709521.html 转载于:https://www.cnblogs.com/fl ...

  9. DataTable中的数据导出Excel文件

    DataTable中的数据导出Excel文件 View Code ///<summary> /// 将DataTable中的数据导出到指定的Excel文件中 ///</summary ...

  10. 在vue中把数据导出Excel文件

    在vue中把数据导出Excel文件 第一次尝试写文章 在vue中把数据导出成Excel格式的文件,话不多,上代码: 第一步我们要先安装几个集成的插件 npm install -S file-saver ...

最新文章

  1. session存储在redis/memcache/mysql
  2. Flex与.NET互操作(三):基于WebService的数据访问(下)
  3. python编程基础 张健 pdf_Python编程基础
  4. 科学家用计算机模拟后确认 60个n原子,科学家用计算机模拟后确认,60个N原子可结合成N60分子。下列关于N60的叙述中正确的是A.N60是一种新型的化合物...
  5. android编辑框最大字数,TextView 限制最大行数、最小行数、字数超过“...”表示...
  6. java版模拟经营_我的世界JAVA版
  7. c# task添加顺序_关于c#:Task和async等待所需的指导
  8. php中的oop,php oop有什么用?
  9. 人车物跟踪在另外的机器上跑不起来
  10. 使用Calender类获取系统时间和时间和运算
  11. 网站使用思源黑体siyuanheiti
  12. 用什么软件可以编辑pdf文件
  13. matlab 二值图像黑白颠倒,白天不懂夜的黑,为你开启PS黑白颠倒魔法。
  14. Neo4j - CQL使用
  15. 为什么总是黑php,怎么都在黑PHP?
  16. src refspec master does not match any问题
  17. 什么是字节码?采用字节码的最大好处是什么?
  18. 【实验】串口通信小试
  19. mysql 权限管理 针对表的字段 级别 授权 columns_priv表
  20. 2022年第一篇C语言50行代码制作爱心电子相册

热门文章

  1. Matlab R2014a安装教程
  2. Visio使用注意事项
  3. mac 安装mysql5.7_mac 安装 mysql 5.7
  4. 英特尔 英特尔 显示器音频_每日新闻摘要:ZombieLoad是对英特尔PC的最新威胁
  5. 截图工具当前未在计算机上运行 请重启_截图并订在屏幕上 用作对比、对照、参考,非常实用...
  6. 简单介绍三级分销系统开发源码
  7. mac版本的pycharm如何设置成中文
  8. python门店会员管理系统_python---CRM用户关系管理
  9. potato土豆引流脚本,potato引流软件工具
  10. 手动清理Windows系统目录