2015-10-15 185 views
-1

我有一個看起來像這樣的Excel文件:遠程讀取Excel文件

enter image description here

我試圖現在要做的就是提供DEST_NAME_DISPLAY和檢索DEST_ID。

正如你可能已經注意到的那樣,這個文件包含很多目標,所以我不想遍歷它們來找到一個DEST_ID。這可能嗎?如果是,如何?

+1

更長的版本'所以我不想遍歷他們都找到了DEST_ID。這可能嗎?「是的。 '如果是這樣,怎麼樣?'通過使用數據庫。如果這不是一個選項,我認爲循環是你能做的唯一的事情。 – BackSlash

+0

@wero,我糾正了它。當我發佈這個問題時,我正在考慮excel文件擴展,所以我把它和xml混淆了。謝謝 –

+0

@BackSlash奧克感謝您的答案。令人遺憾的是,數據庫不是一個選項,因爲excem文件位於遠程FTP服務器上... –

回答

1

由於文件很少更改,因此您可以將其讀入到Map中。

例如像這樣:How to group the values which are in excel to a HashMap

之後,你可以得到這樣的價值:

Map<String, Integer> map = ... // from file 
Integer value = map.get(key); 

編輯:BackSlash指出,數據庫是更好,因爲數據將保留在應用程序退出後。當然,設置起來有點困難,但如果需要堅持,值得考慮。

+0

我還會補充說一個數據庫會更好。一旦應用程序退出,哈希映射將從內存中刪除,因此每次都必須重新讀取excel文件,除非您每次將映射序列化爲文件。如果OP使用db,則該數據將在應用程序退出後保留。 – BackSlash

1

在java8中,您可以使用函數式編程功能來完成它。以下是用javascript編寫的僞代碼。

var myColumnDefs = [ 
    {key:"Tokyo", value:"2211"}, 
    {key:"Akihabara", value:"2211"}, 
    {key:"Kyoto",value:"3344"}] 
var input = "Kyoto" 
var p = myColumnDefs.filter(function(x){ return x.key==input }).map(function(x){return x.value}); 
alert(p); 

以下是這是用Java編寫的8

import java.util.Arrays; 
class Location{ 
    public String areaCode; 
    public String areaName; 
    public String otherInfo; 

    public Location(String areaName,String areaCode,String otherInfo){ 
     this.areaCode = areaCode; 
     this.areaName = areaName; 
     this.otherInfo = otherInfo; 
    } 

} 
public class Main { 

    public static void main(String[] args) { 
    Location[] locations = { 
     new Location("Tokyo","2211","TK"), 
     new Location("Akihabara","2211","AHR"), 
     new Location("Kyoto","3344","KT") 
    }; 
    String input = "Tokyo"; 
    Location[] output =(Location[]) Arrays.stream(locations).filter(x->x.areaName.equals(input)).toArray(size -> new Location[size]); 

    System.out.println(output[0].areaCode); 


    } 
}