Java Web之POI操作Excel2016模板

512 阅读1分钟

由于要批量生成Excel,并且模板已经给定。所以尝试用POI来操作一下。由于自己用的Office版本大于2007,所以在操作的时候遇到各种坑,特此记录一下~~~

注意点

1、由于POI对于Office2003和2007之后的版本对应的jar包不一样,操作的类也不一样,所以在操作之前一定要准确找到不同版本的Excel对应的jar包。
2、编译时不报错不代表运行不报错,很多操作都是POI在操作Excel时出现问题的,所以除了添加代码中需要Import类所在的jar包之外,必须要加入额外的jar包。

操作2007以上需要的jar包

必须的jar包.jpg

这些jar文件都不需要自己单独下载,只要去Apache下载 poi-bin-3.16-20170419.zip 就有了全部的资料。

对应的jar包.png

示例代码

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

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class POIExcel {

	public static void main(String[] args) throws IOException, InvalidFormatException {

		// 获取Excel模板文件
		File file = new File("D:\\座位分布图模板.xlsx");
		// 读取Excel模板
		XSSFWorkbook wb = new XSSFWorkbook(file);
		// 读取了模板内sheet的内容
		XSSFSheet sheet = wb.getSheetAt(0);
		// 在相应的单元格进行(读取)赋值 行列分别从0开始
		XSSFCell cell = sheet.getRow(14).getCell(8);
		cell.setCellValue("张三");
		// 修改模板内容导出新模板
		FileOutputStream out = new FileOutputStream("D:/座位分布图.xlsx");
		// 关闭相应的流
		wb.write(out);
		out.close();
		wb.close();
	}
}