js 截取多段中文字符并导出excel

165 阅读1分钟

场景

最近公司站点在做国际化,有些中文需要翻译。

但这些中文都不规则的分散在字符串里,如果一个个复制粘贴的话,工作量还挺大,原本想网上找现成的脚本,但发现都只能截取一段中文。然后就自己花了点时间 弄了个能自动获取,并导出这些中文字符的脚本。

不多说直接上代码:
import xlsx from "node-xlsx";
import fs from "fs";


var str="苏木sumu导出excel成功,xixi嘻嘻666冲啊"

//首先处理成 由单个中文组成的数组
var zh_arr = []
for (let v in str){
    const reg = /[\u4e00-\u9fa5]/g;
    if(str[v].match(reg)){
        zh_arr.push({
            key: Number(v), //下标值,用于接下来的数据处理
            val: str[v]
        })
    }
}


//根据下标值进行判断,将连续的中文字符串拼接在一起
var result = {}
var key = {
    current_key: zh_arr[0].key,//当前还在存贮的位置的key
    newest_key: zh_arr[0].key//当前最新的key
}
for(let item of zh_arr){
    if(item.key-key.newest_key==1){
        result[key.current_key] = result[key.current_key].concat(item.val)
        key = {
            current_key: key.current_key,
            newest_key: item.key
        }
    } else {
        result[item.key] = item.val
        key = {
            current_key: item.key,
            newest_key: item.key
        }
    }
}

//构建xlsx需要的数据格式
var finalResult = []
for(let k in result){
    finalResult.push([result[k]])
}
const list = [
    {
        name: "sheet",
        data: finalResult
    },
];

//开始导出
const buffer = xlsx.build(list);
fs.writeFile("中文导出.xlsx", buffer, function (err) {
    if (err) {
        console.log(err, "excel导出失败");
    } else {
        console.log("excel导出成功!!!");
    }
});

最后

导出表格成功,如果对于excel有更细节的需求,像单元格宽度之类,可以具体看下xlsx模块的配置

1678105635206.jpg