找回密码
 立即注册

QQ登录

只需一步,快速开始

Winny

超级版主

141

主题

263

帖子

1696

积分

超级版主

Rank: 8Rank: 8

积分
1696
Winny
超级版主   /  发表于:2022-9-6 18:45  /   查看:1992  /  回复:0
GCExcel V5.2之后,对SVG类型做了全面的支持,主要为以下三点:1. 支持区域Range转化为SVG文件;
2. 支持文件插入SVG文件;
3. 支持使用SVG文件填充形状。
下面会详细介绍三个新特性的详细实现代码。

1. 支持区域Range转化为SVG文件
  1. public static void rangeExportSvg() throws FileNotFoundException {
  2.     Workbook wb = new Workbook();
  3.     IWorksheet ws = wb.getWorksheets().get(0);
  4.     Object data = new Object[][] { { "Name", "City", "Birthday", "Eye color", "Weight", "Height" },
  5.     { "Richard", "New York", new GregorianCalendar(1968, 5, 8), "Blue", 67, 165 },
  6.     { "Nia", "New York", new GregorianCalendar(1972, 6, 3), "Brown", 62, 134 },
  7.     { "Jared", "New York", new GregorianCalendar(1964, 2, 2), "Hazel", 72, 180 },
  8.     { "Natalie", "Washington", new GregorianCalendar(1972, 7, 8), "Blue", 66, 163 },
  9.     { "Damon", "Washington", new GregorianCalendar(1986, 1, 2), "Hazel", 76, 176 },
  10.     { "Angela", "Washington", new GregorianCalendar(1993, 1, 15), "Brown", 68, 145 } };
  11.     // set two-dimension array value to range A1:F7
  12.      ws.getRange("A1:F7").setValue(data);
  13.      ws.getRange("A1:F7").getFont().setBold(true);
  14.      ws.getRange("A1:F7").getFont().setColor(Color.GetBlack());
  15.      ws.getRange("A1:F7").getBorders().setLineStyle(BorderLineStyle.DashDot);
  16.      ws.getRange("A1:F7").getBorders().setColor(Color.GetBlue());
  17.      FileOutputStream fos = new FileOutputStream("rangeSvg.svg");
  18.      ws.getRange("A1:F7").toImage(fos, ImageType.SVG);
  19.         }
复制代码

最终导出SVG展示如下:
image.png72781371.png

2. 支持工作簿插入SVG文件
  1. public static void addSvgFile() throws IOException {
  2.     Workbook wb = new Workbook();
  3.     IWorksheet ws = wb.getWorksheets().get(0);
  4.     File file = new File("fegaussianblur1.svg");
  5.     FileInputStream fis = new FileInputStream(file);
  6.     ws.getShapes().addPictureInPixel(fis, ImageType.SVG, 0, 0, 300, 300);
  7.     wb.save("test.xlsx");
  8.         }
复制代码
导出文件效果如下所示:
image.png800990905.png

3. 支持SVG文件填充形状
  1. public static void shapeFillSvg() throws IOException {
  2.     Workbook wb = new Workbook();
  3.     IWorksheet ws = wb.getWorksheets().get(0);
  4.     File file = new File("fegaussianblur1.svg");
  5.     FileInputStream fis = new FileInputStream(file);
  6.     IShape shape = ws.getShapes().addShape(AutoShapeType.Rectangle, 20, 20, 200, 200);
  7.     shape.getFill().userPicture(fis, ImageType.SVG);
  8.     shape.getPictureFormat().setBrightness(0.6);
  9.     shape.getPictureFormat().setContrast(0.3);
  10.     wb.save("test.xlsx");
  11.         }
复制代码


到处文件效果如下:
image.png692044982.png





fegaussianblur1.svg

436 Bytes, 下载次数: 175

0 个回复

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