用IMAGE做迷你折线图

wils
wils Lv.2 潜力创作者

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传递参数,获得千变万化的图片

广东省
浏览 84
1
7
分享
7 +1
1
1 +1
全部评论 1
 
wils
wils Lv.2 潜力创作者

Lv.2潜力创作者

让ai解释代码的每一句,然后尝试做出修改 让ai解释svg,做出炫酷的效果 这些已经非常准确了,只要愿意动手,都很简单,说到底不过是文本替换。。。
· 海南省
回复