Java导出Excel表只在一张sheet页下分多个表格

本文介绍如何将之前分布在多个sheet页的Excel表格整合到一个sheet页下导出。通过添加rownum字段记录行数,在该行之后添加新数据,实现了在同一sheet页显示多个表格。提供了一个使用Apache POI库的Java工具类示例,展示了创建和导出Excel的过程。
摘要由CSDN通过智能技术生成

这是一个需求:之前的Excel是多个表每一个表一个sheet页,现在想在一个sheet页下导出多个表

思路:多添加一个字段rownum(行数),记录每次添加之后行数并在这个行数之后再进行添加数据,就会将数据导到一个sheet页导出来了。

这里有一个导出Excel方法工具类例子:

excel工具类

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellRangeAddress;

public class ExcelCS {
     /**
      *   * 导出Excel
      * @param sheetName sheet名称
      * @param titleColumn 列标题
      * @param title 标题
      * @param values 表内容
      * @param wb  HSSFWorkbook对象
      * @return
      */
   public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []titleColumn,String title,String [][]values, HSSFWorkbook wb,int rownum){

       // 第一步,创建一个HSSFWorkbook,对应一个Excel文件
       if(wb == null){
           wb = new HSSFWorkbook();
       }
       HSSFSheet sheet;
       // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
       if(wb.getSheet(sheetName)!= null){
            sheet = wb.getSheet(sheetName);
       }else {
            sheet = wb.createSheet(sheetName);
       }
       //创建表名的样式
       HSSFCellStyle tableNamestyle = wb.createCellStyle();
       tableNamestyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
       sheet.autoSizeColumn((short)0);
       tableNamestyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
       tableNamestyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
       tableNamestyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
       tableNamestyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
       //设置字体
       HSSFFont tableNamefont =wb.createFont();
       tableNamefont.setFontHeightInPoints((short) 14); //字体高度
       tableNamefont.setColor(HSSFFont.COLOR_NORMAL); //字体颜色
       tableNamefont.setFontName("宋体"); //字体
       tableNamefont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //宽度
       tableNamestyle.setFont(tableNamefont);
       
       
       //创建第一行
       HSSFRow row = sheet.createRow(rownum);
       //设置合并单元格样式
       setCellBorder(1,titleColumn.length-1,row,tableNamestyle);
       //单元格合并
       CellRangeAddress cra =new CellRangeAddress(rownum, rownum, 0, titleColumn.length-1);
       sheet.addMergedRegion(cra);
       //声明列对象
       HSSFCell cell = null;
       cell=row.createCell(0);
       cell.setCellValue(title);
       /**设置单元格格式为文本格式*/
       HSSFDataFormat format = wb.createDataFormat();
       tableNamestyle.setDataFormat(format.getFormat("@"));
       cell.setCellStyle(tableNamestyle);//设置单元格格式为"文本"
       cell.setCellType(HSSFCell.CELL_TYPE_STRING);

       
       
       // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
       row = sheet.createRo

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值