当前位置: 首页 > news >正文

购物网站的设计头像制作免费生成器

购物网站的设计,头像制作免费生成器,建设项目招标在什么网站公示,管理系统官方网站Apache POI中通过WorkBook写入图片后出现导出PDF文件时在不同页重复写入该图片问题,如何在通过sheet获取绘图对象清除该图片一、问题描述如导出PDF文件为3页 想要的样式:- 第一页存在图片1。- 第二页存在图片2。- 第三页存在图片3。实际导出样式&#xf…

Apache POI中通过WorkBook写入图片后出现导出PDF文件时在不同页重复写入该图片问题,如何在通过sheet获取绘图对象清除该图片

一、问题描述


如导出PDF文件为3页
想要的样式:

 - 第一页存在图片1。
- 第二页存在图片2。
- 第三页存在图片3。

实际导出样式:
- 第一页存在图片1。
- 第二页存在图片1、图片2。
- 第三页存在图片1、图片2、图片3。

如重置绘图后第二页报空并且无法写入数据。

// 或者完全新建一个 CTDrawing 对象
CTDrawing newCTDrawing = CTDrawing.Factory.newInstance();
// 将新对象设置回绘图
drawing.setCTDrawing(newCTDrawing);

二、解决方法


1.写入图片方法代码

//row 行
//col 列
//imagePath 图片路径
private void addImageToSheetCell(int row,int col, String imagePath) throws IOException{//读取图片文件-如怕出现路径文件为空可加入try catch进行异常抛出从而继续运行程序InputStream inputStream = new FileInputStream(imagePath);byte[] bytes = IOUtils.toByteArray(inputStream);//将图片添加到工作簿,并返回索引int pictureIdx = workbook.addPicture(bytes, imagePath.endsWith(".png") ? Workbook.PICTURE_TYPE_PNG : Workbook.PICTURE_TYPE_JPEG);inputStream.close();//准备插入图片的工具CreationHelper helper = workbook.getCreationHelper();XSSFDrawing drawing = sheet.createDrawingPatriarch();//设置图片位置(锚点)ClientAnchor anchor = helper.createClientAnchor();//定位到第2行第3列(C2单元格),跨1列1行(--双锚点定位图片--)anchor.setCol1(2);anchor.setRow1(1);anchor.setCol2(3);anchor.setRow2(2);//以下代码可忽略,这没有用到//----获取图片宽高、单元格宽高,可用来自定义图片大小。XSSFPicture pict = drawing.createPicture(anchor, pictureIdx);// 获取图片的高和宽int picHeight = pict.getImageDimension().height;int picWidth = pict.getImageDimension().width;// 获取单元格的高和宽(保持原参数名)float totalHeight = Units.pointsToPixel(sheet.getRow(row).getHeightInPoints());float totalWidth = Units.pointsToPixel(sheet.getColumnWidthInPixels(col));//设置图片大小和位置,Units.EMU_PER_PIXEL为像素点单位anchor.setDy1(1* Units.EMU_PER_PIXEL);anchor.setDy2(1* Units.EMU_PER_PIXEL);anchor.setDx1(1* Units.EMU_PER_PIXEL);anchor.setDx2(1* Units.EMU_PER_PIXEL);}


2.图片清除方法

//写入新一页数据前清除上一页存在的的图片
public void removeAllPictures() {//获取绘图对象XSSFDrawing drawing = sheet.getDrawingPatriarch();//检查是否存在绘图对象if (drawing != null){//获取所有图片的锚点列表的长度(写入图片时用的是双锚点定位方式)int t=drawing.getCTDrawing().getTwoCellAnchorList().size();//每次移除后会刷新双锚点集合的长度//每次移除集合中的第一个参数才能实现图片移除for (int i = 0; i < t; i++) {drawing.getCTDrawing().removeTwoCellAnchor(0);}}
}


三、知识点


1.TwoCellAnchor(双锚点):

- 使用两个单元格来定位对象(左上角和右下角)。
- 对象的位置和大小会随着这两个单元格的位置变化而自动调整。
- 通常用于需要动态调整大小的场景(例如,图片需要跟随单元格的行高/列宽变化)。
- 在 Excel 中插入的图片默认使用 TwoCellAnchor。

2.OneCellAnchor(单锚点):

- 使用一个单元格(通常是左上角)和固定的偏移量(如像素或 EMU 单位)来定位对象。
- 对象的大小和位置是相对于该单元格的固定值,不会随单元格的行高/列宽变化而自动调整。
- 通常用于需要固定位置和大小的场景。





http://www.dtcms.com/a/454479.html

相关文章:

  • 怎么做ppt教程网站网页设计登录注册页面代码
  • 【51单片机】【protues仿真】基于51单片机贪吃蛇游戏系统
  • 昆明学校网站设计公司网页设计项目模板代码
  • 有没有做培养基的网站已备案网站想关闭
  • 【Canvas与旗帜】油管五常之印度旗恒河之眼版
  • 广州门户网站开发济南seo优化外包
  • 微网站样式wordpress 插件编写
  • Oracle数据库常见问题实战:从连接错误到自动清理空闲会话
  • 网站开发项目管理步骤如何做国外的网站
  • 建设银行潍坊支行网站wordpress博客二次元
  • html5网站开发特点wordpress导出导入
  • 个人博客网站总结全网营销解决方案
  • 域名注册好后怎么建设网站官网浏览器
  • Smac Planner与 NavFn Planner 的对比分析
  • 傅里叶变换·思考
  • 南部县网站建设怎样建单位的网站
  • 虹桥做网站WordPress的主题制作教程
  • 太仓高端网站制作甘肃省建设银行校园招聘网站
  • 人力资源网站建设方案安装wordpress中文包
  • 江苏省建设厅网站建造师强制注销有哪些网站的搜索引擎
  • wordpress 多语言网站网站配图尺寸
  • 站长工具在线免费观看网络营销推广网站
  • tdk标签影响网站权重广州现在算什么风险地区
  • AssemblyScript 入门教程(9):直接内存管理
  • 新的南宁网站建设公司WordPress中文空格
  • 手机网站设计小程序wordpress用什么系统
  • STIP开源股票技术指标回测分析平台产品深度分析
  • 什么网站可以接室内设计做建设人力资源网
  • 图文详解Transformer模型——解码器输入(shifted input)详解
  • 网站推广方案策划书2000杭州g20网站建设公司