import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class GetLatLng {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> addressList = new ArrayList<String>();
String address = null;
try {
InputStream is = new FileInputStream("D:\\address.xls");
// System.out.println("1111");
// Workbook rwb = Workbook.getWorkbook(is);
Workbook rwb = Workbook.getWorkbook(is);
// System.out.println("2222");
Sheet st = rwb.getSheet(0);
int rows = st.getRows();
// System.out.println(rows);
for(int i=0;i<rows;i++){
Cell c00 = st.getCell(0,i);//先列後行,從0列1行開始,0列0行是“address”
address = c00.getContents();
// System.out.println(address);
addressList.add(address);
}
// System.out.println(addressList.size());
} catch (Exception e) {
// TODO: handle exception
System.out.println("讀取檔案失敗");
}
OutputStream os;
java.io.File filewrite = new java.io.File("D:/result.xls");
Map<String,String> map = null;
try {
filewrite.createNewFile();
System.out.println(33333);
os = new FileOutputStream(filewrite);
System.out.println(66666);
WritableWorkbook wwb = Workbook.createWorkbook(os);
WritableSheet ws = wwb.createSheet("result", 0);
for(int j=0;j<addressList.size();j++){
// System.out.println(j);
// System.out.println(addressList.get(j));
map = LatitudeUtils.getLatLng(addressList.get(j));
if(map!=null){
// Label label1= new Label(0,j,addressList.get(j));
// ws.addCell(label1);
Label label2= new Label(1,j,map.get("lng"));//參數分别是列 行 内容
System.out.println(map.get("lng"));
ws.addCell(label2);
Label label3= new Label(2,j,map.get("lat"));
System.out.println(map.get("lat"));
ws.addCell(label3);
// Label label4= new Label(3,j,map.get("precise"));
// ws.addCell(label4);
// Label label5= new Label(4,j,map.get("confidence"));
// ws.addCell(label5);
}else{
Label label1= new Label(0,j,addressList.get(j));
ws.addCell(label1);
}
}
wwb.write();
wwb.close();
} catch (Exception e) {
// TODO: handle exception
System.out.println("寫入檔案失敗");
}
// System.out.println(addressList.size());
}
public static class LatitudeUtils{
public static final String key = "你自己的Key";
public static Map<String,String> getLatLng(String address){
try{
address = URLEncoder.encode(address,"UTF-8");
URL resjson = new URL("https://api.map.baidu.com/geocoder/v2/?address="
+address+"&output=json&ak="+key+"&callback=showLocation");
// URLConnection connect = resjson.openConnection();
// connect.connect();
BufferedReader in = null;
if(resjson.openStream()!=null){
in = new BufferedReader(new InputStreamReader(resjson.openStream()));
}
String res;
StringBuilder sb = new StringBuilder("");
while ((res=in.readLine())!=null) {
sb.append(res.trim());
}
in.close();
String str = sb.toString();
// System.out.println("return json:"+str);
Map<String,String> map = null;
if(str!=null)
{
int lngStart = str.indexOf("lng\":");
// System.out.println(lngStart);
int lngEnd = str.indexOf(",\"lat");
// System.out.println(lngEnd);
int latEnd = str.indexOf("},\"precise");
// System.out.println(latEnd);
int preciseEnd = str.indexOf(",\"confidence");
// System.out.println(preciseEnd);
int confidenceEnd = str.indexOf(",\"level");
// System.out.println(confidenceEnd);
if(lngStart>0&&lngEnd>0&&latEnd>0){
String lng = str.substring(lngStart+5,lngEnd);
String lat = str.substring(lngEnd+7,latEnd);
String precise = str.substring(latEnd+12,preciseEnd);
String confidence = str.substring(preciseEnd+14,confidenceEnd);
map = new HashMap<String, String>();
map.put("lng", lng);
map.put("lat", lat);
map.put("precise", precise);
map.put("confidence", confidence);
return map;
}
}
}catch(Exception e){
e.printStackTrace();
}
return null;
}
}
}