0 0

有关POI报表5

项目中与很多数据需要导出excel
  例如对数据库中不同的表 要分别导出 有什么比较简单快捷的方法不
问题补充:
可以给个例子说明下吗
谢谢 了
2009年3月19日 11:44

4个答案 按时间排序 按投票排序

0 0

可以用poi官方文档就可以,不过poi有些bug,我看到这个报表工具www.finereport.com好像修正一些bug,可以去用他们修正后poi代码

2009年3月27日 18:57
0 0

补充:
第168行至169行之间(即writeSheet(HSSFSheet sheet, ResultSet resultSet)方法第一句)加
resultSet.beforeFirst();

2009年3月23日 23:50
0 0

前不久在一个项目中也有这种要求,写了一个类来处理

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Types;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.model.Workbook;

/**
 * Microsoft Excel 写入器。
 *
 * @author HeDYn
 * @version 0.1.2009-03-01
 */
public class ExcelWriter {
	
	private File xlsFile = null;
	private String dateFormat = null;
	
	private HSSFWorkbook workbook = null;
	private SimpleDateFormat dateFormatter = null;
	
	/**
	 * 创建一个Excel文件写入器,所有数据将写入到指定的xls文件中
	 *
	 * @param xlsFile 指定目标文件位置,原位置已存在同名文件将被覆盖
	 */
	public ExcelWriter(File xlsFile) {
		this(xlsFile, null);
	}
	
	/**
	 * 创建一个Excel文件写入器,所有数据将写入到指定的xls文件中;
	 * 写入日期时以指定格式形式写入
	 *
	 * @param xlsFile 指定目标文件位置,原位置已存在同名文件将被覆盖
	 * @param dateFormat 日期格式,如果为null则按本地日期格式
	 */
	public ExcelWriter(File xlsFile, String dateFormat) {
		this.xlsFile = xlsFile;
		workbook = new HSSFWorkbook();
		
		setDateFormat(dateFormat);
	}
	
	/**
	 * 返回Excel文件
	 *
	 * @return
	 */
	public File getFile() {
		return xlsFile;
	}
	
	/**
	 * 返回写入日期时所用的格式
	 *
	 * @return 格式化字符串
	 */
	public String getDateFormat() {
		return dateFormat;
	}
	
	/**
	 * 设置写入日期时采用的格式
	 *
	 * @param dateFormat 日期格式化字符串
	 */
	public void setDateFormat(String dateFormat) {
		this.dateFormat = dateFormat;
		if (dateFormat == null) {
			dateFormatter = new SimpleDateFormat();
		} else {
			dateFormatter = new SimpleDateFormat(dateFormat);
		}
	}
	
	/**
	 * 清空缓存,将数据写入物理存储介质
	 *
	 * @throws IOException
	 */
	public void flush() throws IOException {
		FileOutputStream fileOut = null;
		try {
			fileOut = new FileOutputStream(xlsFile);
			workbook.write(fileOut);
		} catch (IOException e) {
			throw e;
		} finally {
			fileOut.close();
		}
	}
	
	/**
	 * 新增一个工作薄并将数组中的数据写入
	 *
	 * @param data 需写入的数组数据
	 */
	public void writeSheet(Object[][] data) {
		HSSFSheet sheet = workbook.createSheet();
		writeSheet(sheet, data);
	}
	
	/**
	 * 新增一个工作薄并将JDBC数据库返回结果集的列名及数据写入
	 *
	 * @param resultSet 数据库返回结果集
	 */
	public void writeSheet(ResultSet resultSet) throws SQLException {
		HSSFSheet sheet = workbook.createSheet();
		writeSheet(sheet, resultSet);
	}
	
