找回密码
 立即注册

QQ登录

只需一步,快速开始

Winny

超级版主

141

主题

260

帖子

1673

积分

超级版主

Rank: 8Rank: 8

积分
1673
Winny
超级版主   /  发表于:2022-1-20 17:37  /   查看:2114  /  回复:0
本帖最后由 Winny 于 2022-1-21 10:27 编辑

常见的表格产品在复制粘贴时,支持黏贴复制区域的链接快照,这样当原区域数据发生变化时,复制过来的区域数据也会随之变化,具体效果展示如下:
linkedpicture.gif796700744.png
GCExcel在5.0中支持了这一功能,针对该功能添加的API主要有:
(1) 添加区域快照的相关API
  1. IShapes.AddCameraPicture(string reference, double left, double top);
  2. IShapes.AddCameraPicture(string reference, string name, double left, double top);
  3. IShapes.AddCameraPicture(string reference, double left, double top, double width, double height);
  4. IShapes.AddCameraPicture(string reference, string name, double left, double top, double width, double height);
复制代码

(2)获取或者设置区域快照是否使用背景图片
  1. IPictureFormat.TransparentBackground { get; set; }
复制代码
(3)获取或设置当前区域快照引用的区域
  1. IPictureFormat.Reference { get; set; }
复制代码
需要特别说明的几点有:
(1)设置区域快照的背景图或引用会改变区域快照的内容;
(2)如果区域快照应用为null或空字符串,区域快照会变成一个普通图片;
(3)为普通的图片设置引用信息,普通图片会变为区域快照;
(4)不支持跨表引用。
简单的演示示例如下:
  1. Workbook workbook = new Workbook();
  2. IWorksheet sheet = workbook.getActiveSheet();
  3. sheet.getRange("A1").getInterior().setColor(Color.GetBlue());
  4. sheet.getRange("A1").setValue(123);
  5. IShape shape = sheet.getShapes().addCameraPicture("=$A$1:$B$4", 100, 100);
  6. workbook.save("out.xlsx");
复制代码

示例代码运行结果如下:
image.png199794310.png
其它相关API简单介绍如下:
  1. Workbook workbook = new Workbook();
  2. IWorksheet sheet = workbook.getActiveSheet();
  3. sheet.getRange("A1").getInterior().setColor(Color.GetBlue());
  4. sheet.getRange("A1").setValue(123);
  5. //添加区域快照
  6. IShape shape = sheet.getShapes().addCameraPicture("=$A$1:$B$4", 100, 100);
  7. //设置区域链接背景色是否为透明
  8. shape.getPictureFormat().setTransparentBackground(true);
  9. //获取区域快照的引用区域
  10. shape.getPictureFormat().getReference();
  11. //将区域快照转为普通图片
  12. shape.getPictureFormat().setReference(null);
复制代码

0 个回复

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