找回密码
 立即注册

QQ登录

只需一步,快速开始

Winny

超级版主

141

主题

261

帖子

1682

积分

超级版主

Rank: 8Rank: 8

积分
1682
Winny
超级版主   /  发表于:2022-12-6 11:26  /   查看:1718  /  回复:0
本帖最后由 Winny 于 2022-12-6 11:35 编辑

SpreadJS V15之后,图片迁移至形状下,提供了裁剪、透明度、旋转、固定位置等相关API,如下所示:

image.png570923461.png
其中,比较高频的用法就是结合startRow、startColumn、endRow、endColumn将图片固定在某一区域中,具体代码如下:
  1. let designer = GC.Spread.Sheets.Designer.findControl(document.getElementById('gc-designer-container'))
  2. let spread = designer.getWorkbook()
  3. let sheet = spread.getActiveSheet()
  4. let pic01 = sheet.shapes.addPictureShape("pic01","https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR1ztd9EV-bETHnpd5SDxCCahPUV34AUZZEtw&usqp=CAU",0,0,225,225)
  5. pic01.startRow(3)
  6. pic01.endRow(12)
  7. pic01.startColumn(2)
  8. pic01.endColumn(5)
  9. pic01.allowMove(false)
  10. pic01.allowResize(false)
复制代码
通过上边的代码,即可将图片固定在视图区域中。但是当迁移到服务端来实现该功能时,就会有点茫然,因为GCExcel图片上并找不到固定行列信息的设置方法。GCExcel中addPictureInPixel有多种构造函数 ,可以采用下边代码的中的构造函数,5个参数依次代表文件路径、左偏移、上偏移、图片宽度、图片高度。其中左边距和上边距可以巧妙的借助Range的信息来检测,以此实现在特定区域加图片。
  1. Workbook wb = new Workbook();
  2.                 IWorksheet ws = wb.getWorksheets().get(0);
  3.                 // 使用单元格名称获取区域
  4.                 // IRange range = ws.getRange("A1:D4");
  5.                 // 使用行列索引获取区域
  6.                 IRange range = ws.getRange(3, 3, 7, 7);
  7.                 Rectangle rect = CellInfo.GetRangeBoundary(range);
  8.                 ws.getShapes().addPictureInPixel("开心果.png", rect.getX(), rect.getY(), rect.getWidth(), rect.getHeight());
  9.                 wb.save("test.xlsx");
复制代码




0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部