下面是Java后台利用Apache POI生成Excel文档并提供前台下载的完整攻略:
1. 准备工作
在开始前,需要确保以下几点:
- 确保已经安装好了Java开发环境以及Apache POI库。
- 了解Java的文件输入输出操作。
2. 创建Excel文档
首先,我们需要使用Apache POI库创建一个空的Excel文档,并在其中创建一个工作表以及表头,代码如下:
// 创建Excel工作簿对象
Workbook workbook = new HSSFWorkbook();
// 创建Excel工作表对象
Sheet sheet = workbook.createSheet("Sheet1");
// 创建表格标题行并设置单元格格式
Row row = sheet.createRow(0);
row.setHeightInPoints(30);
CellStyle style = workbook.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER); // 设置单元格水平居中
style.setVerticalAlignment(VerticalAlignment.CENTER); // 设置单元格垂直居中
Font font = workbook.createFont(); // 创建字体对象
font.setFontName("宋体"); // 设置字体名称
font.setFontHeightInPoints((short) 16); // 设置字体大小
font.setBold(true); // 粗体字
style.setFont(font);
Cell cell = row.createCell(0);
cell.setCellValue("姓名");
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue("年龄");
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue("性别");
cell.setCellStyle(style);
以上代码会创建一个名为“Sheet1”的工作表,并设置了表头。
3. 填充Excel数据
接下来,我们需要将数据填充到Excel文档中。以下是两个填充数据的示例:
示例1:从数据库中获取数据
// 获取数据库连接
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM student");
ResultSet rs = pstmt.executeQuery();
// 填充数据到Excel单元格中
int rowIndex = 1; // 从第二行开始填充数据
while (rs.next()) {
row = sheet.createRow(rowIndex++);
cell = row.createCell(0);
cell.setCellValue(rs.getString("name"));
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue(rs.getInt("age"));
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue(rs.getString("gender"));
cell.setCellStyle(style);
}
// 关闭数据库连接
rs.close();
pstmt.close();
conn.close();
以上代码会从数据库中获取学生数据,并将数据填充到Excel中。
示例2:从集合中获取数据
List<Student> studentList = new ArrayList<>();
studentList.add(new Student("张三", 20, "男"));
studentList.add(new Student("李四", 21, "女"));
studentList.add(new Student("王五", 22, "男"));
// 填充数据到Excel单元格中
int rowIndex = 1; // 从第二行开始填充数据
for (Student student : studentList) {
row = sheet.createRow(rowIndex++);
cell = row.createCell(0);
cell.setCellValue(student.getName());
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue(student.getAge());
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue(student.getGender());
cell.setCellStyle(style);
}
以上代码会从一个包含学生对象的List集合中获取数据,并将数据填充到Excel中。
4. 写入Excel文件并提供下载
将填充完数据的Excel文件写入到服务器或本地的磁盘中,并提供下载链接。以下是一段完整的代码:
// 将Excel文件写入到服务器或本地磁盘中
FileOutputStream fos = new FileOutputStream("/path/to/output.xls");
workbook.write(fos);
fos.close();
// 生成下载链接
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("output.xls", "utf-8"));
FileInputStream fis = new FileInputStream("/path/to/output.xls");
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
os.write(buffer, 0, len);
}
os.flush();
fis.close();
os.close();
以上代码会将Excel文件写入到服务器或本地磁盘中,并生成一个名为“output.xls”的下载链接。
5. 总结
在以上攻略中,我们使用了Apache POI库来创建和填充Excel文件,并使用Java的文件输入输出操作将文件写入到服务器或本地磁盘中,并生成一个下载链接。通过以上步骤,我们就可以在Java后台中生成Excel文档并提供下载链接了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java后台利用Apache poi 生成excel文档提供前台下载示例 - Python技术站