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