可以使用Apache POI库来实现将数据库信息下载到具有标题的Excel中,并使用Servlet将Excel文件提示在浏览器上。以下是一个简单的示例代码:

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class DownloadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String fileName = "database_info.xlsx";
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setHeader("Content-disposition", "attachment; filename=" + fileName);

        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Database Info");

        // 设置标题
        Row headerRow = sheet.createRow(0);
        String[] headers = {"ID", "Name", "Email"};
        for (int i = 0; i < headers.length; i++) {
            Cell headerCell = headerRow.createCell(i);
            headerCell.setCellValue(headers[i]);
        }

        // 从数据库中获取数据
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password");
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("SELECT * FROM users");

            // 填充数据
            int rowNum = 1;
            while (resultSet.next()) {
                Row row = sheet.createRow(rowNum++);
                row.createCell(0).setCellValue(resultSet.getInt("id"));
                row.createCell(1).setCellValue(resultSet.getString("name"));
                row.createCell(2).setCellValue(resultSet.getString("email"));
            }

            // 设置列宽和日期格式
            sheet.setColumnWidth(0, 256 * 4);
            sheet.setColumnWidth(1, 256 * 20);
            sheet.setColumnWidth(2, 256 * 30);
            CellStyle dateCellStyle = workbook.createCellStyle();
            DataFormat dataFormat = workbook.createDataFormat();
            dateCellStyle.setDataFormat(dataFormat.getFormat("yyyy-MM-dd"));
            sheet.setDefaultColumnStyle(3, dateCellStyle);

            // 输出Excel文件
            workbook.write(response.getOutputStream());
            workbook.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

在Web应用程序中,您可以将此Servlet映射到一个URL,并在需要下载数据库信息的地方创建一个链接或按钮来触发下载。例如:

<a href="/download">Download Database Info</a>

当用户单击链接时,将调用DownloadServlet,该Servlet将从数据库中检索信息并将其写入Excel文件,然后将Excel文件发送到浏览器以下载


原文地址: https://www.cveoy.top/t/topic/cpwo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录