对指定的单元格进行填充具体的值:

public static boolean setValuebySheetRowColumn(Sheet OneSheet, int row, int column, String value) {Row Sheet_row;Cell Sheet_cell;Sheet_row = OneSheet.getRow(row);Sheet_cell = Sheet_row.getCell(column);Sheet_cell.setCellValue(value);return true;
}

对指定的单元格进行指定格式填充:

XSSFFont  对象

CellStyle  对象

CellStyle cellStyle = wb.createCellStyle();
                       cellStyle.setFillBackgroundColor(IndexedColors.RED.index); //   背景色
                       XSSFFont font = wb.createFont();
                        font.setColor(Font.COLOR_RED);//字体颜色
                       font.setStrikeout(true);//删除线
                       cellStyle.setFont(font);
                       cell.setCellStyle(cellStyle);

对指定的单元格进行图片水印填充:(自定义偏移量,缩放比例)

多图片:

 public static boolean InsertPic(List<String> piclist, XSSFWorkbook xssfWorkbook, Sheet sheet, List<Integer> row, List<Integer> column) throws IOException {try{for (int i = 0; i < piclist.size(); i++) {
//                piclist.set(i,"C:\\Users\\yhl\\Desktop\\code\\client\\vueT5-dev\\src\\assets\\icons\\add_cnc.png") ;FileInputStream stream=new FileInputStream(piclist.get(i));BufferedImage bufferImg;bufferImg = ImageIO.read(new File(piclist.get(i)));int maxWidth = 17,maxHeight=8;//x1=12左侧预留12宽度,y1=15上方预留15宽度int x1=2,y1=2,x2=17,y2=8;/* 原始图像的宽度和高度 */int width = bufferImg.getWidth();int height = bufferImg.getHeight();if (width>height) {//宽大于高//假设左右各留出12宽度,图片宽设置为最大,占据约1000(=maxWidth-12*2)double rate = (double)(maxWidth-x1*2)/width;//比例int eHeight = (int)(height*rate);//等比例算出需要的高度//如果图片高度+y1大于255,则设置图片的高度为255-y1=240,重新计算宽度if(eHeight+y1>maxHeight) {rate = (double) (maxHeight-y1)/height;//重新计算比例int ewidth = (int)(width*rate);//等比例算出需要的宽度y2 = (maxHeight-y1);//y2坐标x2 = ewidth+x1;if(x2<16){//如果图片不居中,重新计算x1位置,使图片居中x1 = (maxWidth-x2)/2;//图片居中x2 = ewidth+x1;}}else {y2 = y1+eHeight;//这里就不设置图片上下居中了(保留图片距离上方15)x2 = (maxWidth-x1*2);}}else{//高大于宽//假设上留出15宽度,图片高设置为最大,占据240(=255-15)double rate = (double)(maxHeight-y1)/height;//比例int ewidth = (int)(width*rate);//等比例算出需要的宽度//如果图片高度>宽,高最大为240,宽最大为1012,所以宽不会超出y2 = (maxHeight-y1);x2 = ewidth+x1;if(x2<16){//如果图片不居中,重新计算x1位置,使图片居中x1 = (maxWidth-x2)/2;//图片居中x2 = ewidth+x1;}}byte[] bytes= IOUtils.toByteArray(stream);//向Excel添加一张图片,并返回该图片在Excel中的图片集合中的下标int pictureIdx = xssfWorkbook.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);//绘图工具类CreationHelper helper = xssfWorkbook.getCreationHelper();//创建一个绘图对象Drawing<?> patriarch = sheet.createDrawingPatriarch();//创建锚点,设置图片坐标ClientAnchor anchor = helper.createClientAnchor();anchor.setRow1(row.get(i));anchor.setCol1(column.get(i));anchor.setDx1(x1* XSSFShape.EMU_PER_POINT);anchor.setDy1(y1*XSSFShape.EMU_PER_POINT);anchor.setDx2(x2*XSSFShape.EMU_PER_POINT);anchor.setDx2(y2*XSSFShape.EMU_PER_POINT);// 创建图片Picture picture = patriarch.createPicture(anchor, pictureIdx);//计算缩放比例Row sheetRow =  sheet.getRow(row.get(i));Cell cell = sheetRow.getCell(column.get(i));double standardWidth = 35;double standardHeight = 20;// 计算单元格的长宽double cellWidth = sheet.getColumnWidthInPixels(cell.getColumnIndex());double cellHeight = cell.getRow().getHeightInPoints()/72*96;// 计算需要的长宽比例的系数double a = standardWidth / cellWidth;double b = standardHeight / cellHeight;picture.resize(a,b);}}catch (Exception ignored){}finally {}return true;}

合并单元格 :

CellRangeAddress newRange=new CellRangeAddress(rowIdx, rowIdx, 16, 18);

//开始行、结束行,开始列,结束列

sheet.addMergedRegionUnsafe(newRange);

//取消合并单元格
public static void removeMerged(Sheet sheet, Integer startRow, Integer endRow, Integer startColumn, Integer endColumn) {if(startRow==null){startRow= sheet.getFirstRowNum();}if(endRow==null){endRow= sheet.getLastRowNum();}//获取所有的单元格int sheetMergeCount = sheet.getNumMergedRegions();//用于保存要移除的那个合并单元格序号List<Integer> indexList = new ArrayList<>();for (int i = 0; i < sheetMergeCount; i++) {//获取第i个单元格CellRangeAddress ca = sheet.getMergedRegion(i);int firstColumn = ca.getFirstColumn();int lastColumn = ca.getLastColumn();int firstRow = ca.getFirstRow();int lastRow = ca.getLastRow();if (startRow <= firstRow && endRow >= lastRow && startColumn <= firstColumn && endColumn >= lastColumn) {indexList.add(i);}}sheet.removeMergedRegions(indexList);
}

Java 操作Excel POI相关推荐

  1. java excel api 下载文件_Java-Excel Java操作Excel POI(Jakarta POI API) - 下载 - 搜珍网

    Java操作Excel/Jakarta POI API/data/Jakarta POI API.doc Java操作Excel/Jakarta POI API/jar/poi-3.0.2-FINAL ...

  2. Java操作excel(POI、EasyExcel)

    Apache POI和EasyExcel学习 easyExcel easyExcel 官网地址:https://www.yuque.com/easyexcel/doc/easyexcel EasyEx ...

  3. java excel读取操作,Java 操作 Excel (读取Excel2003 2007,Poi兑现)

    Java 操作 Excel (读取Excel2003 2007,Poi实现) 一. Apache POI 简介( http://poi.apache.org/) 使用Java程序读写Microsoft ...

  4. Java操作Excel三种方式POI、Hutool、EasyExcel

    Java操作Excel三种方式POI.Hutool.EasyExcel 1. Java操作Excel概述 1.1 Excel需求概述 1.2 Excel操作三种方式对比 2. ApachePOIExc ...

  5. Java操作Excel之POI:java读写excel文件以及打印设置

    Java操作Excel之POI:java读写excel文件以及打印设置 POI的jar包下载地址:http://poi.apache.org/download.html 注意:项目中导入poi 4.0 ...

  6. java insert row,POI ,Java 操作 Excel 实现行的插入(insert row)

    POI ,Java 操作 Excel 实现行的插入(insert row) 前几天,正在做一个项目,主要用 POI 来操作 Excel 其中,要使用一个,插入功能.主要是因为从数据库,返回结果集(数据 ...

  7. java操作Excel、PDF文件

    java操作Excel.PDF文件 下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: jxl是一个*国人写的java操作excel的工具, 在开源世界中, ...

  8. java操作excel表

    文章分类:Java编程 http://developers.sun.com.cn/blog/functionalca/entry/java读写excel简介 JAVA EXCEL API简介 Java ...

  9. java excel 插入新行_POI ,Java 操作 Excel 實現行的插入(insert row)

    POI ,Java 操作 Excel 實現行的插入(insert row) 前幾天,正在做一個項目,主要用 POI 來操作 Excel 其中,要使用一個,插入功能.主要是因為從數據庫,返回結果集(數據 ...

最新文章

  1. 插入记录时单引号的处理
  2. solrcloud replica collection core shard slice 概念讲解
  3. pythonsuper_用__init __()方法理解Python super()
  4. aspx是什么语言_什么是网页
  5. linux java services_在Linux上将Java应用程序作为服务运行
  6. Unieap3.5-Grid翻页不提示修改
  7. 稀疏矩阵与 spdiags函数图解
  8. 免费的html代码大全,html代码大全,搜集最全的html代码.doc
  9. Win2008建立kms服务器vlmcsd
  10. C++化学元素周期表
  11. 【活动回顾】大咖分享:流量过后,在线教育的留存和发展
  12. java: 不兼容的类型: java.lang.Long无法转换为java.lang.Intege
  13. android studio按键精灵,按键精灵要点讲解一 - godlike的个人页面 - OSCHINA - 中文开源技术交流社区...
  14. 机器学习在重度抑郁症患者中的应用:从分类到治疗结果预测
  15. golang中的map
  16. 无版权?免费?无水印?高清大图?视频?
  17. eclipse简介及下载
  18. 求勾股数元祖(java)
  19. 在HTML中lt;是什么意思?
  20. 最值得一看的几条简单的谷歌 Google 搜索技巧,瞬间提升你的网络搜索能力!

热门文章

  1. 微信预约小程序14天免费试用【永久有效】
  2. 【若泽大数据 元旦大礼包】
  3. python中elif的练习
  4. 群晖NAS无法联机怎么办?
  5. java-Cast造型运算符
  6. 关机后鼠标指示灯还亮着
  7. @应届生,如何在没有实际项目经验的情况下找到工作
  8. Imatest 崩溃
  9. Windows10 安装电脑管家后卡死
  10. RPM包管理和YUM仓库的使用