我有一個看起來像這樣的Excel文件:遠程讀取Excel文件
我試圖現在要做的就是提供DEST_NAME_DISPLAY和檢索DEST_ID。
正如你可能已經注意到的那樣,這個文件包含很多目標,所以我不想遍歷它們來找到一個DEST_ID。這可能嗎?如果是,如何?
我有一個看起來像這樣的Excel文件:遠程讀取Excel文件
我試圖現在要做的就是提供DEST_NAME_DISPLAY和檢索DEST_ID。
正如你可能已經注意到的那樣,這個文件包含很多目標,所以我不想遍歷它們來找到一個DEST_ID。這可能嗎?如果是,如何?
由於文件很少更改,因此您可以將其讀入到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指出,數據庫是更好,因爲數據將保留在應用程序退出後。當然,設置起來有點困難,但如果需要堅持,值得考慮。
我還會補充說一個數據庫會更好。一旦應用程序退出,哈希映射將從內存中刪除,因此每次都必須重新讀取excel文件,除非您每次將映射序列化爲文件。如果OP使用db,則該數據將在應用程序退出後保留。 – BackSlash
在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);
}
}
更長的版本'所以我不想遍歷他們都找到了DEST_ID。這可能嗎?「是的。 '如果是這樣,怎麼樣?'通過使用數據庫。如果這不是一個選項,我認爲循環是你能做的唯一的事情。 – BackSlash
@wero,我糾正了它。當我發佈這個問題時,我正在考慮excel文件擴展,所以我把它和xml混淆了。謝謝 –
@BackSlash奧克感謝您的答案。令人遺憾的是,數據庫不是一個選項,因爲excem文件位於遠程FTP服務器上... –