`
jackleechina
  • 浏览: 584504 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

POI根据模板(excel表头)导出excel

 
阅读更多
以下摘自:http://wenku.baidu.com/view/b9023573b307e87101f6965f.html

package com.cvt.smarthome.application.basedata.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.RichTextString;

/**
 * 共分为六部完成根据模板导出excel操作:<br/>
 * 第一步、设置excel模板路径(setSrcPath)<br/>
 * 第二步、设置要生成excel文件路径(setDesPath)<br/>
 * 第三步、设置模板中哪个Sheet列(setSheetName)<br/>
 * 第四步、获取所读取excel模板的对象(getSheet)<br/>
 * 第五步、设置数据(分为种类型数据:setCellStrValue、setCellDateValue、setCellDoubleValue、setCellBoolValue、setCellCalendarValue、
 * setCellRichTextStrValue)<br/>
 * 第六步、完成导出 (exportToNewFile)<br/>
 * 
 * @author Administrator
 * 
 */
public class ExcelUtil {
	private String	srcXlsPath	= "";	// // excel模板路径
	private String	desXlsPath	= "";
	private String	sheetName	= "";
	POIFSFileSystem	fs			= null;
	HSSFWorkbook	wb			= null;
	HSSFSheet		sheet		= null;

	/**
	 * 第一步、设置excel模板路径
	 * 
	 * @param srcXlsPath
	 */
	public void setSrcPath(String srcXlsPath) {
		this.srcXlsPath = srcXlsPath;
	}

	/**
	 * 第二步、设置要生成excel文件路径
	 * 
	 * @param desXlsPath
	 */
	public void setDesPath(String desXlsPath) {
		this.desXlsPath = desXlsPath;
	}

	/**
	 * 第三步、设置模板中哪个Sheet列
	 * 
	 * @param sheetName
	 */
	public void setSheetName(String sheetName) {
		this.sheetName = sheetName;
	}

	/**
	 * 第四步、获取所读取excel模板的对象
	 */
	public void getSheet() {
		try {
			File fi = new File(srcXlsPath);
			if (!fi.exists()) {
				System.out.println("模板文件:" + srcXlsPath + "不存在!");
				return;
			}
			fs = new POIFSFileSystem(new FileInputStream(fi));
			wb = new HSSFWorkbook(fs);
			sheet = wb.getSheet(sheetName);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 第五步、设置字符串类型的数据
	 * 
	 * @param rowIndex
	 *            --行值
	 * @param cellnum
	 *            --列值
	 * @param value
	 *            --字符串类型的数据
	 */
	public void setCellStrValue(int rowIndex, int cellnum, String value) {
		HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
		cell.setCellValue(value);
	}

	/**
	 * 第五步、设置日期/时间类型的数据
	 * 
	 * @param rowIndex
	 *            --行值
	 * @param cellnum
	 *            --列值
	 * @param value
	 *            --日期/时间类型的数据
	 */
	public void setCellDateValue(int rowIndex, int cellnum, Date value) {
		HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
		cell.setCellValue(value);
	}

	/**
	 * 第五步、设置浮点类型的数据
	 * 
	 * @param rowIndex
	 *            --行值
	 * @param cellnum
	 *            --列值
	 * @param value
	 *            --浮点类型的数据
	 */
	public void setCellDoubleValue(int rowIndex, int cellnum, double value) {
		HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
		cell.setCellValue(value);
	}

	/**
	 * 第五步、设置Bool类型的数据
	 * 
	 * @param rowIndex
	 *            --行值
	 * @param cellnum
	 *            --列值
	 * @param value
	 *            --Bool类型的数据
	 */
	public void setCellBoolValue(int rowIndex, int cellnum, boolean value) {
		HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
		cell.setCellValue(value);
	}

	/**
	 * 第五步、设置日历类型的数据
	 * 
	 * @param rowIndex
	 *            --行值
	 * @param cellnum
	 *            --列值
	 * @param value
	 *            --日历类型的数据
	 */
	public void setCellCalendarValue(int rowIndex, int cellnum, Calendar value) {
		HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
		cell.setCellValue(value);
	}

	/**
	 * 第五步、设置富文本字符串类型的数据。可以为同一个单元格内的字符串的不同部分设置不同的字体、颜色、下划线
	 * 
	 * @param rowIndex
	 *            --行值
	 * @param cellnum
	 *            --列值
	 * @param value
	 *            --富文本字符串类型的数据
	 */
	public void setCellRichTextStrValue(int rowIndex, int cellnum,
		RichTextString value) {
		HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);
		cell.setCellValue(value);
	}

	/**
	 * 第六步、完成导出
	 */
	public void exportToNewFile() {
		FileOutputStream out;
		try {
			out = new FileOutputStream(desXlsPath);
			wb.write(out);
			out.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
分享到:
评论
2 楼 羽翼的心动 2017-01-05  
POI中对Word处理,读取不到书签。如果要处理书签的话,就只能使用Jacob,但是使用Jacob的话,要求服务器端必须安装微软的Office软件,这样做有两个致命的地方:1. 服务器如果是Linux的话,肯定不能使用;2. Jacob使用的是Office的自动化技术,很容易在服务器上产生Office的死进程,死锁服务器端的内存资源,直到内存耗尽,宕机重启。而且POI的代码非常复杂。
推荐楼主使用PageOffice产品,导入导出word,excel都很方便,代码非常少。PageOffice还可以在线编辑保存动态填充word,excel文档呢。
1 楼 沐忆潼 2016-06-13  

相关推荐

    poi基于模板导出excel

    ### POI 基于模板导出 Excel 的实现方法 #### 概述 Apache POI 是一个用于读写 Microsoft Office 格式文件的 Java 库,其中包括对 Excel 文件的支持。在实际开发过程中,经常会遇到需要根据现有的 Excel 模板来...

    POI使用Excel模板文件循环输出行并导出Excel

    在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,我们需要理解POI库的基本概念。POI提供了HSSF(Horizontally SpreadSheet Format)和XSSF...

    POI实现的基于动态模板的EXCEL数据导出

    标题中的“POI实现的基于动态模板的EXCEL数据导出”是指利用Apache POI库来创建一个可以动态填充数据的Excel模板,从而实现大量数据的高效导出。Apache POI是一个开源项目,它允许Java开发者读写Microsoft Office...

    Excel导出数据(根据Excel模板定义)

    在IT行业中,Excel作为一种强大的电子表格工具,常用于数据分析、报告制作和数据交换。"Excel导出数据(根据Excel模板定义)...使用Apache POI库,我们可以实现根据预设模板动态生成和导出Excel文件,满足各种业务需求。

    Java POI根据模板生成Excel(xlsx)文件

    在本示例中,我们关注的是如何利用Java POI来根据模板生成.xlsx格式的Excel文件。这个过程涉及到对Excel模板的理解、读取、修改以及最终的保存。 首先,理解模板文件是关键。一个.xlsx模板文件实际上是由一系列XML...

    java使用 POI Excel模板导出数据

    这篇博客"java使用POI Excel模板导出数据"探讨了如何利用POI库在Java中创建Excel模板并填充数据。下面将详细介绍这个过程以及相关知识点。 首先,我们需要理解Apache POI的基本概念。POI是Apache软件基金会的一个...

    EasyExcel 动态表头 导出

    EasyExcel不仅提供了简单易用的API,而且支持动态表头,使得在导出Excel时可以根据业务需求自定义头部结构,增加了程序的灵活性和适应性。 在传统的Excel导出方式中,通常需要通过硬编码的方式来设定Excel的表头和...

    java通过poi模板导出excel

    Java通过Apache POI库导出Excel是常见的数据处理任务,特别是在大数据分析、报表生成和数据交换等场景。Apache POI是Java中广泛使用的库,它允许开发者读取、写入和修改Microsoft Office格式的文件,包括Excel(XLS...

    基于POI+XML配置模板Excel导出

    "基于POI+XML配置模板Excel导出"是一个解决方案,它结合了Apache POI库和XML配置模板来简化这一过程。Apache POI是Java中用于读写Microsoft Office格式文档的开源库,而XML配置模板则使得Excel的格式设定变得灵活且...

    复杂多表头excel表格的导出及布局,支持拓展

    Java中也有Apache POI库,可以直接操作Excel文件,实现多表头的创建和导出。 总结来说,掌握复杂多表头Excel表格的创建和导出技巧,能有效提高数据管理和分析的效率。无论是手动操作还是编程实现,理解并熟练运用...

    Java导出数据到Excel文件中(支持多表头)

    在Java编程中,导出数据到Excel文件是一项常见的任务,特别是在数据分析、报表...通过以上步骤,我们可以构建一个灵活且高效的Java程序,将数据库中的数据导出为具有多级表头的Excel文件,满足数据分析和报告的需求。

    Excel报表导出,复杂Excel模板导出(带单元格合并),jxls2

    首先,`jxls2`是一个强大的Java库,它扩展了Apache POI库的功能,使得开发者能够以声明式的方式来定义Excel模板,并将Java对象的数据填充到模板中,生成动态的Excel报表。这种工作方式极大地简化了Excel导出的编程...

    poi 生成excel模板,下拉选项,批注。现在有模板中插入下拉信息

    在这个场景中,我们将讨论如何使用 POI 在 Java 中生成带有下拉选项和批注的 Excel 模板。 首先,我们需要理解 POI 的核心组件,如 HSSFWorkbook(用于 .xls 文件)和 XSSFWorkbook(用于 .xlsx 文件)。这些工作簿...

    poi导出复杂excel

    在你提到的场景中,"POI模板导出"可能是一个包含预设模板和相关代码的项目。这个项目可能已经封装了创建复杂表头的逻辑,使用者只需要传入数据,即可生成符合要求的Excel文件。由于你提供了可以直接运行的jar包,这...

    注解反射导出Excel自定义中文表头

    在本场景中,我们可以通过自定义注解来标注字段,以便在导出Excel时根据注解内容生成对应的表头。 接下来,我们谈谈反射(Reflection)。反射是Java的一项强大特性,允许程序在运行时检查类、接口、字段和方法的...

    使用EasyPOI导出Excel模板数据(含图片)博文源码

    EasyPOI是一个基于Apache POI的轻量级Java库,它简化了Excel文件的读写操作,特别是对于批量处理和模板导出功能。这篇博文的源码提供了一个使用EasyPOI导出包含图片的Excel模板数据的示例,这在报表生成、数据分析和...

    springboot + poi导出指定格式Excel模板

    在本文中,我们将深入探讨如何使用SpringBoot和Apache POI库来导出指定格式的Excel模板。Apache POI是Java领域广泛使用的库,用于读写Microsoft Office格式的文件,其中包括Excel(.xlsx 和 .xls)文件。SpringBoot...

    POI使用word模板文件循环输出行并导出word

    在这个例子中,我们将探讨如何使用POI库来处理Word文档,特别是利用模板文件循环输出表格行并导出新的Word文档。这个过程在数据分析、报告生成或自动化文档制作等场景中非常有用。 首先,我们需要理解Word文档的...

    POI导出Tree结构数据(连接线).doc

    模板管理中有一个导出模板功能,可以将模板导出到Excel表格中。模板下可以嵌套的是指标或模板,但是模板的最底层必定是指标。然而,在导出过程中存在三个问题: 1. 模板/指标定位位置的问题 2. 编码过程中,出现Row...

    POI使用模板导出.zip

    标题中的"POI使用模板导出.zip"表明这是一个关于使用Apache POI库在Java中处理Excel模板并导出带有复杂表头(合并行和合并列)的案例。Apache POI是一个流行的开源库,专用于读取和写入Microsoft Office格式的文件,...

Global site tag (gtag.js) - Google Analytics