Java轻松导出Excel:从零开始实现数据报表!
发布时间:2023-04-08 03:47:06 来源:一个即将退役的码农

导出Excel是Java开发中经常涉及的操作之一。在实际开发中,我们经常需要将数据导出到Excel中,以便进行统计和分析。本文将介绍Java中如何导出Excel,并提供一些示例和代码片段以帮助您更好地理解这个过程。


【资料图】

一、Excel导出概述

在Java中,我们可以使用POI库来实现Excel的导入和导出。POI是Apache开源组织下的一个Java API,它提供了操作Microsoft Office格式文档的能力。其中,HSSF是POI提供的一个纯Java操作Excel的API,它支持.xls格式的文件操作。而XSSF是POI提供的一个用于操作.xlsx格式文件的API。

二、导出Excel的步骤

要在Java中导出Excel,我们需要完成以下步骤:

1.创建一个工作簿(Workbook)

2.创建一个工作表(Sheet)

3.创建行(Row)并设置单元格(Cell)的值

4.将工作表添加到工作簿中

5.将工作簿写入输出流中

下面是一个简单的示例,演示了如何使用POI库在Java中导出Excel。

import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;public class ExcelExporter { public static void main(String[] args) throws IOException {// 创建一个工作簿Workbook workbook = new HSSFWorkbook();// 创建一个工作表Sheet sheet = workbook.createSheet("Sheet1");// 创建行并设置单元格的值Row row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("Hello World");// 将工作表添加到工作簿中workbook.addSheet(sheet);// 将工作簿写入输出流中FileOutputStream outputStream = new FileOutputStream("example.xls");workbook.write(outputStream);workbook.close(); }}

上面的示例创建了一个名为“Sheet1”的工作表,向第一行第一列添加了一个单元格,并将工作簿写入名为“example.xls”的文件中。

三、示例

下面是一个更复杂的示例,它演示了如何从数据库中检索数据并将其导出到Excel中。假设我们有一个数据库,其中包含名为“employees”的表,该表包含以下字段:id、first_name、last_name和email。

我们将使用Spring框架来检索数据库中的数据,并使用POI库将数据导出到Excel中。首先,我们需要在Spring配置文件中配置数据源和JdbcTemplate:

```

然后,我们将创建一个名为“Employee”的Java类,该类表示从数据库中检索的员工。该类包含以下字段:id、firstName、lastName和email。

javaCopy codepublic class Employee { private int id; private String firstName; private String lastName; private String email; // Getters and setters}

接下来,我们将创建一个名为“EmployeeDao”的Java类,该类将使用JdbcTemplate从数据库中检索员工数据。我们将使用以下SQL查询语句检索数据:

SELECT id, first_name, last_name, email FROM employees

import java.util.List;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.RowMapper;public class EmployeeDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate; } public ListfindAll() {String sql ="SELECT id, first_name, last_name, email FROM employees";RowMapperrowMapper = (rs, rowNum) ->{Employee employee = new Employee();employee.setId(rs.getInt("id"));employee.setFirstName(rs.getString("first_name"));employee.setLastName(rs.getString("last_name"));employee.setEmail(rs.getString("email"));return employee;};return jdbcTemplate.query(sql, rowMapper); }}

现在我们已经可以从数据库中检索数据了。接下来,我们将创建一个名为“ExcelExporter”的Java类,该类将使用POI库将数据导出到Excel中。我们将使用以下步骤:

1.创建一个工作簿

2.创建一个工作表

3.创建行并设置单元格的值

4.将工作表添加到工作簿中

5.将工作簿写入输出流中

javaCopy codeimport java.io.FileOutputStream;import java.io.IOException;import java.util.List;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;public class ExcelExporter { private EmployeeDao employeeDao; public void setEmployeeDao(EmployeeDao employeeDao) {this.employeeDao = employeeDao; } public void export() throws IOException {// 创建一个工作簿Workbook workbook = new HSSFWorkbook();// 创建一个工作表Sheet sheet = workbook.createSheet("Employees");// 创建标题行Row headerRow = sheet.createRow(0);headerRow.createCell(0).setCellValue("ID");headerRow.createCell(1).setCellValue("First Name");headerRow.createCell(2).setCellValue("Last Name");headerRow.createCell(3).setCellValue("Email");// 检索员工数据并将其添加到行中Listemployees = employeeDao.findAll();int rowNumber = 1;for (Employee employee : employees) {Row row = sheet.createRow(rowNumber++);row.createCell(0).setCellValue(employee.getId());row.createCell(1).setCellValue(employee.getFirstName());row.createCell(2).setCellValue(employee.getLastName());row.createCell(3).setCellValue(employee.getEmail());}// 调整列宽以适合内容sheet.autoSizeColumn(0);sheet.autoSizeColumn(1);sheet.autoSizeColumn(2);sheet.autoSizeColumn(3);// 将工作表添加到工作簿中workbook.write(new FileOutputStream("employees.xls"));// 关闭工作簿workbook.close();}}

最后,我们需要编写一个测试类,该类将创建Spring应用程序上下文并调用ExcelExporter来将数据导出到Excel文件中。

import java.io.IOException;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class App { public static void main(String[] args) throws IOException {ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");ExcelExporter exporter =(ExcelExporter) context.getBean("excelExporter");exporter.export();System.out.println("Data exported successfully"); }}

现在我们已经完成了代码的编写。接下来,我们将演示如何运行该应用程序以将数据导出到Excel文件中。

首先,我们需要在数据库中创建“employees”表,并将一些数据添加到该表中。我们可以使用以下SQL查询语句:

CREATE TABLE employees ( id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), email VARCHAR(50));INSERT INTO employees (id, first_name, last_name, email)VALUES (1, "John", "Doe", "john.doe@example.com"), (2, "Jane", "Doe", "jane.doe@example.com"), (3, "Bob", "Smith", "bob.smith@example.com");

然后,我们需要将代码编译成一个可执行的JAR文件。我们可以使用Maven来完成此操作。我们只需要在项目根目录中运行以下命令:

mvn package

这将创建一个名为“export-to-excel-1.0-SNAPSHOT.jar”的JAR文件。

最后,我们可以运行该应用程序并查看结果。我们只需要在命令行中运行以下命令:

java -jar export-to-excel-1.0-SNAPSHOT.jar

这将导出数据并将其保存在名为“employees.xls”的Excel文件中。

在本文中,我们演示了如何使用Spring和POI库将数据从数据库导出到Excel文件中。我们展示了如何使用JdbcTemplate从数据库中检索数据,如何使用POI库将数据导出到Excel文件中,以及如何使用Spring应用程序上下文将所有部分组合在一起。

标签: