场景
最近公司站点在做国际化,有些中文需要翻译。
但这些中文都不规则的分散在字符串里,如果一个个复制粘贴的话,工作量还挺大,原本想网上找现成的脚本,但发现都只能截取一段中文。然后就自己花了点时间 弄了个能自动获取,并导出这些中文字符的脚本。
不多说直接上代码:
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模块的配置