java中使用SXSSFWorkbook 导出excel,根据SQL返回list,数据要求行列转换,第n行数据变成第n列,给出示例代码
时间: 2024-02-28 18:52:33 浏览: 100
以下是一个基于 Java 和 Apache POI 的示例代码,使用 SXSSFWorkbook 将 SQL 查询结果转换为行列互换的 Excel 表格:
```java
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
public class ExportToExcel {
public static void main(String[] args) throws SQLException, ClassNotFoundException, IOException {
// 连接数据库
String jdbcUrl = "jdbc:mysql://localhost:3306/myDatabase";
String username = "myUsername";
String password = "myPassword";
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection(jdbcUrl, username, password);
// 执行 SQL 查询
String sql = "SELECT Column1, Column2, Column3 FROM myTable";
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery();
// 将查询结果转换为行列互换的列表
List<Map<String, Object>> dataList = new ArrayList<>();
while (resultSet.next()) {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("Column1", resultSet.getString("Column1"));
dataMap.put("Column2", resultSet.getString("Column2"));
dataMap.put("Column3", resultSet.getString("Column3"));
dataList.add(dataMap);
}
// 创建 Excel 工作簿并设置表头
SXSSFWorkbook workbook = new SXSSFWorkbook();
Row headerRow = workbook.createSheet("Sheet1").createRow(0);
for (int i = 0; i < dataList.size(); i++) {
Cell headerCell = headerRow.createCell(i);
headerCell.setCellValue("Row" + (i + 1));
}
// 将数据写入 Excel 表格
int rowNum = 1;
for (String columnName : dataList.get(0).keySet()) {
Row row = workbook.getSheet("Sheet1").createRow(rowNum++);
int cellNum = 0;
for (Map<String, Object> dataMap : dataList) {
Cell cell = row.createCell(cellNum++);
cell.setCellValue(dataMap.get(columnName).toString());
}
}
// 将 Excel 表格保存到文件
FileOutputStream outputStream = new FileOutputStream("output.xlsx");
workbook.write(outputStream);
workbook.close();
}
}
```
这段代码中使用了 Apache POI 库来操作 Excel 表格。在使用之前需要先下载并添加到项目依赖中。此外,需要根据实际情况修改数据库连接信息和 SQL 查询语句。这段代码将 SQL 查询结果转换为行列互换的列表,然后根据列表中的数据写入 Excel 表格。
阅读全文