`
zhouxianglh
  • 浏览: 267306 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JXL 和 POI 操作Excel 表格

    博客分类:
  • J2SE
阅读更多

今天用到 Excel 中第一次见到 POI 说实话,自己的见识还是太少了.多多学习呀.晚上回来总结了一下.下面分别是它们的写入,输出,修改.

 

 

 

package com.isw2.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import jxl.DateCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.DateTime;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
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;

public class ExcelDemo {
	private String path = "C:/test.xls";

	public static void main(String[] args) {
		List list = new ArrayList();
		for (int i = 0; i < 10; i++) {
			int[] numArr = new int[] { 12, 45, 36, 78, 46 };
			list.add(numArr);
		}
		ExcelDemo excel = new ExcelDemo();
		excel.createExcelPOI(list);
		excel.updateExclePOI();
	}

	/**
	 * 使用 POI 更新 Excel
	 */
	public void updateExclePOI() {
		File file = new File(path);
		try {
			InputStream inPutStream = new FileInputStream(file);
			HSSFWorkbook workbook = new HSSFWorkbook(inPutStream);
			HSSFSheet sheet = workbook.getSheetAt(0);
			HSSFRow row = sheet.getRow(7);
			row.getCell(0).setCellValue("google");
			
			inPutStream.close();
			OutputStream outPutStream = new FileOutputStream(file);
			workbook.write(outPutStream);
			outPutStream.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 使用 POI 读取 Excel
	 */
	public void readExclePOI() {
		File file = new File(path);

		try {
			InputStream inputStream = new FileInputStream(file);
			HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
			HSSFSheet sheet = workbook.getSheetAt(0);
			HSSFRow row = sheet.getRow(0);
			inputStream.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 使用 POI 写入 Excel
	 * 
	 * @param list
	 */
	public void createExcelPOI(List list) {
		try {
			File file = new File(path);
			OutputStream outPutStream = new FileOutputStream(file);
			HSSFWorkbook workbook = new HSSFWorkbook();
			HSSFSheet sheet = workbook.createSheet("工作表1");
			HSSFRow row = sheet.createRow(0);
			HSSFCell cell = row.createCell((short) 0);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(new Date());
			// 设置时间格式
			HSSFCellStyle DateStyle = workbook.createCellStyle();
			DateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
			cell.setCellStyle(DateStyle);
			// 合并单元格
			sheet.addMergedRegion(new Region(0, (short) 0, 4, (short) 4));
			// 设置字体
			HSSFFont font = workbook.createFont();
			font.setFontName("宋体");
			// 设置斜体
			font.setItalic(true);
			// 粗体
			font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
			HSSFCellStyle style = workbook.createCellStyle();
			style.setFont(font);
			style.setWrapText(true);
			for (int i = 0; i < list.size(); i++) {
				HSSFRow rowTemp = sheet.createRow(i + 5);
				int[] number = (int[]) list.get(i);
				for (int j = 0; j < number.length; j++) {
					HSSFCell cellTemp = rowTemp.createCell((short) j);
					cellTemp.setCellValue(number[j]);
					cellTemp.setCellStyle(style);
				}
			}
			workbook.write(outPutStream);
			outPutStream.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * JXL 更新 Excel 文件
	 */
	public void updateExcelJXL(){
		File file = new File(path);
		try {
			Workbook workbook = Workbook.getWorkbook(file);
			//这里是与写入的区别,仅此
			WritableWorkbook wwb = workbook.createWorkbook(file,workbook);
			WritableSheet sheet = wwb.getSheet(0);
			Label lable = new Label(0,7,"google");
			sheet.addCell(lable);
			wwb.write();
			wwb.close();
			workbook.close();
		} catch (BiffException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (WriteException e) {
			e.printStackTrace();
		}
	}

	/**
	 * JXL 读取 Excel 文件
	 */
	public void readExcelJXL() {
		File file = new File(path);
		try {
			Workbook workbook = Workbook.getWorkbook(file);
			Sheet sheet = workbook.getSheet(0);
			// 读取 时间
			DateCell dateCell = (DateCell) sheet.getCell(0, 0);
			System.out.println(dateCell.getDate());
			for (int i = 5; i < 15; i++) {
				for (int j = 0; j < 5; j++) {
					String str = sheet.getCell(j, i).getContents();
					System.out.print(str + "\t");
				}
				System.out.println();
			}
			workbook.close();
		} catch (BiffException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 用 JXL 写入 Excel 文件
	 * 
	 * @param list
	 */
	public void createExcelJXL(List list) {
		File file = new File(path);
		try {
			OutputStream outPutStream = new FileOutputStream(file);
			WritableWorkbook wwb = Workbook.createWorkbook(outPutStream);
			// 设置表空间
			WritableSheet ws = wwb.createSheet("工作表1", 0);
			// 合并单元格
			ws.mergeCells(0, 0, 4, 4);
			// 时间写入
			DateTime dateTime = new DateTime(0, 0, new Date());
			ws.addCell(dateTime);
			// 设置字体
			WritableFont wfc = new WritableFont(WritableFont.createFont("宋体"),
					10, WritableFont.NO_BOLD, true);
			WritableCellFormat wcfFC = new WritableCellFormat(wfc);
			// 内容自动适应
			wcfFC.setWrap(true);
			for (int i = 0; i < list.size(); i++) {
				int[] number = (int[]) list.get(i);
				for (int j = 0; j < number.length; j++) {
					Label lableTemp = new Label(j, i + 5, String
							.valueOf(number[j]), wcfFC);
					ws.addCell(lableTemp);
				}
			}
			wwb.write();
			wwb.close();
			outPutStream.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (RowsExceededException e) {
			e.printStackTrace();
		} catch (WriteException e) {
			e.printStackTrace();
		}
	}
}

只是简单的操作了些.做了些指引,以后有机会深入学习一些.

 

 这里把代码和 Jar 包放上来,和大家分享.好久没这么学习过了.久违的感觉.

 

 

参考了以下的文章:

http://www.iteye.com/topic/322837

http://sjhorse.iteye.com/blog/156905

给了很大的帮助.

分享到:
评论

相关推荐

    jxl和poi读取写入表格jar包,文档和示例

    本资源提供了两个流行的库——JXL和Apache POI,用于读取和写入Excel表格,同时还附带了相关的文档和Java项目源码示例,方便开发者快速理解和应用。 JXL是一个Java库,它允许开发人员对Microsoft Excel文件进行读写...

    jxl poi技术对excel操作

    jxl jxl包 poi技术导出数据至excel中 poi-bin-2.5.1包 jxl对excel表格 代码操作 poi技术 java代码从数据库取数据导入至Excel表中 poi-bin-2.5.1-final-20040804.jar

    poi jxl 生成EXCEL 报表

    POI允许开发者通过Java代码创建复杂的Excel表格,包括单元格样式、公式、图表等。 1. **POI使用基础**: - 创建Workbook对象,它是Excel文件的容器。 - 创建Sheet对象,代表Excel工作簿中的单个工作表。 - 在...

    POI与JXL的实战性能对比

    **JXL(JExcel API)** 是一个较早出现的库,主要适用于处理早期版本的Excel文件(如Excel 95、97和2003),支持的功能包括读取和写入数据、设置单元格样式、修改已有表格等。然而,由于其设计目标主要是针对旧版...

    jxl,java操作excel表格

    Java 操作 Excel 表格是开发中常见的需求,特别是在数据导入导出、数据分析或报表生成等场景。"jxl" 是一个 Java 库,专门用于读取和写入 Microsoft Excel 文件(.xls 格式)。这个库使得在 Java 程序中处理 Excel ...

    jxl.jar_java操作excel表格的jar包

    Java操作Excel表格是Java开发中常见的一项任务,特别是在数据处理、报表生成以及数据导入导出等场景。`jxl.jar` 是一个非常流行的Java库,它允许开发者在Java程序中方便地读取和写入Excel文件。这个库是Java Excel ...

    JAVA 无需JXL和POI用PageOffice自动生成Excel表格.pdf

    本文将介绍如何利用PageOffice库在Java环境中无需JXL和POI,直接自动生成Excel表格。 PageOffice是一款能够帮助开发者在服务器端直接操作Office文档的Java组件。它可以实现动态创建、编辑、保存、打印Office文档等...

    JAVA 无需JXL和POI用PageOffice自动生成Excel表格.docx

    总结一下,本文主要介绍了如何使用PageOffice组件在Java环境中,不依赖JXL和POI,自动生成Excel表格。通过步骤化的示例,我们展示了如何创建一个新的Excel文件,并在其中填充数据,包括标题和具体的数据项。这为...

    jxl,POI jar包

    标题中的“jxl,POI jar包”提及的是两个在Java编程中用于处理电子表格的库,即JExcelAPI(jxl)和Apache POI。这两个库都是为了方便开发者读写Microsoft Office格式的文件,尤其是Excel工作簿。下面将详细阐述这两...

    jxl操作excel表格

    本文将深入探讨如何利用`jxl`库进行Excel表格的操作,包括读取表格、拷贝工作簿、更新工作簿以及将多个Sheet合并到一个Excel文件中。 首先,让我们了解`jxl`库的基本概念。`jxl`库提供了一系列的类和接口,如`...

    jxl.jar 和 poi3.14.jar

    在这个场景中,我们关注的两个核心库是`jxl.jar`和`poi3.14.jar`,它们都是Java中用于Excel操作的重要库,但各有其特性和适用范围。 首先,`jxl.jar`是由JExcelAPI项目提供的一个开源库,它主要用于处理老版本的...

    jxl与poi的jar包

    对比JXL和Apache POI,虽然两者都能处理Excel文件,但POI的灵活性和功能更全面。如果你需要处理复杂的Excel任务,或者需要支持.xlsx格式,那么Apache POI可能是更好的选择。而JXL则适合那些需求相对简单,且主要处理...

    jxl,POI jar包

    这两个库都允许开发者在Java应用程序中读取、写入和操作Microsoft Office格式的文件,特别是Excel电子表格。 **jExcelAPI(jxl)**: jExcelAPI,简称jxl,是一个用Java编写的开源库,它提供了读取和写入Excel文件...

    ExcelDemo_Excel导出_下载_POI读excel_JXL读写excel_java读写excel_列宽_读取合并或拆分单元格内容

    本文将深入探讨Java编程语言中如何使用Apache POI库和JExcelAPI(JXL)来读取、写入及操作Excel文件,同时也包括设置列宽以及处理合并或拆分的单元格内容。 首先,Apache POI是Apache软件基金会的一个开源项目,专...

    操作excel表格的jxl包

    这个库非常实用,因为它允许你在不依赖于Microsoft Office的情况下,通过Java程序对Excel表格进行各种操作。 首先,我们要了解`jxl`的核心概念。`jxl`库支持多种类型的Excel对象,包括工作簿(Workbook)、工作表...

    POI操作Excel1

    Apache POI提供了详细的API文档,可以在其官方网站上找到,帮助开发者了解各个对象的属性和方法,以便更好地利用POI进行Excel操作。 总结,Apache POI是Java处理Excel的强大工具,无论你是要创建新的Excel文件,...

    poi和jxl jar包

    Apache POI和JXL是两个流行的库,它们允许开发者用Java语言读写Microsoft Excel格式的数据。在这篇文章中,我们将深入探讨这两个库,以及如何在实际项目中使用它们。 首先,Apache POI是一个开源的Java API,它允许...

    jxl.jar(JAVA对EXCEL表格的操作)

    **标题详解:**"jxl.jar (JAVA对EXCEL表格的操作)" `jxl.jar` 是一个Java类库,主要用于处理Microsoft Excel文件。这个库使得Java开发者能够在程序中读取、写入、编辑以及创建Excel电子表格。它提供了丰富的API接口...

    jxl.jar 下载excel电子表格(2)

    博主747017186可能会分享一些示例代码,解释如何读取、创建或修改Excel表格,并可能涉及错误处理和性能优化等方面。 标签"源码"暗示我们将探讨的是实际的编程代码,可能是Java代码,用来展示如何集成和使用jxl.jar...

Global site tag (gtag.js) - Google Analytics