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