java中怎么将数据库信息下载到具有标题的excel中并提示在浏览器上
可以使用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 著作权归作者所有。请勿转载和采集!