Java导出Excel合并单元格

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、实现结果

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-29 19:08:06

Java导出Excel合并单元格的相关文章

java动态导出excel合并单元格

采用的是poi技术 框架式  ssh 使用的是struts1 public void outExcel(ActionMapping mapping, ActionForm form,   HttpServletRequest request, HttpServletResponse response) {   你程序需要调用的东西写在这里 try { // 第一步,创建一个webbook,对应一个Excel文件 HSSFWorkbook wb = new HSSFWorkbook(); // 第

poi导出excel合并单元格(包括列合并、行合并)

1 工程所需jar包如下:commons-codec-1.5.jarcommons-logging-1.1.jarlog4j-1.2.13.jarjunit-3.8.1.jarpoi-3.9-20121203.jar 2 Code: /** * 导出设备信息Excel * @param form 和 HTTP 请求相关的表格对象 * @param resources 信息资源对象 * @param locale 本地化对象 * @param session HTTP 会话对象 * @param

C#.Net 导出Excel 之单元格 相关设置

range.NumberFormatLocal = "@";     //设置单元格格式为文本range = (Range)worksheet.get_Range("A1", "E1");     //获取Excel多个单元格区域:本例做为Excel表头range.Merge(0);     //单元格合并动作worksheet.Cells[1, 1] = "Excel单元格赋值";     //Excel单元格赋值range

[办公应用]如何将excel合并单元格分拆后每个单元格上仍保留数据?

合并单元格虽然美观,但是无法进行排序.筛选等操作. 只有合并单元格拆分后才可以按常规进行统计.但是普通拆分后,excel仅保留合并单元格数据到区域左上角的单元格. 解决方案:选定多个合并单元格,应用本宏即可每个单元格均保留数据:Sub 拆分() Dim c As Range For Each c In ActiveSheet.UsedRange.Cells If c.MergeCells Then c.Select c.UnMerge Selection.Value = c.Value End

在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)

前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 3.POI读取Excel有两种格式一个是HSSF,另一个是XSSF. HSSF和XSSF的区别如下: HSSF

NPOI之Excel——合并单元格、设置样式、输入公式、设置筛选等

首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkbook(); //在工作簿中:建立空白工作表 ISheet sheet = workbook.CreateSheet(); //在工作表中:建立行,参数为行号,从0计 IRow row = sheet.CreateRow(0); //在行中:建立单元格,参数为列号,从0计 ICell cell = ro

NPOI之Excel——合并单元格、设置样式、输入公式

首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkbook(); //在工作簿中:建立空白工作表 ISheet sheet = workbook.CreateSheet(); //在工作表中:建立行,参数为行号,从0计 IRow row = sheet.CreateRow(0); //在行中:建立单元格,参数为列号,从0计 ICell cell = ro

让我头疼一下午的Excel合并单元格

Excel导出常见问题 excel导出其实不算什么难事 在网上copy下模板代码,填充自己的业务数据,提供一个http接口基本就可以得到你要导出的数据了. 但是,凡事都有例外,截止今天,excel导出我遇到的主要是两大类问题 1.大数据量的excel数据,比如几十万条甚至更多的数据导出 2.因为excel中内容的问题,导致导出后的excel不能直接打开,报错"由于一些内容不可取,Excel无法打开xxx.xlsx.是否要打开并修复此工作簿?" 针对第一种大数据量问题,我遇到的主要问题是

【NetOffice Excel】Excel合并单元格【原】

CSharp操作Excel采用开源的原生.NET程序集NetOffice,格式兼容性更好. 在操作Excel的时候有时候需要合并单元格 using ExcelOffice = NetOffice.ExcelApi; using OfficeApi = NetOffice.OfficeApi; //申请一个变量 private ExcelOffice.Application excelApp; //在一个方法中定义如下 excelApp = new ExcelOffice.Application(