1、问题背景

     Java导出Excel表格时,表头出现了三个,即多表头Excel


2、实现源码

/**
 * 
 * @Project:Report
 * @Title:ThreeHead.java
 * @Package:com.you.excel
 * @Description:
 * @Author:YouHaiDong
 * @Date:2015年11月4日 下午3:10:12
 * @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>导出三表头Excel</p>
 * @ClassName:ThreeHead
 * @Description:
 * @Author:YouHaiDong
 * @Date:2015年11月4日 下午3:10:12
 * 
 */
public class ThreeHead 
{
	/**
	 * 导出三表头表格
	 * @Title:ThreeHead
	 * @Description:
	 * @param args
	 * @Date:2015年11月4日 下午3:10:12
	 * @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(7); 
		c2.setCellValue(new HSSFRichTextString("物流学院")); 
		HSSFCell c3 = row.createCell(13); 
		c3.setCellValue(new HSSFRichTextString("行政学院")); 
		HSSFRow row1 = sheet.createRow(1); 
		HSSFCell c6 = row1.createCell(1); 
		c6.setCellValue(new HSSFRichTextString("一班")); 
		HSSFCell c7 = row1.createCell(3); 
		c7.setCellValue(new HSSFRichTextString("二班")); 
		HSSFCell c8 = row1.createCell(5); 
		c8.setCellValue(new HSSFRichTextString("三班"));
		HSSFCell c9 = row1.createCell(7); 
		c9.setCellValue(new HSSFRichTextString("一班")); 
		HSSFCell c10 = row1.createCell(9); 
		c10.setCellValue(new HSSFRichTextString("二班")); 
		HSSFCell c11 = row1.createCell(11); 
		c11.setCellValue(new HSSFRichTextString("三班"));
		HSSFCell c12 = row1.createCell(13); 
		c12.setCellValue(new HSSFRichTextString("一班")); 
		HSSFCell c13 = row1.createCell(15); 
		c13.setCellValue(new HSSFRichTextString("二班")); 
		HSSFCell c14 = row1.createCell(17); 
		c14.setCellValue(new HSSFRichTextString("三班"));
		HSSFRow row2 = sheet.createRow(2); 
		HSSFCell c15 = row2.createCell(1); 
		c15.setCellValue(new HSSFRichTextString("上学期"));
		HSSFCell c16 = row2.createCell(2); 
		c16.setCellValue(new HSSFRichTextString("下学期"));
		HSSFCell c17 = row2.createCell(3); 
		c17.setCellValue(new HSSFRichTextString("上学期"));
		HSSFCell c18 = row2.createCell(4); 
		c18.setCellValue(new HSSFRichTextString("下学期"));
		HSSFCell c19 = row2.createCell(5); 
		c19.setCellValue(new HSSFRichTextString("上学期"));
		HSSFCell c20 = row2.createCell(6); 
		c20.setCellValue(new HSSFRichTextString("下学期"));
		HSSFCell c21 = row2.createCell(7); 
		c21.setCellValue(new HSSFRichTextString("上学期"));
		HSSFCell c22 = row2.createCell(8); 
		c22.setCellValue(new HSSFRichTextString("下学期"));
		HSSFCell c23 = row2.createCell(9); 
		c23.setCellValue(new HSSFRichTextString("上学期"));
		HSSFCell c24 = row2.createCell(10); 
		c24.setCellValue(new HSSFRichTextString("下学期"));
		HSSFCell c25 = row2.createCell(11); 
		c25.setCellValue(new HSSFRichTextString("上学期"));
		HSSFCell c26 = row2.createCell(12); 
		c26.setCellValue(new HSSFRichTextString("下学期"));
		HSSFCell c27 = row2.createCell(13); 
		c27.setCellValue(new HSSFRichTextString("上学期"));
		HSSFCell c28 = row2.createCell(14); 
		c28.setCellValue(new HSSFRichTextString("下学期"));
		HSSFCell c29 = row2.createCell(15); 
		c29.setCellValue(new HSSFRichTextString("上学期"));
		HSSFCell c30 = row2.createCell(16); 
		c30.setCellValue(new HSSFRichTextString("下学期"));
		HSSFCell c31 = row2.createCell(17); 
		c31.setCellValue(new HSSFRichTextString("上学期"));
		HSSFCell c32 = row2.createCell(18); 
		c32.setCellValue(new HSSFRichTextString("下学期"));
		
		Region region1 = new Region(0, (short)0, 2, (short)0); 
		Region region2 = new Region(0, (short)1, 0, (short)6); 
		Region region3 = new Region(0, (short)7, 0, (short)12); 
		Region region4 = new Region(0, (short)13, 0, (short)18); 
		Region region5 = new Region(1, (short)1, 1, (short)2); 
		Region region6 = new Region(1, (short)3, 1, (short)4); 
		Region region7 = new Region(1, (short)5, 1, (short)6); 
		Region region8 = new Region(1, (short)7, 1, (short)8); 
		Region region9 = new Region(1, (short)9, 1, (short)10); 
		Region region10 = new Region(1, (short)11, 1, (short)12); 
		Region region11 = new Region(1, (short)13, 1, (short)14); 
		Region region12 = new Region(1, (short)15, 1, (short)16); 
		Region region13 = new Region(1, (short)17, 1, (short)18); 
		
		sheet.addMergedRegion(region1); 
		sheet.addMergedRegion(region2); 
		sheet.addMergedRegion(region3); 
		sheet.addMergedRegion(region4); 
		sheet.addMergedRegion(region5); 
		sheet.addMergedRegion(region6); 
		sheet.addMergedRegion(region7); 
		sheet.addMergedRegion(region8); 
		sheet.addMergedRegion(region9); 
		sheet.addMergedRegion(region10); 
		sheet.addMergedRegion(region11); 
		sheet.addMergedRegion(region12); 
		sheet.addMergedRegion(region13); 
		
		FileOutputStream stream = new FileOutputStream("d:/student.xls"); 
		workbook.write(stream);
	}

}

3、实现结果

Java导出Excel三表头_Java