POI实战-java开发excel详解(第三章 复杂写入)

本文介绍了使用Java POI库进行复杂Excel写入的方法,包括利用模板填充数据并计算学生总成绩、平均分。同时,讲解了如何处理多层公式引用,确保公式在打开Excel后能正确计算。通过示例代码展示了具体实现过程。
摘要由CSDN通过智能技术生成

3.复杂写入

3.1 复杂写入

POI复杂写出主要是同复杂读取一样,在实际开发中,从数据库中读取字符、数字、日期各种类型数据,并通过相应的计算公式写出到Excel中。

这次写出的Excel,不重新创建,而采用Excel模板(图12)形式,将数据从数据库(图13)中读出,并通过公式方式计算每个学生的总成绩、平均分,最后写入模板。


图12

 

图13

代码片段:

public static HSSFWorkbook write(InputStream inputStream) throws IOException, ClassNotFoundException{
		Class clazz = Class.forName(Student.class.getName());
		Field[] fields = clazz.getDeclaredFields();
		
		//初始一个workbook
		HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
		List<Student> list = Conn.getData();
		//创建一个sheet
		HSSFSheet sheet = workbook.getSheetAt(0);
			//创建多行,从列名下一行开始创建
			for(int rowIndex = 1; rowIndex <= list.size(); rowIndex++){
				HSSFRow row = sheet.getRow(rowIndex);
				if(row == null){
					row = sheet.createRow(rowIndex);
				}
				Student student = list.get(rowIndex-1);
				//创建多列(不包括ID列)
				for(int cellnum = 0; cellnum < fields.length-1; cellnum++){
					HSSFCell cell = row.getCell(cellnum);
					if(cell == null){
						cell = row.createCell(cellnum);
					}
					switch (cellnum) {
					case 0:
						cell.setCellValue(new HSSFRichTextString(student.getName()));
						break;
					case 1:
						cell.setCellValue(new HSSFRichTextString(student.getNo()));
						break;
					case 2:
						cell.setCellValue(new HSSFRichTextString(student.getNativePlace()));
						break;
					case 3:
						cell.setCellValue(new HSSFRichTextString(student.getEdu()));
						break;
					case 4:
						cell.setCellValue(student.getYear());
						break;
					case 5:
						cell.setCellValue(student.getMath());
						break;
					case 6:
						cell.setCellValue(student.getChinese());
						break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值