900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > poi 生成word 表格 并向表格单元格中插入多个图片

poi 生成word 表格 并向表格单元格中插入多个图片

时间:2021-07-21 19:39:44

相关推荐

poi 生成word 表格 并向表格单元格中插入多个图片

接这上一篇,导入数据,也要完整导出来。话不多说,直接上代码。 效果图

//根据实体对象 ,生成XWPFDocument public static XWPFDocument exportDataInfoWord(List<DataInfoEntity> list) throws NoSuchFieldException,IllegalAccessException {MyXWPFDocument doc = new MyXWPFDocument();XWPFTable table = doc.createTable(list.size() + 1, 12);List<TSType> types = ResourceUtil.getCacheTypes("primaryUse".toLowerCase());for(int colsIndex=0;colsIndex<fieldsNames.length;colsIndex++){XWPFTableCell cell = table.getRow(0).getCell(colsIndex);cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);XWPFParagraph p1 = cell.getParagraphs().get(0);XWPFRun r1 = p1.createRun();r1.setBold(true);r1.setText(fieldsNames[colsIndex]);}for(int rowIndex =1, listIndex =0; listIndex<list.size();rowIndex++,listIndex++){Class entityClass = list.get(listIndex).getClass();for(int colsIndex=0;colsIndex<fields.length;colsIndex++){Field field = entityClass.getDeclaredField(fields[colsIndex]);field.setAccessible(true);Object value = field.get(list.get(listIndex));XWPFTableCell cell = table.getRow(rowIndex).getCell(colsIndex);if(value instanceof Date){cell.setText(new SimpleDateFormat("yyyy-MM-dd").format((Date)value));}else if(colsIndex == 4){cell.setText(list.get(listIndex).getFgTypeName());}else if(colsIndex == 5){cell.setText(list.get(listIndex).getFgVarietiesName());}else if(colsIndex == 7){for(TSType tsType:types){if(tsType.getTypecode().equals(list.get(listIndex).getPrimaryUse())){cell.setText(tsType.getTypename());}}}else if(value instanceof Float){cell.setText(String.valueOf(value));} else if (colsIndex == 11 && value instanceof String && value!=null) {setCellImage(cell,value.toString());}else {if(value!=null){cell.setText(value.toString());}}}}return doc;}//单元格写入图片private static void setCellImage(XWPFTableCell cell,String urls) {if(StringUtils.isBlank(urls))return;String [] urlArray = urls.split(",");String ctxPath=ResourceUtil.getConfigByName("webUploadpath");List<XWPFParagraph> paragraphs = cell.getParagraphs();XWPFParagraph newPara = paragraphs.get(0);XWPFRun imageCellRunn = newPara.createRun();for(String url:urlArray){String downLoadPath = ctxPath+File.separator + url;File image = new File(downLoadPath);if(!image.exists()){continue;}int format;if (url.endsWith(".emf")) {format = XWPFDocument.PICTURE_TYPE_EMF;} else if (url.endsWith(".wmf")) {format = XWPFDocument.PICTURE_TYPE_WMF;} else if (url.endsWith(".pict")) {format = XWPFDocument.PICTURE_TYPE_PICT;} else if (url.endsWith(".jpeg") || url.endsWith(".jpg")) {format = XWPFDocument.PICTURE_TYPE_JPEG;} else if (url.endsWith(".png")) {format = XWPFDocument.PICTURE_TYPE_PNG;} else if (url.endsWith(".dib")) {format = XWPFDocument.PICTURE_TYPE_DIB;} else if (url.endsWith(".gif")) {format = XWPFDocument.PICTURE_TYPE_GIF;} else if (url.endsWith(".tiff")) {format = XWPFDocument.PICTURE_TYPE_TIFF;} else if (url.endsWith(".eps")) {format = XWPFDocument.PICTURE_TYPE_EPS;} else if (url.endsWith(".bmp")) {format = XWPFDocument.PICTURE_TYPE_BMP;} else if (url.endsWith(".wpg")) {format = XWPFDocument.PICTURE_TYPE_WPG;} else {logger.error("Unsupported picture: " + url +". Expected emf|wmf|pict|jpeg|png|dib|gif|tiff|eps|bmp|wpg");continue;}try (FileInputStream is = new FileInputStream(downLoadPath)) {imageCellRunn.addPicture(is, format, image.getName(), Units.toEMU(100), Units.toEMU(100)); // 200x200 pixels}catch (Exception e){logger.error(e.getMessage());e.printStackTrace();}// imageCellRunn.addBreak();}}复制代码

