这是一个需求:之前的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