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