时间:2021-05-20
生成简单的Excel文件
在现实的办公中,我们常常会有这样一个要求:要求把报表直接用excel打开。在实习中有这样一个需求。根据所选择的资源查询用户所提供附件的全部信息并生成excel供下载。但是在查询的时候我们需要来检测用户所提供的附件里面的信息是否有错误(身份证)。有错误的生成错误信息excel。
Apache的POI项目,是目前比较成熟的HSSF接口,用来处理Excel对象。其实POI不仅仅只能处理excel,它还可以处理word、PowerPoint、Visio、甚至Outlook。
这里我先介绍利用POI如何生成excel。
首先在生成Excel前,我们需要理解一下Excel文件的组织形式。在POI中,是这样理解的:一个Excel文件对应一个workbook,一个workerbook是有若干个sheet组成的。一个sheet有多个row,一个row一般存在多个cell。
对于上面的四个名词我们可以在下图理解
对于生成Excel,POI提供了如下几个基本对象:
从上面的图片和Excel的组织结构,我们就可以明白创建Excel的步骤。
1、生成文档对象HSSHWorkbook。
2、通过HSSFWorkbook生成表单HSSFSheet。
3、通过HSSFSheet生成行HSSFRow
4、通过HSSFRow生成单元格HSSFCell。
下面是展示代码:
身份证错误Bean(ErrorCondition.java)
处理类(ExportErrorExcel.java)
public class ExportErrorExcel { public static void main(String[] args) { //第一步创建workbook HSSFWorkbook wb = new HSSFWorkbook(); //第二步创建sheet HSSFSheet sheet = wb.createSheet("身份证错误信息"); //第三步创建行row:添加表头0行 HSSFRow row = sheet.createRow(0); HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //居中 //第四步创建单元格 HSSFCell cell = row.createCell(0); //第一个单元格 cell.setCellValue("姓名"); //设定值 cell.setCellStyle(style); //内容居中 cell = row.createCell(1); //第二个单元格 cell.setCellValue("身份证"); cell.setCellStyle(style); cell = row.createCell(2); //第三个单元格 cell.setCellValue("错误状态"); cell.setCellStyle(style); cell = row.createCell(3); //第四个单元格 cell.setCellValue("错误信息"); cell.setCellStyle(style); //第五步插入数据 List<ErrorCondition> list = ExportErrorExcel.getErrorCondition(); for (int i = 0; i < list.size(); i++) { ErrorCondition errorCondition = list.get(i); //创建行 row = sheet.createRow(i+1); //创建单元格并且添加数据 row.createCell(0).setCellValue(errorCondition.getName()); row.createCell(1).setCellValue(errorCondition.getIdCard()); row.createCell(2).setCellValue(errorCondition.getStatus()); row.createCell(3).setCellValue(errorCondition.getMessage()); } //第六步将生成excel文件保存到指定路径下 try { FileOutputStream fout = new FileOutputStream("D:\\errorCondition.xls"); wb.write(fout); fout.close(); } catch (IOException e) { e.printStackTrace(); } System.out.println("Excel文件生成成功..."); } public static List<ErrorCondition> getErrorCondition(){ List<ErrorCondition> list = new ArrayList<ErrorCondition>(); ErrorCondition r1 = new ErrorCondition("张三", "4306821989021611", "L", "长度错误"); ErrorCondition r2 = new ErrorCondition("李四", "430682198902191112","X", "校验错误"); ErrorCondition r3 = new ErrorCondition("王五", "", "N", "身份证信息为空"); list.add(r1); list.add(r2); list.add(r3); return list; } }通过上面六个步骤就可以在指定的位置生成Excel文件了。
java POI实现向Excel中插入图片
做Web开发免不了要与Excel打交道。今天老大给我一个任务-导出Excel。开始想的还是蛮简单的,无非就是查找,构建Excel,response下载即可。但是有一点不同,就是要加入图片,就是这个加入图片搞了好久。同时网络上确实没有发现比较好的资料,所以写这篇博文记录之,供自己和博友们查询,参考。
在POI中有HSSFPatriarch对象,该对象为画图的顶级管理器,它的createPicture(anchor, pictureIndex)方法就能够在Excel插入一张图片。所以要在Excel中插入图片,三步就可以搞定。一、获取HSSFPatriarch对象,二、new HSSFClientAnchor对象,三、调用createPicture方法即可。实现倒是非常容易实现,如果想把它做好还是有点儿难度的。这里我们先插入一张图片:
如下为执行后的结果:
至于为什么会是这样的结果,主要是因为HSSFClientAnchor(0, 0, 255, 255,(short) 1, 1, (short) 5, 8)这个构造函数造成的,下面我就来解释这个构造函数:HSSFClientAnchor(int dx1,int dy1,int dx2,int dy2,short col1,int row1,short col2, int row2);各个参数的含义如下:
这里dx1、dy1定义了该图片在开始cell的起始位置,dx2、dy2定义了在终cell的结束位置。col1、row1定义了开始cell、col2、row2定义了结束cell。
下面是有两个不同的构造函数所创建的,从这幅图中我们可以清晰看到上面八个参数的含义和不同之处。
上面是插入一张图片,那么实现插入多张图片呢?其实很简单,构造多个不同的HSSFClientAnchor对象,控制好那八个参数,如下:
其余代码一样,得到如下结果:
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
这里采用的是在服务端先生成Excel文件,然后利用文件地址下载的方法。生成Excel文件的方法,见:【原】.Net创建Excel文件(插入数据、修改格式、生成图
本文实例讲述了Python向Excel中插入图片的简单实现方法。分享给大家供大家参考,具体如下:使用Python向Excel文件中插入图片,这个功能之前学习xl
本文实例讲述了java使用POI读取properties文件并写到Excel的方法。分享给大家供大家参考。具体实现方法如下:packagecom.hubbers
本文实例讲述了nodejs导出excel的方法。分享给大家供大家参考。具体如下:nodejs对查询数据生成excel并下载,采用方式先生成本excel文件,然后
本文实例讲述了Java实现读取及生成Excel文件的方法。分享给大家供大家参考,具体如下:一、读取Excel文件需要先下载poi-3.0.1-FINAL-200