Winny 发表于 2022-1-20 17:37:38

GCExcel5.0新特性-区域快照(Linked Picture)

本帖最后由 Winny 于 2022-1-21 10:27 编辑

常见的表格产品在复制粘贴时,支持黏贴复制区域的链接快照,这样当原区域数据发生变化时,复制过来的区域数据也会随之变化,具体效果展示如下:

GCExcel在5.0中支持了这一功能,针对该功能添加的API主要有:
(1) 添加区域快照的相关API
IShapes.AddCameraPicture(string reference, double left, double top);
IShapes.AddCameraPicture(string reference, string name, double left, double top);
IShapes.AddCameraPicture(string reference, double left, double top, double width, double height);
IShapes.AddCameraPicture(string reference, string name, double left, double top, double width, double height);
(2)获取或者设置区域快照是否使用背景图片
IPictureFormat.TransparentBackground { get; set; }(3)获取或设置当前区域快照引用的区域
IPictureFormat.Reference { get; set; }需要特别说明的几点有:
(1)设置区域快照的背景图或引用会改变区域快照的内容;
(2)如果区域快照应用为null或空字符串,区域快照会变成一个普通图片;
(3)为普通的图片设置引用信息,普通图片会变为区域快照;
(4)不支持跨表引用。
简单的演示示例如下:
Workbook workbook = new Workbook();
IWorksheet sheet = workbook.getActiveSheet();
sheet.getRange("A1").getInterior().setColor(Color.GetBlue());
sheet.getRange("A1").setValue(123);
IShape shape = sheet.getShapes().addCameraPicture("=$A$1:$B$4", 100, 100);
workbook.save("out.xlsx");
示例代码运行结果如下:

其它相关API简单介绍如下:
Workbook workbook = new Workbook();
IWorksheet sheet = workbook.getActiveSheet();
sheet.getRange("A1").getInterior().setColor(Color.GetBlue());
sheet.getRange("A1").setValue(123);
//添加区域快照
IShape shape = sheet.getShapes().addCameraPicture("=$A$1:$B$4", 100, 100);
//设置区域链接背景色是否为透明
shape.getPictureFormat().setTransparentBackground(true);
//获取区域快照的引用区域
shape.getPictureFormat().getReference();
//将区域快照转为普通图片
shape.getPictureFormat().setReference(null);
页: [1]
查看完整版本: GCExcel5.0新特性-区域快照(Linked Picture)