Java使用Apache.POI导出数据生成Excel文档

在项目开中,我们经常需要用excel来导入导出数据,而POI技术是实现我们需求的一个选择。

以下是利用POI生成excel文件的简单实例:

package cn.test;

import java.io.FileOutputStream;
import java.io.IOException;

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

public class test {

	public static void main(String[] args) {
		//第一步,创建一个webbook,对应一个Excel文件
		HSSFWorkbook wb = new HSSFWorkbook(); //创建Excel文件(Workbook)
		
		//第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
		HSSFSheet sheet = wb.createSheet("成绩表"); //创建工作表(Sheet)
		sheet.setColumnWidth(0, 20 * 256);  // 设置工作表中第1列列宽
		sheet.setColumnWidth(1, 20 * 256);  // 设置工作表中第2列列宽
		sheet.setColumnWidth(2, 20 * 256);  // 设置工作表中第3列列宽
		
		//第三步,创建第一行:标题行,合并单元格(先设置标题行数据,再合并单元格及设置单元格边框。防止边框不生效)
 		HSSFRow row1 = sheet.createRow((int) 0);// 创建行,从0开始
 		//创建单元格样式
 		HSSFCellStyle style1 = wb.createCellStyle();
 		style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 设置单元格内容居中
 		HSSFCell cell1 = row1.createCell(0);// 创建行的单元格,也是从0开始
		cell1.setCellValue("成绩一览表");// 设置单元格内容	
 		cell1.setCellStyle(style1);// 设置单元格格式
 		//合并单元格
 		CellRangeAddress cra = new CellRangeAddress(0, 0, 0, 2);
 		// firstRow 区域中第一个单元格的行号  
 		// lastRow 区域中最后一个单元格的行号
 		// firstCol 区域中第一个单元格的列号
 		// lastCol 区域中最后一个单元格的列号
 		sheet.addMergedRegion(cra);//创建这个合并单元格
 		// 设置合并单元格边框
 		RegionUtil.setBorderTop(HSSFCellStyle.BORDER_THIN,cra, sheet, wb); //上边框
 		RegionUtil.setBorderBottom(HSSFCellStyle.BORDER_THIN,cra, sheet, wb); //下边框
 		RegionUtil.setBorderLeft(HSSFCellStyle.BORDER_THIN,cra, sheet, wb); //左边框
 		RegionUtil.setBorderRight(HSSFCellStyle.BORDER_THIN,cra, sheet, wb); //右边框
 		
		// 第四步,创建第二行数据标题
		HSSFRow row2 = sheet.createRow((int) 1);
 		//创建单元格样式
		HSSFCellStyle style2 = wb.createCellStyle();
		style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 设置单元格内容居中
		// 设置单元格边框
		style2.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
		style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);//下边框
		style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
		style2.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
		HSSFCell cell2 = row2.createCell(0);
		cell2.setCellValue("班级");
		cell2.setCellStyle(style2);
		cell2 = row2.createCell(1);
		cell2.setCellValue("姓名");
		cell2.setCellStyle(style2);
		cell2 = row2.createCell(2);
		cell2.setCellValue("成绩");
		cell2.setCellStyle(style2);
		
		// 第五步,写入数据(从第三行开始写入数据,写入三行)
		for(int i = 2; i < 5; i++) {
			// 创建内容行
			HSSFRow row3 = sheet.createRow(i);
			//创建单元格样式
			HSSFCellStyle style3 = wb.createCellStyle();
			style3.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 设置单元格内容居左
			HSSFCell cell3 = row3.createCell(0);
			cell3.setCellValue("一班");
			cell3.setCellStyle(style3);
			cell3 = row3.createCell(1);
			cell3.setCellValue("张三");
			cell3.setCellStyle(style3);
			cell3 = row3.createCell(2);
			cell3.setCellValue("98");
			cell3.setCellStyle(style3);
		}

		// 第六步,通过输出流将excel对象输出到指定文件
		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream("d:/test.xls");
			wb.write(fos);
		} catch (IOException e) {
		   System.out.println(e.getMessage());
		} finally {
			// 关闭输出流
			if (fos != null) {
				try {
					fos.close();
				} catch (IOException e) {
					 System.out.println(e.getMessage());
				}
			}
		}
	}
}

生成的excel文件效果如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值