java POI导出Excel文件下载 完整代码
时间: 2023-08-29 18:08:27 浏览: 122
好的,以下是一个完整的 Java POI 导出 Excel 文件并下载的示例代码:
```java
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelExportUtil {
public static void export(HttpServletResponse response) throws IOException {
// 创建工作簿
Workbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 添加表头行
Row headerRow = sheet.createRow(0);
Cell headerCell1 = headerRow.createCell(0);
headerCell1.setCellValue("Name");
Cell headerCell2 = headerRow.createCell(1);
headerCell2.setCellValue("Age");
// 添加数据行
List<Person> personList = getPersonList();
for (int i = 0; i < personList.size(); i++) {
Person person = personList.get(i);
Row row = sheet.createRow(i + 1);
Cell cell1 = row.createCell(0);
cell1.setCellValue(person.getName());
Cell cell2 = row.createCell(1);
cell2.setCellValue(person.getAge());
}
// 设置响应头,告诉浏览器下载文件
response.setHeader("Content-Disposition", "attachment;filename=example.xlsx");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
// 将工作簿写入响应输出流
workbook.write(response.getOutputStream());
// 关闭工作簿
workbook.close();
}
private static List<Person> getPersonList() {
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 20));
personList.add(new Person("Bob", 25));
personList.add(new Person("Charlie", 30));
return personList;
}
private static class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
}
```
这段代码定义了一个名为 `ExcelExportUtil` 的类,其中包含了一个名为 `export` 的静态方法,用于导出 Excel 文件并下载。在 `export` 方法中,首先创建了一个工作簿对象 `workbook`,然后创建了一个工作表对象 `sheet`,并向其中添加了表头行和数据行。最后将工作簿写入响应输出流,并设置响应头,告诉浏览器下载文件。
在 `getPersonList` 方法中,定义了一个名为 `Person` 的内部类,用于存储人员信息。在示例代码中,生成了一个包含三个人员信息的列表。
如果需要调用上述代码,可以在 Servlet 或者 Spring MVC 的控制器中使用以下代码:
```java
@RequestMapping("/download")
public void download(HttpServletResponse response) throws IOException {
ExcelExportUtil.export(response);
}
```
其中 `"/download"` 是一个映射到下载方法的 URL。这段代码会调用 `ExcelExportUtil` 类的静态方法 `export`,并将响应对象 `response` 传递给它。需要注意的是,需要将 `HttpServletResponse` 对象作为参数传递给 `export` 方法,以便将 Excel 文件写入响应输出流。
阅读全文