Shell脚本(11)——写入csv文件

wils
wils

创作者俱乐部成员

今天看到论坛里,有需要保留数字开头的0,写入csv文件的问题。

其实,之前发过的第3个Shell脚本的帖子,就是解决这种问题的,这里稍微说详细一点:

  • 首先需要下载busybox-w32.exe,把它放到环境变量PATH里

  • 然后在当前xlsm文件相同目录下,建立cgi-bin文件夹,里面建立tee.sh文件,内容是

💡

#!/bin/sh

echo -e 'Content-type: text/plain; charset=utf-8\n'

tee "../${QUERY_STRING##*\?}"

echo ok

这里如果需要存为gbk编码的csv,则在tee前面加上iconv -f utf-8 -t gbk -c |这一句

如果需要带bom的utf8,则在echo前加一行,unix2dos "../${QUERY_STRING##*\?}"

  • 然后在xlsm里编辑JS宏,内容是

📌

function tt()

{

Shell(`busybox httpd -p 8080 -h ${ThisWorkbook.Path}`, jsHide)

let ret = ""

for (let i of ActiveSheet.UsedRange.Value2) {

ret += i.map(x=>`="${x}"`).join(",") + "\n"

}

fetch("http://localhost:8080/cgi-bin/tee.sh?a.csv", {

method: "POST",

body: ret

}).then(r=>{console.log(r.status)})

}

意思是通过fetch方法,把ret的内容,写入a.txt

其中ret,是读取表格,用逗号和回车连接行列得到的文本

如果需要双击打开csv时,保留前面的0,需要在数字外面套一层=""

没办法,现在JS宏里只有fetch方法最稳定,open、put老出问题,加载项又变来变去,不如busybox开个web接口。从上面也能看出,想要什么编码就什么编码,想怎么改样式就怎么改,web接口还是比较灵活的,凑活用吧。。。

海南省
浏览 557
收藏
2
分享
2 +1
1
+1
全部评论 1
 
方盛
方盛

创作者俱乐部成员

六一快乐
· 湖北省
1
回复