前提
- 要将翻译好的数据,一个个手动cv成"key":"value",当数据量大的时候,手动就十分鸡肋了。
方法
用js写了个自动转换的脚本,输出txt,手动一键copy到arb即可,具体如下:
const fs = require('fs');
const XLSX = require('xlsx');
//读取xls数据
function extractExcelData(file_path,dataRow) {
const workbook = XLSX.readFile(file_path);
///默认取第一个sheet表
const worksheet = workbook.Sheets[workbook.SheetNames[0]];
const data = {};
//worksheet['!ref']` 是一个特殊的键,用于访问工作表的数据范围。
//数据范围表示工作表中包含数据的单元格范围。
//XLSX.utils.decode_range 方法将数据范围解码为包含起始行号、起始列号、结束行号和结束列号的对象。
//该范围对象可以帮助我们遍历工作表的特定范围。
//在代码中,我们将解码后的范围对象存储在 `range` 变量中,以便后续使用。
//`range.s` 表示起始单元格,`range.e` 表示结束单元格。
//我们可以使用它们的行号和列号来遍历工作表的每个单元格。
//通过解码范围,我们可以确定需要遍历的工作表数据的范围,从而提取出每行的键值对。
const range = XLSX.utils.decode_range(worksheet['!ref']);
for (let row = range.s.r; row <= range.e.r; row++) {
const cellKey = worksheet[XLSX.utils.encode_cell({ r: row, c: 0 })];
const cellValue = worksheet[XLSX.utils.encode_cell({ r: row, c: dataRow })];
if (cellKey && cellValue) {
const key = cellKey.v.toString().trim();
const value = cellValue.v.toString().trim();
data[key] = value;
}
}
return data;
}
//转换格式输出txt
function writeKeyValuePairsToFile(file_path, data) {
let content = '';
for (const [key, value] of Object.entries(data)) {
content += `"${key}":"${value}",\n`;
}
fs.writeFileSync(file_path, content);
console.log(`Key-value pairs are written to ${file_path}`);
}
///表格数据路径
const file_path = './1.xls';
const hk_table_data = extractExcelData(file_path,1);
writeKeyValuePairsToFile('./generate/hk.txt', hk_table_data);