赞
踩
导出的是xls版本的excel,用的是HSSFWorkbook,想导出xlsx的就用XSSFWorkbook,模板自己提前准备好
用到的依赖
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.2</version>
</dependency>
public static void main(String[] args) throws Exception { //伪造数据库查出来的数据 books books1 = new books(1,"java天下第一","5","很牛"); books books2 = new books(2,"PHP天下第二","5","也很牛"); List<books> list = new ArrayList<>(); list.add(books1); list.add(books2); //获得模板 POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("d:/poi1.xls")); //打开模板 HSSFWorkbook workbook=new HSSFWorkbook(fs); //获得名字为sheet的工作本对象,这个是看你的模板工作表的名字 HSSFSheet sheet = workbook.getSheet("sheet2"); //因为是模板,第一行有标题了,我们直接在第二行对应模板第一行插入数据即可 // 在第二行插数据 for (int i = 0; i < list.size(); i++) { //获得第二行 HSSFRow row = sheet.createRow(i + 1); //通过反射获得这个对象的属性字段数组 Field[] Fields = list.get(i).getClass().getDeclaredFields(); int a= 0; for (Field field : Fields) { //加这个才可以访问私有的属性 field.setAccessible(true); //通过get方法得到value,等同于class。get**() Object o = field.get(list.get(i)); //给改行的第0列赋值,后面a++,依次赋值 HSSFCell cell = row.createCell(a); cell.setCellValue(String.valueOf(o)); a++; } } //设置文件导出的保存路径 File file = new File("d:/poi.xls"); //创建文件 file.createNewFile(); //拿到文件的输出流 FileOutputStream fileOutputStream = FileUtils.openOutputStream(file); //调用工作簿的write方法把这个流写出去 workbook.write(fileOutputStream); }
模板样式
数据导入后
OK,栓Q!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。