	/**
	 * 新增一个指定名称的工作薄并将数组中的数据写入,
	 * 如果表中已经存在该名称的工作薄将抛出运行时异常
	 *
	 * @param sheetName 新增的工作薄名称
	 * @param data 需写入的数组数据
	 */
	public void writeSheet(String sheetName, Object[][] data) {
		HSSFSheet sheet = workbook.createSheet(sheetName);
		writeSheet(sheet, data);
	}
	
	/**
	 * 新增一个指定名称的工作薄并将数据库返回结果集的列名及数据写入,
	 * 如果表中已经存在该名称的工作薄将抛出运行时异常
	 *
	 * @param sheetName 新增的工作薄名称
	 * @param resultSet 数据库返回结果集
	 */
	public void writeSheet(String sheetName, ResultSet resultSet) throws SQLException {
		HSSFSheet sheet = workbook.createSheet(sheetName);
		writeSheet(sheet, resultSet);
	}
	
	/**
	 * 写入数组中的数据到指定的工作薄
	 */
	private void writeSheet(HSSFSheet sheet, Object[][] data) {
		for (int i=0; i<data.length; i++) {
			HSSFRow row = sheet.createRow(i);
			for (int j=0; j<data[i].length; j++) {
				HSSFCell cell = row.createCell(j);
				writeCell(cell, data[i][j]);
			}
		}
	}
	
	/**
	 * 写入数据库结果集的列名及数据到指定工作薄
	 */
	private void writeSheet(HSSFSheet sheet, ResultSet resultSet) throws SQLException {
		ResultSetMetaData metaData = resultSet.getMetaData();
		int rowNum = 0;
		// 写入列名
		HSSFRow header = sheet.createRow(rowNum);
		int colCount = metaData.getColumnCount();
		for (int i=0; i<colCount; i++) {
			HSSFCell cell = header.createCell(i);
			writeCell(cell, metaData.getColumnLabel(i+1));
		}
		
		// 写入数据
		while (resultSet.next()) {
			rowNum++;
			HSSFRow row = sheet.createRow(rowNum);
			for (int i=0; i<colCount; i++) {
				HSSFCell cell = row.createCell(i);
				writeCell(cell, resultSet.getObject(i+1));
			}
		}
	}
	
	/**
	 * 写入数据到指定单元格
	 */
	private void writeCell(HSSFCell cell, Object obj) {
		if (obj instanceof Date) {
			// 日期以文本形式写入
			Date d = (Date) obj;
			cell.setCellValue(new HSSFRichTextString(dateFormatter.format(d)));
		} else if (obj instanceof Boolean) {
			boolean b = (Boolean) obj;
			cell.setCellValue(b);
		} else if (obj instanceof Number) {
			double d = ((Number) obj).doubleValue();
			cell.setCellValue(d);
		} else {
			String s = (String) obj;
			cell.setCellValue(new HSSFRichTextString(s));
		}
	}
}

2009年3月23日 23:41
0 0

我们一般都用POI来做这个
首先 针对要导出的表 做excel的模板
然后 自己写一个工具类 来根据不同的表使用不同模板导出数据

2009年3月20日 15:36

