POI组件

POI组件

APACHE旗下有很多已经开源成熟的项目,可以在apache.org官网进行下载。

下面简单介绍一下POI组件。

POI是基于微软OLE 2复合文档格式开发纯Java文件格式端口的主项目。微软办公文档以及使用MFC属性集序列化文档对象的程序都使用OLE 2复合文档格式。

Apache POI也是基于办公开放XML (ooxml)开发纯Java文件格式端口的主项目。OOXML是ECMA /国际标准化组织标准化工作的一部分。这个文档相当大,但是你通常不用太费力就能找到你需要的那一部分!ECMA-376标准在这里,也在微软OSP公司之下。

下面简单介绍poi组件中的功能,以excel为例

public class Excel {
	
	public static void export(Class<?> clz,List<?> list,String filePath,String fileName,String[] titles) throws IllegalArgumentException, IllegalAccessException, IOException {
		
		//创建工作簿对象
		Workbook wb = new HSSFWorkbook();
		
		FileOutputStream out = new FileOutputStream(filePath+File.separatorChar+fileName);
		//创建表格
		int index = fileName.indexOf('.');
		Sheet s = wb.createSheet(fileName.substring(index));
		//创建表头(标题)信息
		Row row1 = s.createRow(0);
		for(int i = 0;i<titles.length;i++) {
			Cell cell = row1.createCell(i);
			cell.setCellValue(titles[i]);
		}
		
		for(int i = 0;i<list.size();i++) {
			Row row2 = s.createRow(i+1);
			Field[] fs = clz.getDeclaredFields();
			for(int j = 0;j<titles.length;j++) {
				Cell cell = row2.createCell(j);			
				fs[j].setAccessible(true);
				cell.setCellValue(fs[j].get(list.get(i)).toString());
				fs[j].setAccessible(false);
			}
		}
		
		wb.write(out);
		out.close();
		wb.close();
	}
	
	public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, IOException {
		List<Hero> list = new ArrayList<Hero>();
		Hero h1 = new Hero("键盘侠",1,20,"网络");
		Hero h2 = new Hero("煎饼侠",1,32,"锅");
		Hero h3 = new Hero("猪猪侠",2,16,"烤乳猪");
		Hero h4 = new Hero("蜘蛛侠",1,36,"吐司");
		Hero h5 = new Hero("龙卷",2,28,"超能力");
		
		list.add(h1);
		list.add(h2);
		list.add(h3);
		list.add(h4);
		list.add(h5);
		String filePath = "C:\\Users\\王聪\\Desktop";
		String fileName = "超人集结.xls";
		String[] titles = new String[] {"名称","性别","年龄","类型"};
		String[] fieldsNames = new String[] {"name","gender","age","type"};
		export(Hero.class, list, filePath, fileName, titles);
	}
}
class Hero{
	private String name;
	private int gender;
	private int age;
	private String type;	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getGender() {
		return gender;
	}
	public void setGender(int gender) {
		this.gender = gender;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public Hero(String name, int gender, int age, String type) {
		super();
		this.name = name;
		this.gender = gender;
		this.age = age;
		this.type = type;
	}
	public Hero() {
		
	}
	@Override
	public String toString() {
		return "Hero [name=" + name + ", gender=" + gender + ", age=" + age + ", type=" + type + "]";
	}
	
	
}

运行结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值