JS宏解析csv

wils
wils

创作者俱乐部成员

昨天论坛里有朋友问,如何快速解析csv文件

于是找到了这个库,宏编辑器导入iife里的sync.js即可

https://github.com/adaltas/node-csv/tree/master/packages/csv-parse/dist/iife


🔔

function tt()

{

const ret = []

for (const f of FileSystem.readdirSync(ThisWorkbook.Path)) {

if (!f.match(/\.csv$/i)) continue

const a = csv_parse_sync.parse(FileSystem.ReadFile(`${ThisWorkbook.Path}\\${f}`))

ret.push(...a)

}

Range('A1').Resize(ret.length, ret[0].length).Value2 = ret

}

写的比较粗,没有文件排序等,只是把30个1000行6列的csv,合并起来写入表格,大概用了3秒


关键的好处是,它可以正确处理双引号里的双引号和逗号

如这种情况a,"b""b,b",c这是3列,第二列是b"b,b


更多的参数和使用方法,可以看官方文档

广东省
浏览 651
1
5
分享
5 +1
9
1 +1
全部评论 9
 
α
你好,请问可以分享wps的js宏发送web请求吗后解析html代码并抓取表格数据吗,纯小白,不进行任何违法操作
· 重庆
回复
wils
wils

创作者俱乐部成员

加qq吧1584603256
· 广东省
回复
 
wils
wils

创作者俱乐部成员

又试了试,如果写入的列多一些,还是很慢,主要是wps写入表格慢。。。 如果只用JS宏处理csv,完成后也是JS宏写入文本,就快很多了
· 广东省
回复
血色忠诚
感谢大佬,我今天才看到这个帖子,您说的js宏处理csv完成后也是js宏写入文本就会快很多,具体是怎么操作是range.text吗,我读取csv有120多列1442行,而且都是数值,js写入文本的话是不是还需要逐行逐个单元的把文本转化成数值或者日期和时间这些格式,那样是不是和range.value2速度差不多
· 天津
回复