JExcelApi

-- Start

Java Excel API 简介

Java Excel API 是一个用来读写 excel 的开源框架。

 

下载 Java Excel API

你可以在 Google 中搜索 JExcelApi download,然后到官网去下载最新的 JExcelApi 包。然后把 jxl.jar 添加到自己的 classpath 中就可以了。

 

一个简单的例子

import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import jxl.Workbook;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.write.DateFormat;
import jxl.write.DateTime;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

public class Test {
	private static final int ID_INDEX = 0;
	private static final int NAME_INDEX = 1;
	private static final int BIRTHDAY_INDEX = 2;
	private static final int SALARY_INDEX = 3;
	private static final int ADDRESS_INDEX = 4;
	
	private WritableCellFormat format;
	private WritableCellFormat dateFormat;
	
	public Test() {
		format = new WritableCellFormat(WritableWorkbook.ARIAL_10_PT);
		try {
			format.setWrap(true);
			format.setBorder(Border.ALL, BorderLineStyle.THIN);
			
			dateFormat = new WritableCellFormat(new DateFormat("yyyy-MM-dd"));
			dateFormat.setBorder(Border.ALL, BorderLineStyle.THIN);
		} catch (WriteException e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) throws Exception {
		new Test().generateReport();
	}
	
	public void generateReport() throws Exception {
		// 打开 workbook
		WritableWorkbook workbook = Workbook.createWorkbook(new File("./test.xls"));
		
		// 创建 Sheet
		WritableSheet reportSheet = workbook.createSheet("report", 0);
		
		// 设置列宽
		setColumnWidth(reportSheet);
		
		// 设置标题
		int row = 0;
		setTitle(reportSheet, row++);
		
		// 设置每行
		List<Employee> employees = getDataFromDB();
		for (Employee employee : employees) {
			setRow(reportSheet, row++, employee);
		}
		
		// 关闭 workbook
		workbook.write();
		workbook.close();
	}
	
	private void setColumnWidth(WritableSheet sheet) {
		sheet.setColumnView(ID_INDEX, 20);
		sheet.setColumnView(NAME_INDEX, 20);
		sheet.setColumnView(BIRTHDAY_INDEX, 10);
		sheet.setColumnView(SALARY_INDEX, 10);
		sheet.setColumnView(ADDRESS_INDEX, 40);
	}

	private void setTitle(WritableSheet sheet, int row) throws Exception {
		sheet.addCell(new Label(ID_INDEX, row, "员工号", format));
		sheet.addCell(new Label(NAME_INDEX, row, "姓名", format));
		sheet.addCell(new Label(BIRTHDAY_INDEX, row, "出生年月日", format));
		sheet.addCell(new Label(SALARY_INDEX, row, "工资", format));
		sheet.addCell(new Label(ADDRESS_INDEX, row, "地址", format));
	}
	
	private void setRow(WritableSheet sheet, int row, Employee employee) throws Exception {
		sheet.addCell(new jxl.write.Number(ID_INDEX, row, employee.getID(), format));
		sheet.addCell(new Label(NAME_INDEX, row, employee.getName(), format));
		sheet.addCell(new DateTime(BIRTHDAY_INDEX, row, employee.getBirthday(), dateFormat));
		sheet.addCell(new jxl.write.Number(SALARY_INDEX, row, employee.getSalary(), format));
		sheet.addCell(new Label(ADDRESS_INDEX, row, employee.getAddress(), format));
	}

	private List<Employee> getDataFromDB () {
		List<Employee> r = new ArrayList<Employee>();
		r.add(new Employee(1, "张三", new GregorianCalendar(1979, 11, 24).getTime(), Double.valueOf(1234.56), "辽宁大连"));
		r.add(new Employee(2, "李四", new GregorianCalendar(1980, 4, 4).getTime(), Double.valueOf(4321.65), "内蒙古鄂尔多斯"));
		
		return r;
	}
}

// Javabean
class Employee implements Serializable {
	private static final long serialVersionUID = 7445838103191670245L;

	private Integer ID;
	private String name;
	private Date birthday;
	private Double salary;
	private String address;

	public Employee() {
	}
	
	public Employee(Integer ID, String name, Date birthday, Double salary, String address) {
		this.ID = ID;
		this.name = name;
		this.birthday = (birthday == null ? null : (Date) birthday.clone());
		this.salary = salary;
		this.address = address;
	}

	public Integer getID() {
		return ID;
	}

	public void setID(Integer iD) {
		ID = iD;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getBirthday() {
		return birthday == null ? null : (Date) birthday.clone();
	}

	public void setBirthday(Date birthday) {
		this.birthday = (birthday == null ? null : (Date) birthday.clone());
	}

	public Double getSalary() {
		return salary;
	}

	public void setSalary(Double salary) {
		this.salary = salary;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
}

 

更多例子

Java Excel API 还有好多其他的功能,在它发行包的的 src 文件夹下可以找到更多的例子。
 

-- 更多参见:Open Source 精萃
-- 声 明:转载请注明出处
-- Last Updated on 2012-08-16
-- Written by ShangBo on 2012-07-22
-- End

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值