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('文件已保存');
|
|||
|
|
});
|