Java实现数据导出到excel文件
使用的依赖:Apache提供的poi包
首先导入依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.2</version>
</dependency>
核心实现
//创建一个工作簿,也就是Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
//创建一个工作表
HSSFSheet sheet = wb.createSheet();
//创建一行
HSSFRow row = sheet.createRow(0);
//创建这一行的第一个单元格
HSSFCell cell = row.createCell(0);
//设置单元格的内容
cell.setCellValue("你好!");
//输出文件
//创建字节输出流
File file = new File("D://excel.xls");
FileOutputStream fos = new FileOutputStream(file);
wb.write(fos);
fos.flush();
fos.close();
这个工作表指的是这个
运行结果
现在你完成了往一个单元格里写数据,如果想要做成一个表格,那就需要循环
例如现在有一个需求:现在要统计学生的签到情况,需要把学生的签到记录导出到Excel表中
这里我们用假数据模拟,首先是实体类
public class CheckExcel {
private String name;//姓名
private Integer number;//学号
private Date checkTime;//签到时间
}
主体程序
public class ToExcel {
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void getExcel(List<CheckExcel> object) {
//创建一个工作簿,也就是Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
//创建一个工作表
HSSFSheet sheet = wb.createSheet();
//第一行,标题
HSSFRow row0 = sheet.createRow(0);
HSSFCell cell0 = row0.createCell(0);
cell0.setCellValue(object.get(0).getCheckName() + "签到统计表");
//第二行,表头
HSSFRow row1 = sheet.createRow(1);
row1.setRowStyle(style);
row1.createCell(0).setCellValue("姓名");
row1.createCell(1).setCellValue("学号");
row1.createCell(2).setCellValue("签到时间");
//表中数据
int rowInt = 2;
for (CheckExcel obj : object) {
HSSFRow row = sheet.createRow(rowInt++);
int cellInt = 0;
row.createCell(cellInt++).setCellValue(obj.getName());
row.createCell(cellInt++).setCellValue(obj.getNumber());
row.createCell(cellInt).setCellValue(sdf.format(obj.getCheckTime()));//将日期转换成字符串,要不然存的是一个时间戳
}
try {
//输出文件
//创建字节输出流
File file = new File("D://excel.xls");
FileOutputStream fos = new FileOutputStream(file);
wb.write(fos);
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("ToExcel.getExcel");
System.out.println("IO出异常了");
}
}
public static void main(String[] args) {
List<CheckExcel> stu = new ArrayList<>();
stu.add(new CheckExcel("学生1", 1001, "高等数学", new Date()));
stu.add(new CheckExcel("学生2", 1002, "高等数学", new Date()));
stu.add(new CheckExcel("学生3", 1003, "高等数学", new Date()));
getExcel(stu);
}
}
运行结果
但是细心的你会发现这个表格没有居中,看起来样式很不好看,这就需要用到HSSFCellStyle
设置表格的样式,具体样式设置有很多就不给大家一一演示了,这里放一个链接供大家去参考
https://poi.apache.org/apidocs/dev/org/apache/poi/hssf/usermodel/HSSFCellStyle.html
这是官方提供的API,所有方法都在里面。
热门相关:恭喜你被逮捕了 后福 买妻种田:山野夫君,强势宠! 不科学御兽 本法官萌萌哒