`
hbing110
  • 浏览: 88194 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于java写office Excel 2007的方法

    博客分类:
  • java
阅读更多
说明:
writeRecord(String[] strings) 当传一个数组参数过来的时候,数组的每一项写到行的每个列的格里面.示例参照注释掉的main方法.
writeRecord(String arg) 这一个字符串是行的一个列格,如新起一行需要调用newLine()方法,示例参照main方法.
很少写文章有什么语意不通的地方还望谅解 ,如有问题再行沟通.
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 * ExcelWriter Description
 * 
 */
public class ExcelWriter {

	private OutputStream outputStream = null;
	private String sheetName="sheet1";
	private XSSFWorkbook workbook;

	public String getSheetName() {
		return sheetName;
	}

	public void setSheetName(String sheetName) {
		this.sheetName = sheetName;
	}

	/**
	 * @param fileOutputStream
	 * @param forName
	 * @throws IOException
	 */
	public ExcelWriter(String filePath) throws IOException {
		workbook = new XSSFWorkbook();
		this.outputStream = new FileOutputStream(filePath);
	}

	public void close() {
		try {
			workbook.write(outputStream);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				outputStream.flush();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				try {
					outputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	public void writeRecord(String[] strings) throws IOException {
		int sheetNum = workbook.getNumberOfSheets();
		XSSFSheet sheet = null;
		if (sheetNum == 0) {
			sheet = workbook.createSheet();
			workbook.setSheetName(0, sheetName);
		} else {
			sheet = workbook.getSheetAt(0);
		}
		XSSFCell cell = null;
		XSSFCellStyle cs = null;
		XSSFRichTextString xssfValue = null;
		int rowNum = sheet.getLastRowNum();
		rowNum++;
		XSSFRow row = sheet.createRow(rowNum);
		for (int n = 0; n < strings.length; n++) {// 写出列
			cell = row.createCell(n);
			cs = cell.getCellStyle();
			cs.setFillPattern(XSSFCellStyle.ALIGN_GENERAL);
			cs.setWrapText(true);
			cs.setVerticalAlignment(XSSFCellStyle.ALIGN_LEFT);
			cell.setCellStyle(cs);
			cell.setCellType(XSSFCell.CELL_TYPE_STRING);
			xssfValue = new XSSFRichTextString(strings[n]);
			cell.setCellValue(xssfValue);
		}
	}

	/*
	 * public static void main(String[] args) throws IOException { ExcelWriter
	 * writer = null; try { writer = new
	 * ExcelWriter("D:\\test\\test.xlsx"); } catch
	 * (FileNotFoundException e) { System.out.println("112"); }
	 * writer.setSheetName("sheet1"); List<String[]> list = new
	 * ArrayList<String[]>(); list.add(new String[] { "name", "张三",
	 * "11" }); list.add(new String[] { "age", "34", "22" });
	 * list.add(new String[] { "sex", "man", "33" }); 
          * for (int i = 0; i < list.size(); i++)
	 * { String[] arg = list.get(i); writer.writeRecord(arg); } writer.close();
	 * }
	 */

	public static void main(String[] args) throws IOException {
		ExcelWriter writer = null;
		try {
			writer = new ExcelWriter("D:\\test\\test.xlsx");
		} catch (FileNotFoundException e) {
		}
		writer.setSheetName("sheet1");
		List<String> list = new ArrayList<String>();
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("\n");
		list.add("ddd");
		list.add("");
		list.add("eee");
		for (int i = 0; i < list.size(); i++) {
			String arg = list.get(i);
			writer.writeRecord(arg);
		}
		writer.close();
	}

	public void newLine() {
		writeRecord("\n");
	}

	/**
	 * @param arg
	 */
	public void writeRecord(String arg) {
		int sheetNum = workbook.getNumberOfSheets();
		XSSFSheet sheet = null;
		if (sheetNum == 0) {
			sheet = workbook.createSheet();
			workbook.setSheetName(0, sheetName);
		} else {
			sheet = workbook.getSheetAt(0);
		}
		XSSFCell cell = null;
		XSSFCellStyle cs = null;
		XSSFRichTextString xssfValue = null;
		XSSFRow row = null;
		int rowNum = sheet.getLastRowNum();
		if (rowNum == -1) {
			rowNum++;
			row = sheet.createRow(rowNum);
		} else if (arg.equals("\n")) {
			rowNum++;
			row = sheet.createRow(rowNum);
			return;
		} else {
			row = sheet.getRow(rowNum);
		}
		int colNum = row.getLastCellNum();
		if (colNum == -1) {
			colNum++;
		}
		cell = row.createCell(colNum);
		colNum++;
		cs = cell.getCellStyle();
		cs.setFillPattern(XSSFCellStyle.ALIGN_GENERAL);
		cs.setWrapText(true);
		cs.setVerticalAlignment(XSSFCellStyle.ALIGN_LEFT);
		cell.setCellStyle(cs);
		cell.setCellType(XSSFCell.CELL_TYPE_STRING);
		xssfValue = new XSSFRichTextString(arg);
		cell.setCellValue(xssfValue);
	}
}
分享到:
评论
4 楼 hantsy 2009-03-27  
2007 就没有必要用poi来写的了,直接用xml就行了。。。
3 楼 zyihang 2009-03-27  
支持OOXML -- Apache POI 3.5 beta 5 版本发布
准备试一下最新的POI,如果通过指定XML来设定excel的样式和属性,java部分只负责处理数据部分,相信会解放很大的工作量。
2 楼 zyihang 2009-03-26  
poi的使用中有一个问题,就是文件超过5M的时候会变得很慢。还有就是生成文件的样式问题,以前做的时候采用模板的方式。
感觉只是通过改扩展文件名xlsx来实现的,希望与楼主多沟通。
1 楼 xiaojianhx 2009-03-25  
方法很不错,学习下

我用过一种方法,比较简单的,
画个Excel-->另存为a.html-->查看源代码-->保存到一个jsp文件-->加上需要的jsp头指令,当页面到达此jsp的时候,会出现一个下载对话框

相关推荐

    java导出word、excel、pdf、txt文件,同时兼容office2003和office2007

    本教程将详细介绍如何使用Java进行文件导出,并确保与Office 2003和Office 2007的兼容性。 首先,我们要提到的是Apache POI项目,这是一个用于读写Microsoft Office格式文件的开源Java库。对于Word文档(.doc和....

    java 读excel 写excel 边度边写excel

    本篇文章将深入探讨如何使用Java实现“边读边写”Excel的机制,特别是结合数据库中的数据List填充到Excel指定位置,并讨论替换字符串的相关操作。 首先,Java中读写Excel文件主要依赖于第三方库,如Apache POI和...

    java导出excel2007

    在Java编程环境中,导出Excel 2007文件(也称为.xlsx文件)是一项常见的任务,主要用于数据报表、数据分析和数据交换。Excel 2007引入了Open XML格式,这是Microsoft Office的一项新标准,提供了更高效的数据存储...

    用Java操作Office 2007

    标题“用Java操作Office 2007”指的是使用Java编程语言来读取、修改或创建Microsoft Office 2007格式的文件,如Word文档(.docx)、Excel表格(.xlsx)和PowerPoint演示文稿(.pptx)。在Java中,这通常涉及到使用...

    java中poi读写excel封装工具类(兼容office2003和2007等版本)

    它不仅支持旧版的Excel文件格式(.xls,用于Office 2003及更早版本),还支持新版本的Excel文件格式(.xlsx,自Office 2007起)。以下是对"java中poi读写excel封装工具类"这一主题的详细解释。 1. **Apache POI介绍...

    java excel 读写 java excel 导入数据库

    以上就是关于"Java Excel 读写"和"Java Excel 导入数据库"的关键知识点,涵盖了从文件读写到数据库操作的整个过程,希望对你的开发工作有所帮助。在实际应用中,根据项目需求选择合适的库,合理设计数据处理逻辑,...

    java使用POI操作excel (支持excel2007)

    Java 使用Apache POI库操作Excel 2007文件详解 在Java开发中,处理Excel文件是一项常见的任务,特别是对于数据分析、数据导入导出或报表生成等场景。Apache POI是一个流行的开源库,它允许开发者读写Microsoft ...

    java中读写excel兼容office2003和2007等版本

    Apache POI是一个开源项目,它允许Java应用程序创建、修改和显示MS Office格式的文件,包括Excel。在这个主题中,我们将深入探讨如何使用Apache POI来实现对Excel的读写操作,并确保兼容性。 首先,我们需要理解...

    java poi 读写excel

    Java POI 是一个开源库,专门用于处理Microsoft Office格式的文件,尤其是Excel(.xls 和 .xlsx)文件。它提供了API,使得Java开发者能够方便地读取、写入和修改Excel文档。这篇博客文章可能详细介绍了如何使用Java ...

    java 写excel 实例

    Java中广泛使用的库是Apache POI项目,它提供了API来操作Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。为了使用Apache POI,你需要在项目中添加对应的依赖。如果是Maven项目,可以在pom.xml文件中加入...

    JAVA操作编辑修改office文件word,excel,ppt

    通过阅读"POI操作Excel -POI提供API给Java程序对Microsoft Office格式档案读和写的功能.url",你可以深入理解Apache POI在Excel操作中的具体用法和示例,进一步提升你的编程能力。在实际项目中,结合这些资源和库,...

    java读写excel文件

    本篇文章将深入探讨如何使用Java进行Excel文件的读取与写入操作,主要聚焦于Apache POI库,这是一个广泛使用的开源Java API,专为处理Microsoft Office格式的文件而设计。 首先,我们需要了解Apache POI库中的核心...

    java写的excel编辑器,界面令人惊叹!

    总的来说,这个Java编写的Excel编辑器为用户提供了一种无需依赖Microsoft Office的替代方案,尤其适合那些需要在Java环境下进行Excel处理的工作。通过深入学习和使用,用户可以充分利用其功能来优化电子表格管理工作...

    java读写excel示例

    Apache POI是一个流行的开源库,专门用于读写Microsoft Office格式的文件,包括Excel(.xls和.xlsx)文档。在Java项目中,通过引入Apache POI的jar包,我们可以方便地对Excel文件进行各种操作。 首先,为了实现Java...

    java 导入及判断的Excel 使用方法

    本文将深入探讨Java中导入和判断Excel的使用方法,结合实例分析,帮助你全面理解这一技术。 首先,Java与Excel的交互通常依赖于第三方库,如Apache POI或JExcelAPI。Apache POI是目前最常用的一个,它提供了丰富的...

    java导入及解析office 2007 excel

    用于导入excel支持office 2007

    在Java中读写Excel文件

    Apache POI是一个广泛使用的开源库,它允许开发者使用Java语言来处理Microsoft Office格式的文件,包括Excel(XLS和XLSX)文档。在本文中,我们将详细探讨如何使用Apache POI库来实现这一功能。 首先,Apache POI...

Global site tag (gtag.js) - Google Analytics