实体对象

package com.entity.garden;import java.math.BigDecimal;import java.util.Date;import javax.persistence.*;import org.hibernate.annotations.DynamicInsert;import org.hibernate.annotations.DynamicUpdate;import org.hibernate.annotations.GenericGenerator;import org.jeecgframework.poi.excel.annotation.Excel;/** * @Title: Entity* @Description: 上传数据信息* @author zhangdaihao* @date -05-12 16:54:17* @version V1.0 **/@Entity@Table(name = "g_data_info", schema = "")@DynamicUpdate(true)@DynamicInsert(true)@SuppressWarnings("serial")public class DataInfoEntity implements java.io.Serializable {/**id*/private java.lang.String id;/**时间*/@Excel(name="年份", width = 15, format = "yyyy-MM-dd")private java.util.Date dataInfoTime;/**省*/@Excel(name="省", width = 15)private java.lang.String provinceId;/**市*/@Excel(name="市", width = 15)private java.lang.String cityId;/**区*/@Excel(name="区或县", width = 15)private java.lang.String areaId;@Excel(name="果蔬种类", width = 15)@Transientprivate String fgTypeName;@Excel(name="果蔬品种", width = 15)@Transientprivate String fgVarietiesName;/**果蔬种类*/private FgTypeEntity fgTypeEntity;/**果蔬品种*/private FgVarietiesEntity fgVarietiesEntity;/**生产量*/@Excel(name="生产量", width = 15 ,type = 4 )private java.lang.Float outPus;/**主要用途*/@Excel(name="主要用途", width = 25, dicCode="primaryUse")private java.lang.String primaryUse;/**加工量*/@Excel(name="加工量", width = 15 ,type = 4 )private java.lang.Float processCapacity;/**加工副产量*/@Excel(name="加工副产量", width = 15 ,type = 4 )private java.lang.Float byProduceProcess;/**加工副产物适应性评价*/@Excel(name="加工副产物适应性评价", width = 25 )private java.lang.String evaluate;/**图片*/@Excel(name="图片", width =50 ,type=2)private java.lang.String fileIds;private String userName;private Date createTime;/***方法: 取得java.lang.String*@return: java.lang.String id*/@Id@GeneratedValue(generator = "paymentableGenerator")@GenericGenerator(name = "paymentableGenerator", strategy = "uuid")@Column(name ="ID",nullable=false,length=36)public java.lang.String getId(){return this.id;}/***方法: 设置java.lang.String*@param: java.lang.String id*/public void setId(java.lang.String id){this.id = id;}/***方法: 取得java.util.Date*@return: java.util.Date 时间*/@Column(name ="DATA_INFO_TIME",nullable=true)public java.util.Date getDataInfoTime(){return this.dataInfoTime;}/***方法: 设置java.util.Date*@param: java.util.Date 时间*/public void setDataInfoTime(java.util.Date dataInfoTime){this.dataInfoTime = dataInfoTime;}/***方法: 取得java.lang.String*@return: java.lang.String 省*/@Column(name ="PROVINCE_ID",nullable=true,length=36)public java.lang.String getProvinceId(){return this.provinceId;}/***方法: 设置java.lang.String*@param: java.lang.String 省*/public void setProvinceId(java.lang.String provinceId){this.provinceId = provinceId;}/***方法: 取得java.lang.String*@return: java.lang.String 市*/@Column(name ="CITY_ID",nullable=true,length=36)public java.lang.String getCityId(){return this.cityId;}/***方法: 设置java.lang.String*@param: java.lang.String 市*/public void setCityId(java.lang.String cityId){this.cityId = cityId;}/***方法: 取得java.lang.String*@return: java.lang.String 区*/@Column(name ="AREA_ID",nullable=true,length=36)public java.lang.String getAreaId(){return this.areaId;}/***方法: 设置java.lang.String*@param: java.lang.String 区*/public void setAreaId(java.lang.String areaId){this.areaId = areaId;}/***方法: 取得java.lang.String*@return: java.lang.String 果蔬种类*/@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "FG_TYPE_ID")public FgTypeEntity getFgTypeEntity() {return fgTypeEntity;}public void setFgTypeEntity(FgTypeEntity fgTypeEntity) {this.fgTypeEntity = fgTypeEntity;}@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "FG_VARIETIES_ID")public FgVarietiesEntity getFgVarietiesEntity() {return fgVarietiesEntity;}public void setFgVarietiesEntity(FgVarietiesEntity fgVarietiesEntity) {this.fgVarietiesEntity = fgVarietiesEntity;}/***方法: 取得java.lang.Float*@return: java.lang.Float 生产量*/@Column(name ="OUT_PUS",nullable=true,precision=10,scale=2)public java.lang.Float getOutPus(){return this.outPus;}/***方法: 设置java.lang.Float*@param: java.lang.Float 生产量*/public void setOutPus(java.lang.Float outPus){this.outPus = outPus;}/***方法: 取得java.lang.String*@return: java.lang.String 主要用途*/@Column(name ="PRIMARY_USE",nullable=true,length=1000)public java.lang.String getPrimaryUse(){return this.primaryUse;}/***方法: 设置java.lang.String*@param: java.lang.String 主要用途*/public void setPrimaryUse(java.lang.String primaryUse){this.primaryUse = primaryUse;}/***方法: 取得java.lang.Float*@return: java.lang.Float 加工量*/@Column(name ="PROCESS_CAPACITY",nullable=true,precision=10,scale=2)public java.lang.Float getProcessCapacity(){return this.processCapacity;}/***方法: 设置java.lang.Float*@param: java.lang.Float 加工量*/public void setProcessCapacity(java.lang.Float processCapacity){this.processCapacity = processCapacity;}/***方法: 取得java.lang.Float*@return: java.lang.Float 加工副产量*/@Column(name ="BY_PRODUCE_PROCESS",nullable=true,precision=10,scale=2)public java.lang.Float getByProduceProcess(){return this.byProduceProcess;}/***方法: 设置java.lang.Float*@param: java.lang.Float 加工副产量*/public void setByProduceProcess(java.lang.Float byProduceProcess){this.byProduceProcess = byProduceProcess;}/***方法: 取得java.lang.String*@return: java.lang.String 加工副产物适应性评价*/@Column(name ="EVALUATE",nullable=true,length=2000)public java.lang.String getEvaluate(){return this.evaluate;}/***方法: 设置java.lang.String*@param: java.lang.String 加工副产物适应性评价*/public void setEvaluate(java.lang.String evaluate){this.evaluate = evaluate;}/***方法: 取得java.lang.String*@return: java.lang.String 图片*/@Column(name ="FILE_IDS",nullable=true,length=2000)public java.lang.String getFileIds(){return this.fileIds;}/***方法: 设置java.lang.String*@param: java.lang.String 图片*/public void setFileIds(java.lang.String fileIds){this.fileIds = fileIds;}@Transientpublic String getFgTypeName() {if(fgTypeName == null&&fgTypeEntity!=null){return this.fgTypeEntity.getName();}return fgTypeName;}public void setFgTypeName(String fgTypeName) {this.fgTypeName = fgTypeName;}@Transientpublic String getFgVarietiesName() {if(fgVarietiesName == null&&fgVarietiesEntity!=null){return this.fgVarietiesEntity.getName();}return fgVarietiesName;}public void setFgVarietiesName(String fgVarietiesName) {this.fgVarietiesName = fgVarietiesName;}@Column(name ="user_name",nullable=true)public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}@Column(name ="create_time",nullable=true)public Date getCreateTime() {return createTime;}public void setCreateTime(Date createTime) {this.createTime = createTime;}}复制代码

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。