(其一,多sheet页Excel文件导出)java导出多个数据库表数据,生成Excel文件,包含多个sheet页

阅读: 评论:0

(其一,多sheet页Excel文件导出)java导出多个数据库表数据,生成Excel文件,包含多个sheet页

(其一,多sheet页Excel文件导出)java导出多个数据库表数据,生成Excel文件,包含多个sheet页

参考文章:java导出功能(多个sheet页数据导出)

一、案例效果

先上我已实现的效果(自己可根据案例代码改进,以下效果并非代码实现效果):

本案例代码实现效果:

二、具体操作流程

pom依赖:

        <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version></dependency>

导出对象ExcelExp:

package com.zwd.cases.demo.utilstest;import java.util.List;/*** @Description: 导出对象* @Author zhengwd* @Date 2023/7/24 1:01*/
public class ExcelExp {private String fileName;// sheet的名称private String[] handers;// sheet里的标题private List<String[]> dataset;// sheet里的数据集private String tableName;public ExcelExp(String fileName, String[] handers, List<String[]> dataset, String tableName) {this.fileName = fileName;this.handers = handers;this.dataset = dataset;this.tableName = tableName;}public String getFileName() {return fileName;}public void setFileName(String fileName) {this.fileName = fileName;}public String[] getHanders() {return handers;}public void setHanders(String[] handers) {this.handers = handers;}public List<String[]> getDataset() {return dataset;}public void setDataset(List<String[]> dataset) {this.dataset = dataset;}public String getTableName() {return tableName;}public void setTableName(String tableName) {this.tableName = tableName;}
}

工具类ExcelExportUtil:

package com.zwd.cases.demo.utilstest;import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;import java.util.List;/*** @Description java导出功能(多个sheet页数据导出)* @Author zhengwd* @Date 2023/7/24 0:57**/
public final class ExcelExportUtil {/*** @param @param file 导出文件路径* @param @param mysheets* @return void* @throws* @Title: exportManySheetExcel* @Description: 可生成单个、多个sheet*/public static Workbook exportManySheetExcel(List<ExcelExp> mysheets) {HSSFWorkbook wb = new HSSFWorkbook();// 创建工作薄List<ExcelExp> sheets = mysheets;// 表头样式HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HorizontalAlignment.CENTER); // 创建一个居中格式// 字体样式HSSFFont fontStyle = wb.createFont();fontStyle.setFontName("微软雅黑");fontStyle.setFontHeightInPoints((short) 12);// fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);style.setFont(fontStyle);for (ExcelExp excel : sheets) {// 新建一个sheetHSSFSheet sheet = wb.FileName());// 获取该sheet名称String[] handers = Handers();// 获取sheet的标题名HSSFRow tableName = ateRow(0);HSSFCell cellName = ateCell(0);sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 9));HSSFCellStyle titleStyle = wb.createCellStyle();// 设置单元格样式HSSFFont titleFont = wb.createFont(); // 标题字体titleFont.setFontHeightInPoints((short) 16); // 字号titleStyle.setFont(titleFont);titleStyle.setAlignment(HorizontalAlignment.CENTER);cellName.setCellStyle(titleStyle);// 设置单元格内容cellName.TableName());HSSFRow rowFirst = ateRow(1);// 第一个sheet的第一行为标题// 写标题for (int i = 0; i < handers.length; i++) {// 获取第一行的每个单元格HSSFCell cell = ateCell(i);// 往单元格里写数据cell.setCellValue(handers[i]);cell.setCellStyle(style); // 加样式sheet.setColumnWidth(i, 4000); // 设置每列的列宽}// 写数据集List<String[]> dataset = Dataset();for (int i = 0; i < dataset.size(); i++) {String[] data = (i);// 获取该对象// 创建数据行HSSFRow row = ateRow(i + 2);for (int j = 0; j < data.length; j++) {// 设置对应单元格的值ateCell(j).setCellValue(data[j]);}}}return wb;}
}

测试类DemoTest2:

package com.zwd.cases.demo;import com.zwd.cases.demo.utilstest.ExcelExp;
import com.zwd.cases.demo.utilstest.ExcelExportUtil;
import org.apache.poi.ss.usermodel.Workbook;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;/*** @Description 测试类* @Author zhengwd* @Date 2023/7/25 22:02**/
public class DemoTest2 {public static void main(String[] args) {/** 第一页数据 */List<String[]> dataAllOne = new ArrayList<>();String[] data1 = (String[]) Arrays.asList("杨1", "18", "男").toArray();String[] data2 = (String[]) Arrays.asList("杨2", "19", "女").toArray();dataAllOne.add(data1);dataAllOne.add(data2);/** 第二页数据 */List<String[]> dataAllTwo = new ArrayList<>();String[] data3 = (String[]) Arrays.asList("驾照", "2022年9月5日10:08:46", "是").toArray();String[] data4 = (String[]) Arrays.asList("户口本", "2022-9-5 10:09:01", "否").toArray();dataAllTwo.add(data3);dataAllTwo.add(data4);ArrayList<ExcelExp> list = new ArrayList<>();ExcelExp excelExp1 = new ExcelExp("存放人员信息", (String[]) Arrays.asList("姓名", "年龄", "性别").toArray(), dataAllOne, "人员信息");ExcelExp excelExp2 = new ExcelExp("存放文件信息", (String[]) Arrays.asList("文件名称", "上传时间", "是否上传到FDFS").toArray(), dataAllTwo, "文件上传情况");list.add(excelExp1);list.add(excelExp2);Workbook workbook = portManySheetExcel(list);//导出数据到excelFileOutputStream fileOutputStream = null;try {fileOutputStream = new FileOutputStream("C:\Users\86178\Desktop\tempFile\demo.xls");workbook.write(fileOutputStream);fileOutputStream.flush();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if(fileOutputStream != null){try {fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}}}}
}

生成文件:

友情链接:其二,多sheet页Excel文件导入

本文发布于:2024-01-29 09:44:12,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170649265914402.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:多个   文件   数据库   数据   sheet
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23