48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
const XLSX = require('xlsx');
|
||
|
||
const fs = require('fs');
|
||
// 读取xlsx文件
|
||
const workbook = XLSX.readFile('./test.xlsx');
|
||
|
||
// 读取特定的worksheet,默认第一个worksheet
|
||
const worksheet = workbook.Sheets['Sheet2'];
|
||
|
||
// 将worksheet转换为JSON对象
|
||
const jsonData = XLSX.utils.sheet_to_json(worksheet);
|
||
function dmsToDecimal(degrees, minutes, seconds) {
|
||
return degrees + minutes / 60 + seconds / 3600;
|
||
}
|
||
|
||
|
||
const results = []
|
||
|
||
for (const jsonDatum of jsonData) {
|
||
const location = jsonDatum['经纬度']
|
||
const [lat, lon] = location.split(' ')
|
||
let latStr = lat.replace(/\°|\'|["(N|E)]/g, '@')
|
||
let lonStr = lon.replace(/\°|\'|["(N|E)]/g, '@')
|
||
const [latDegrees, latMinutes, latSeconds] = latStr.split('@')
|
||
const [longDegrees, longMinutes, longSeconds] = lonStr.split('@')
|
||
const latitude = dmsToDecimal(parseInt(latDegrees), parseInt(latMinutes), parseInt(latSeconds));
|
||
const longitude = dmsToDecimal(parseInt(longDegrees), parseInt(longMinutes),parseInt( longSeconds));
|
||
results.push( {
|
||
longitude,
|
||
latitude
|
||
})
|
||
}
|
||
|
||
|
||
// 文件内容
|
||
const content = JSON.stringify(results, null, 2)
|
||
|
||
// 文件路径
|
||
const filePath = './output.json';
|
||
|
||
// 写入文件
|
||
fs.writeFile(filePath, content, 'utf8', function(err) {
|
||
if (err) {
|
||
return console.log(err);
|
||
}
|
||
console.log('文件已保存');
|
||
});
|