0

我有一个数据表,我想要一个导出功能,这个应用程序在网络上运行,所以我想创建一个 csv 文件,然后提供(打开或另存为选项)通常的下载选项。我目前正在使用 CSV 编写器。
这里有问题的行是Runtime.getRuntime().exec("export.csv");在底部列出的错误我该怎么做?

这是绑定到按钮的操作

Action exportData = new Action() {
    private static final long serialVersionUID = -7803023178172634837L;

    @Override   
    public void execute(UIContext uic, ActionEvent event) {

        try{       
            CSVWriter writer = new CSVWriter(new FileWriter("export.csv"), '\t');
            int i = 0;
            while (i < forExport.getTotalCount()){
                String[] entries = {
                    forExport.getSearchResults().get(i).getName().getGivenNames() + forExport.getSearchResults().get(i).getName().getSurname(),
                    forExport.getSearchResults().get(i).getId()
                };
                writer.writeNext(entries);
                i++;
            }  
            writer.close();
            Runtime.getRuntime().exec("export.csv");  
        }catch(Exception e){
            system.out.print(e);
        }
    }
};

出错java.io.IOException: Cannot run program "export.csv": CreateProcess error=193, %1 is not a valid Win32 applicationDEBUG

注意:我不希望它在 excel 中自动打开,我希望选择保存或打开。

4

3 回答 3

1

我不明白你为什么要执行任何事情。这是服务器代码。您根本不想在服务器上执行 Excel。您希望将文件连同内容处置标头一起写回浏览器。

于 2012-10-03T05:19:07.587 回答
0

你应该试试

Runtime.getRuntime().exec("excel.exe export.csv"); 

export.csv不是有效的 windows 命令。

于 2012-10-03T04:47:17.110 回答
0

.csv 文件是用于保存数据的逗号分隔值文件。exec 命令的参数是打开 .csv 文件的字符串命令。但是在您的命令字符串中,您没有指定运行时应该尝试打开 .csv 文件的任何程序。

由于 .csv 文件不可执行,请在命令字符串参数中指定程序名称,并指定您要打开 ..csv 文件的程序名称。

于 2012-10-03T04:53:41.107 回答