poi生成Excel

        需要用到的jar包:poi-3.9-20121203.jar。

        源代码示例:

/**
 * 
 */
package com.geloin.poi.bean;

import java.util.Date;

/**
 * @author Geloin
 * 
 */
public class Person {

	/**
	 * 姓名
	 */
	private String name;

	/**
	 * 年龄
	 */
	private Integer age;

	/**
	 * 生日
	 */
	private Date birthday;

	/**
	 * 是否学生
	 */
	private boolean isStudent;

	/**
	 * 身高
	 */
	private double height;

	public String getName() {
		return name;
	}

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

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public boolean isStudent() {
		return isStudent;
	}

	public void setStudent(boolean isStudent) {
		this.isStudent = isStudent;
	}

	public double getHeight() {
		return height;
	}

	public void setHeight(double height) {
		this.height = height;
	}

}

/**
 * 
 */
package com.geloin.poi.main;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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.ss.util.CellRangeAddress;

import com.geloin.poi.bean.Person;

/**
 * @author Geloin
 * 
 */
public class PoiTest {

	/**
	 * 
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {

		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

		List<Person> data = new ArrayList<Person>();
		Person person1 = new Person();
		person1.setName("张三");
		person1.setAge(20);
		person1.setBirthday(format.parse("1989-11-12"));
		person1.setStudent(true);
		person1.setHeight(168.8);
		data.add(person1);
		Person person2 = new Person();
		person2.setName("李四");
		person2.setAge(21);
		person2.setBirthday(format.parse("1988-11-12"));
		person2.setStudent(false);
		person2.setHeight(169.8);
		data.add(person2);

		String exportPath = "d:/work/proTmp/geloin/poi/export.xls";
		OutputStream out = new FileOutputStream(new File(exportPath));

		// 声明一个工作薄
		HSSFWorkbook workbook = new HSSFWorkbook();
		// 生成一个表格
		HSSFSheet sheet = workbook.createSheet("sheet的名称");
		// 设置表格默认列宽度为15个字节
		sheet.setDefaultColumnWidth(15);

		// 设置标题
		HSSFCellStyle titleStyle = workbook.createCellStyle();
		// 居中显示
		titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		// 标题字体
		HSSFFont titleFont = workbook.createFont();
		// 字体大小
		titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
		titleStyle.setFont(titleFont);

		HSSFCellStyle contentStyle = workbook.createCellStyle();
		contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		HSSFFont contentFont = workbook.createFont();
		contentFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
		contentStyle.setFont(contentFont);

		// 产生表格标题行
		HSSFRow row = sheet.createRow(0);
		String[] headers = new String[] { "序号", "姓名", "年龄", "出生年月", "是否学生",
				"身高" };
		for (int i = 0; i < headers.length; i++) {
			HSSFCell cell = row.createCell(i);
			HSSFRichTextString text = new HSSFRichTextString(headers[i]);
			cell.setCellValue(text);
			cell.setCellStyle(titleStyle);
		}

		int rowCount = 1;
		for (int i = 0; i < data.size(); i++, rowCount++) {
			HSSFRow dataRow = sheet.createRow(rowCount);
			Person person = data.get(i);

			// 序号
			HSSFCell cell0 = dataRow.createCell(0);
			cell0.setCellValue((i + 1));
			cell0.setCellStyle(contentStyle);

			// 姓名
			HSSFCell cell1 = dataRow.createCell(1);
			cell1.setCellValue(person.getName());
			cell1.setCellStyle(contentStyle);

			// 年龄,转化为String后放到cell里面
			HSSFCell cell2 = dataRow.createCell(2);
			cell2.setCellValue(person.getAge().toString());
			cell2.setCellStyle(contentStyle);

			// 出生年月,转化为String后放到cell里面
			HSSFCell cell3 = dataRow.createCell(3);
			cell3.setCellValue(format.format(person.getBirthday()));
			cell3.setCellStyle(contentStyle);

			// 是否学生,转化为String后放到cell里面
			HSSFCell cell4 = dataRow.createCell(4);
			String isStudent = person.isStudent() ? "是" : "否";
			cell4.setCellValue(isStudent);
			cell4.setCellStyle(contentStyle);

			// 身高,转化为String后放到cell里面
			HSSFCell cell5 = dataRow.createCell(5);
			cell5.setCellValue(String.valueOf(person.getHeight()));
			cell5.setCellStyle(contentStyle);
		}

		// 合并,从第一行到最后一行,从第七列到第七列
		sheet.addMergedRegion(new CellRangeAddress(0, rowCount - 1, 6, 6));
		// 合并单元格的内容,合并单元格后,仅会保留第一行,第七列的内容,所以设置第一行第七列的内容
		HSSFCell cell6 = row.createCell(6);
		cell6.setCellStyle(contentStyle);
		cell6.setCellValue("合并单元格的内容");

		workbook.write(out);
	}
}

        简略过程:

        1. 通过new HSSFWorkBook生成一个workBook;

        2. 通过workBook的createSheet生成一个sheet,即工作表,同时可为工作表命名;

        3. 通过sheet的createRow生成一行,sheet中的行数从0开始,表示第一行;

        4. 通过row的createCell生成一列,sheet中的列数从0开始,表示第一列;

        5. 通过workBook.write,将内容输出到一个excel文件中。


        主要说明:

        1. HSSFCellStyle用于设定单元格的style;

        2. HSSFFont用于设定单元格的字体;

        3. 通过sheet.addMergedRegion(开始行号,结束行号,开始列号,结束列号)方法,可合并单元格,当需要合并多行的某列时,设置开始列号等于结束列号即可;当需要合并多列的某行时,设置开始行号等于结束行号即可;

        4. Excel有一特性——合并多行时,合并后的内容为合并中的第一行的内容;合并多列时,合并后的内容为合并中的多列的最左上角一列的内容——所以在合并时,只需要设置指定的单元格的内容,即可设置合并后的单元格的内容;

        5. 行号和列号均是从0开始的,表示第一行或第一列。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值