使用的依赖: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,所有方法都在里面。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |