Java 如何将excel文件写入可选文件位置?

Java 如何将excel文件写入可选文件位置?,java,excel,gwt,Java,Excel,Gwt,我正在为一个项目使用GWT。单击按钮,我想将excel文件保存到用户定义的文件位置。是否可以提示用户输入要保存到的文件位置 因此,我希望用户选择,而不是保存在C:\New folder\n中 FileOutputStream out = new FileOutputStream("C:\\New folder\\purchase-order.xlsx"); wb.write(out); out.close(); 涉及按钮的前端如下所示 Button getPurchas

我正在为一个项目使用GWT。单击按钮,我想将excel文件保存到用户定义的文件位置。是否可以提示用户输入要保存到的文件位置

因此,我希望用户选择,而不是保存在C:\New folder\n中

    FileOutputStream out = new FileOutputStream("C:\\New folder\\purchase-order.xlsx");
    wb.write(out);
    out.close();
涉及按钮的前端如下所示

Button getPurchaseOrderForAllPickedItems = new Button("Get Purchase Order for all items selected", new ClickHandler() {

public void onClick(ClickEvent event) {
    HashMap<String, ArrayList<Item>> exportFile = extracted();
    sendListToServerForExport(exportFile);
}
Button getPurchaseOrderForAllPickedItems=新建按钮(“获取所有选定项目的采购订单”,新建ClickHandler()){
公共作废一次点击(点击事件){
HashMap exportFile=extracted();
sendListToServerForExport(导出文件);
}
sendListToServerForExport方法如下所示:

private void sendListToServerForExport(HashMap<String, ArrayList<Item>> exportMap) {

    if (stockPriceSvc == null) {
        stockPriceSvc = GWT.create(PurchaseOrderService.class);
    }

    AsyncCallback<String> callback = new AsyncCallback<String>() {

        @Override
        public void onFailure(Throwable caught) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onSuccess(String result) {

            Window.alert(result);

        }

    };
    stockPriceSvc.createExcelExportFile(exportMap, callback);
}
public String createExcelExportFile(
        HashMap<String, ArrayList<Item>> exportMap) {
    controller.createFileToExport(exportMap);

    return "Succes";
}
private void sendListToServerForExport(HashMap exportMap){
if(股票价格svc==null){
stockPriceSvc=GWT.create(PurchaseOrderService.class);
}
AsyncCallback callback=新的AsyncCallback(){
@凌驾
失败时的公共无效(可丢弃){
//TODO自动生成的方法存根
}
@凌驾
成功时的公共void(字符串结果){
窗口。警报(结果);
}
};
createExcelExportFile(exportMap,回调);
}
服务实现中的方法如下所示:

private void sendListToServerForExport(HashMap<String, ArrayList<Item>> exportMap) {

    if (stockPriceSvc == null) {
        stockPriceSvc = GWT.create(PurchaseOrderService.class);
    }

    AsyncCallback<String> callback = new AsyncCallback<String>() {

        @Override
        public void onFailure(Throwable caught) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onSuccess(String result) {

            Window.alert(result);

        }

    };
    stockPriceSvc.createExcelExportFile(exportMap, callback);
}
public String createExcelExportFile(
        HashMap<String, ArrayList<Item>> exportMap) {
    controller.createFileToExport(exportMap);

    return "Succes";
}
公共字符串createExcelExportFile(
HashMap(导出映射){
controller.createFileToExport(导出映射);
返回“成功”;
}

除非您留下一些主要细节,否则它应该非常简单。只需提示用户输入位置,并使用扫描仪或提示符将输入作为字符串。我将在这里发布一些示例代码

import java.util.Scanner;   

public class ReadConsoleScanner { 
    public static void main(String[] args) {     
        System.out.println("Enter something here : ");       
        String sWhatever;   
        Scanner scanIn = new Scanner(System.in); 
        sWhatever = scanIn.nextLine();   
        scanIn.close(); 
        System.out.println(sWhatever); 
    } 
}

thx。这是一个web应用程序。单击我想要一个弹出窗口,以便用户可以选择保存位置。哦,好的,那么你在前端使用javascript吗?是的,前端被编译为javascript。使用RPC调用到服务器端,在那里可以找到创建excel文件的代码。好的,你可以发布更多的代码,比如涉及按钮的代码吗有问题吗?你能帮我发布sendListToServerForExport代码吗?我有个问题要问你!RPC仅用于数据库?谢谢!如果它正在保存文件,浏览器不会询问文件位置。我怀疑你能否在小部件中覆盖此功能。你必须让用户配置浏览器以提示save到一个特定的位置。我们在同一个页面上讨论如何为firefox配置它。作为一个提醒,我从来没有见过这样的东西,我也不会想象它会存在,因为js对文件系统的访问非常少。也没有标题来指定保存位置,所以我很确定这是不可能的。