相关推荐

    poi报表+详细文档

    在这个“poi报表+详细文档”的压缩包中,我们很可能会找到关于如何使用POI库来创建和操作Excel报表的详细教程和实例代码。 在Excel报表的创建中,Apache POI提供了一个强大的API,允许开发者用Java编程语言来处理...

    POI报表Word导出

    POI报表Word导出

    POI报表Excel

    POI报表Excel

    POI报表导出excel

    在这个“POI报表导出excel”的案例中,我们将深入探讨如何使用POI 3.6版本来实现报表的导出,包括设置Excel样式、合并单元格以及处理多表头的合并。 首先,我们需要了解Apache POI的核心组件:HSSFWorkbook(用于...

    POI报表技术

    【标题】:POI报表技术 在Java开发中,POI报表技术主要指的是Apache POI库,这是一个用于读写Microsoft Office格式文件的开源Java库。它允许开发者在Java应用程序中创建、修改和显示Excel、Word和PowerPoint文档。...

    POI技术简单应用开发报表简单使用

    **POI技术简单应用开发报表简单使用** Apache POI是一个流行的开源库,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java编程环境中,它为开发者提供了强大的API,允许他们读取、写入和...

    poi报表导入导出视频

    【标题】"poi报表导入导出视频"涉及的是Java编程中的Apache POI库,这个库主要用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在报表领域,POI库常常被用来进行数据的导入和导出操作,极大地提高...

    POI报表.rar

    标题中的"POI报表.rar"表明这是一个与Apache POI库相关的压缩文件,通常用于处理Microsoft Office格式,特别是Excel。在企业环境中,特别是电信系统和银行系统,数据的管理和报告是至关重要的,而Excel由于其强大的...

    poi制作报表

    Apache POI是一个开源项目,主要目标是处理OLE2对象,尤其是与Microsoft Office相关的文件格式,如Excel(HSSF接口)和Word(HWPF接口)。在企业级应用中,特别是在J2EE环境下,用户经常需要将数据以Excel格式导出,...

    POI导出报表

    通过调用相关API,我们可以自由地操作这些对象来构建报表。 3. **Word报表导出**: 对于Word文档,我们使用HWPFDocument或XWPFDocument类来创建新文档,然后添加段落、表格、图片等元素。例如,XWPFParagraph用于...

    poi生成excel报表合并列

    首先,我们需要导入Apache POI的相关库到我们的项目中。在Java环境中,这可以通过Maven或Gradle依赖管理工具来完成。如果你的项目没有使用这些工具,你需要手动下载Apache POI的JAR文件并将其添加到项目的类路径中。...

    poi 操作 word 报表

    poi 操作 word 报表,兼容office 和 wps

    Apache之PoI 报表导出

    在"Apache之PoI 报表导出"这个主题中,我们将深入探讨如何利用Apache POI库将数据库中的数据高效地导出到Excel报表中。 1. **Apache POI简介** Apache POI是一个开源项目,它提供了API来创建、修改和显示Microsoft...

    poi报表导入导出.zip

    ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat服务器 3.web页面具体路径:http://localhost:80/poi 4.点击Read excel 2003 or 2007,可以读取2003或2007版Excel 5....

    Java-POI报表整合项目案例

    Java-POI报表整合项目案例是Java开发中的一个重要实践,主要涉及到使用Apache POI库来创建、读取和编辑Microsoft Office格式的文件,尤其是Excel电子表格。在企业级应用中,这种技术常用于数据导入导出、自动化报表...

    POI生成excel报表

    ### POI生成Excel报表知识点详解 #### 一、Apache POI简介 Apache POI是Apache软件基金会的一个开源项目,主要用于处理Microsoft Office格式的文件。它提供了API来读写Word、Excel等Office文档格式。其中,处理...

    poi报表

    在本教程中,我们将深入探讨如何使用POI库生成Excel报表。 **1. POI简介** POI是Apache软件基金会Jakarta项目的一部分,提供了一个纯Java的解决方案来处理Microsoft Excel(XLS)文件。HSSF(Horrible Spreadsheet ...

    POI报表,poi案例,例子,EXAMPLE,说明文档,帮助文档。

    以下是对"POI报表,poi案例,例子,EXAMPLE,说明文档,帮助文档"的详细说明: 1. **POI报表**: 在Java开发中,如果你需要生成或处理Excel报表,Apache POI提供了一套强大的API。你可以创建复杂的电子表格,包括...

    poi生成报表,简单的poi实例

    在本实例中,我们将关注使用 Apache POI 来生成 Excel 报表。这个简单的 POI 实例非常适合初学者参考,它能帮助你快速理解和应用 POI 库。 首先,让我们了解 POI 的核心组件——HSSF 和 XSSF。HSSF 是用来处理 .xls...

Global site tag (gtag.js) - Google Analytics