用IMAGE做迷你折线图
wils
Lv.2潜力创作者
今天继续玩IMAGE公式🎉
wps里插入迷你折线图的功能很有趣,但好像不能自定义细节
现在有了IMAGE公式,完全可以自定义折线图
首先,让ai写个svg,其实就是一段xml文本
<?xml version="1.0" encoding="UTF-8"?>
<svg width="300" height="100" xmlns="http://www.w3.org/2000/svg">
<polyline points="0,80 50,60 100,40 150,70 200,30 250,50 300,20" fill="none" stroke="#2563eb" stroke-width="2"/>
</svg>然后,写个bat批处理,用收到的http请求里的参数d,替换svg里的points
#ANSI&cls&powershell -Version 5.1 -NoLogo -NoProfile -Command "gc -Encoding Oem -ReadCount 0 -LiteralPath '%~f0'|out-string|iex"&pause&exit/b
$l = [Net.HttpListener]::new()
$l.Prefixes.Add("http://127.0.0.1:8080/")
$l.Start()
while ($l.IsListening) {
$c = $l.GetContext()
$r = $c.Response
$r.ContentType = "image/svg+xml"
$b = [Text.Encoding]::UTF8.GetBytes((@'
<?xml version="1.0" encoding="UTF-8"?>
<svg width="300" height="100" xmlns="http://www.w3.org/2000/svg">
<polyline points="{0}" fill="none" stroke="#2563eb" stroke-width="2"/>
</svg>
'@ -f $c.Request.QueryString["d"]))
$r.OutputStream.Write($b, 0, $b.Length)
$r.Close()
}使用方法:
将上面这段代码用记事本存到一个a.txt文本文件里,改后缀为a.bat,双击运行
就可以在表格里使用IMAGE公式
=IMAGE("http://127.0.0.1:8080?d="&ENCODEURL("0,80 50,60 100,40 150,70 200,30 250,50 300,20"))原理非常简单,svg图片就是个xml文本,批处理弄个http接口,用请求里的d参数替换svg文本里的变量,返回的结果就是表格里绘制的一条折线
可以让ai将svg样式设计的非常炫酷
可以改为在批处理里计算pointer参数,以简化表格里构造参数
可以传递填充颜色,粗细,或改为柱状图等等,svg里的变量都可以当参数传递
总之一切都可以定制,通过IMAGE传递参数,获得千变万化的图片
Lv.2潜力创作者