Java导出Excel合并单元格

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 18:43   25   0

1、问题背景

利用POI导出Excel表格,在导出的过程中涉及到双表头,即需要合并单元格


2、实现源码

/**
 * 
 * @Project:Report
 * @Title:MergeCell.java
 * @Package:com.you.excel
 * @Description:
 * @Author:YouHaiDong
 * @Date:2015年11月4日 下午2:36:46
 * @Version:
 */
package com.you.excel;

import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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.Region;

/**
 * <p>合并单元格</p>
 * @ClassName:MergeCell
 * @Description:
 * @Author:YouHaiDong
 * @Date:2015年11月4日 下午2:36:46
 * 
 */
public class MergeCell 
{
 /**
  * 合并单元格
  * @Title:MergeCell
  * @Description:
  * @param args
  * @Date:2015年11月4日 下午2:36:46
  * @return: void 
  * @throws Exception
  */
 @SuppressWarnings({ "resource", "deprecation" })
 public static void main(String[] args) throws Exception 
 {
  //创建workbook 
  HSSFWorkbook workbook = new HSSFWorkbook(); 
  //创建sheet页
     HSSFSheet sheet = workbook.createSheet("学生表"); 
  //创建单元格
  HSSFRow row = sheet.createRow(0); 
  HSSFCell c0 = row.createCell(0); 
  c0.setCellValue(new HSSFRichTextString("学号")); 
  HSSFCell c1 = row.createCell(1); 
  c1.setCellValue(new HSSFRichTextString("姓名")); 
  HSSFCell c2 = row.createCell(2); 
  c2.setCellValue(new HSSFRichTextString("性别")); 
  HSSFCell c3 = row.createCell(3); 
  c3.setCellValue(new HSSFRichTextString("年龄")); 
  HSSFCell c4 = row.createCell(4); 
  c4.setCellValue(new HSSFRichTextString("2015年分数")); 
  HSSFCell c5 = row.createCell(7); 
  c5.setCellValue(new HSSFRichTextString("2014年分数")); 
  HSSFRow row1 = sheet.createRow(1); 
  HSSFCell c6 = row1.createCell(4); 
  c6.setCellValue(new HSSFRichTextString("语文")); 
  HSSFCell c7 = row1.createCell(5); 
  c7.setCellValue(new HSSFRichTextString("数学")); 
  HSSFCell c8 = row1.createCell(6); 
  c8.setCellValue(new HSSFRichTextString("外语"));
  HSSFCell c9 = row1.createCell(7); 
  c9.setCellValue(new HSSFRichTextString("语文")); 
  HSSFCell c10 = row1.createCell(8); 
  c10.setCellValue(new HSSFRichTextString("数学")); 
  HSSFCell c11 = row1.createCell(9); 
  c11.setCellValue(new HSSFRichTextString("外语"));
  
  Region region1 = new Region(0, (short)0, 1, (short)0); 
  Region region2 = new Region(0, (short)1, 1, (short)1); 
  Region region3 = new Region(0, (short)2, 1, (short)2); 
  Region region4 = new Region(0, (short)3, 1, (short)3); 
  Region region5 = new Region(0, (short)4, 0, (short)6); 
  Region region6 = new Region(0, (short)7, 0, (short)9); 
  sheet.addMergedRegion(region1); 
  sheet.addMergedRegion(region2); 
  sheet.addMergedRegion(region3); 
  sheet.addMergedRegion(region4); 
  sheet.addMergedRegion(region5); 
  sheet.addMergedRegion(region6); 
  
  FileOutputStream stream = new FileOutputStream("d:/student.xls"); 
  workbook.write(stream);
 }

}

3、实现结果


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP