java后台利用Apache poi 生成excel文档提供前台下载示例

下面是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技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 基于spring mvc请求controller访问方式

    基于Spring MVC请求Controller访问方式的完整攻略 Spring MVC是一种基于Java的Web框架,它可以帮助我们快速开发Web应用程序。在Spring MVC中,我们可以使用Controller来处理请求,并返回响应结果。本文将介绍如何使用Spring MVC请求Controller访问方式,并提供两个示例说明。 步骤一:创建Contr…

    Java 2023年5月17日
    00
  • 基于java实现简单的银行管理系统

    我们来详细讲解“基于Java实现简单的银行管理系统”的完整攻略。 1. 确定需求和设计整体架构 在开发任何一种软件系统之前,我们都需要先明确需求,明确需要实现哪些功能和用户需求。在之后的设计过程中,我们需要设计整体的架构。 在本项目中,我们可以按如下的步骤进行: 分析整个系统,确定需要的基本功能和用户需求(例如:存、取、转账、查询余额等)。 设计整体的系统架…

    Java 2023年5月18日
    00
  • Java基于TCP方式的二进制文件传输

    针对“Java基于TCP方式的二进制文件传输”的完整攻略,我将从以下几个方面进行详细的讲解: Java TCP编程简介; 文件读取与传输; Java TCP方式二进制文件传输的实现。 1. Java TCP编程简介 TCP/IP是Internet上最常用的协议,在Java中,我们可以使用Socket和ServerSocket实现TCP编程。其中,Socket…

    Java 2023年5月20日
    00
  • 浅谈Java8对字符串连接的改进正确姿势

    标题:浅谈Java8对字符串连接的改进正确姿势 Java8中针对字符串连接做了很大的改进,通过这篇文章我将详细讲解Java8新特性中对字符串连接的改进,同时提供两个示例帮助读者更加深入理解。 一、Java8之前的字符串连接方式 在Java8之前,我们通常使用“+”符号将多个字符串拼接到一起,例如: String firstName = "John&…

    Java 2023年5月26日
    00
  • Jsp+Servlet实现文件上传下载 删除上传文件(三)

    这篇攻略是介绍如何使用 JSP 和 Servlet 来实现文件上传下载以及删除上传文件。其中包含以下内容: 上传文件处理(上传文件存储,上传文件名称处理) 下载文件处理(下载文件存储) 删除文件处理 除此之外,还会用到一些库和工具,如 commons-fileupload、commons-io、bootstrap。 上传文件处理 上传文件存储 在上传文件之前…

    Java 2023年6月15日
    00
  • java解析任意层数json字符串的方法

    关于“java解析任意层数json字符串的方法”的攻略,我会从以下几个方面进行讲解: JSON介绍 JSON解析器的选择 JSON解析实例 多层嵌套JSON解析实例 1. JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写。它基于JavaScript语法的子集,但在使用时可以被许多不同语言…

    Java 2023年5月26日
    00
  • Java的static修饰符

    静态域 如果将域定义为 static,每个类中只有一个这样的域。而每一个对象对于所有的实例域却都有自己的一份拷贝。例如,假定需要给每一个雇员赋予唯一的标识码。这里给 Employee 类添加一个实例域 id 和一个静态域 nextld: class Employee { private static int nextId = 1; private int i…

    Java 2023年4月27日
    00
  • SpringBoot整合阿里 Druid 数据源的实例详解

    SpringBoot整合阿里 Druid 数据源的实例详解 在SpringBoot项目中,我们经常会使用阿里的Druid数据源来管理我们的数据库连接。本文将详细讲解如何在SpringBoot项目中整合阿里Druid数据源。 步骤一:导入相关依赖 在pom.xml文件中添加以下依赖: <dependency> <groupId>com.…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部