优化大量数据导出到Excel的内存消耗(二):如果数据超出Excel单表上限,则进行分表_txt导入excel超出最大行如何自动分表-优快云博客
数据导出进行边读边写excel方式导出
DataSource dataSource = dataSourceService.getByDsName(requestObj.getString("dsName"));
QuerySqlVO querySqlVO = modelNativeService.buildQuerySQL(requestObj,dataSource);
this.queryDataAndWriteExcel(wb,header,querySqlVO,impRelation.getLabel(),currentSheetNum);
/**
* 查询数据并写入到Excel文件中。
*
* @param wb 已经存在的SXSSFWorkbook对象,用于写入数据。
* @param header 表头信息,键为字段名,值为表头显示的文字。
* @param querySqlVO 包含查询SQL语句、参数和数据源信息的对象。
* @param label 用于标识Sheet的标签前缀。
* @param sheetNum 当前Sheet的编号。
* @return 写入数据后的SXSSFWorkbook对象。
* @throws SQLException 如果数据库操作出现异常。
*/
public SXSSFWorkbook queryDataAndWriteExcel(SXSSFWorkbook wb, Map<String, String> header,
QuerySqlVO querySqlVO, String label, int sheetNum) throws SQLException {
// 创建一个新的Sheet,并设置其名称
Sheet sheet = wb.createSheet(label + "_" + sheetNum);
// 初始化行号
int rowNum = 0;
// 创建第一行用于写入表头
Row row &