0

我有这个应用程序。我正在尝试。它允许用户查看JTable实例,同时可以选择以 excel 格式保存或打印。它询问用户文件名和放置文件的位置,然后将其保存在该位置。该应用程序在本地服务器 (tomcat) 中运行,并由不同工作站中的其他用户使用。我正在使用 POI API 将表格转换为 Excel 文件,并且效果很好。

现在的问题是,它根本FileOutputStream()不会为其他工作站创建任何文件。它仅在单个工作站中创建/保存文件,即我当前正在开发应用程序的工作站。我已经搜索了足够长的时间以找到解决方案,但我还没有找到任何解决方案,所以我试图向你们寻求帮助。我将包括代码。

public class ReportToExcel
{
    //file returned comes from the user from antoher function.
    public void exportTable(JTable table, File file) throws IOException {
        HSSFWorkbook report = new HSSFWorkbook();
        HSSFSheet report_sheet = report.createSheet("report_sheet");
        HSSFRow rowHead = report_sheet.createRow((int)0);
        TableModel model = table.getModel();
        FileOutputStream reportOut = new FileOutputStream(file.getAbsolutePath());
        System.out.println("table to excel "+table.getName());

for(int x=0; x < model.getColumnCount(); x++) {
        rowHead.createCell((int)x).setCellValue(model.getColumnName(x));
        report_sheet.autoSizeColumn((int)x);
        System.out.println(x+". "+model.getColumnName(x));
    }

for(int i=1; i< model.getRowCount(); i++) {
            HSSFRow row = report_sheet.createRow((int)i);
            for(int j=0; j < model.getColumnCount(); j++) {
                row.createCell((int)j).setCellValue(model.getValueAt(i,j).toString());
                System.out.println(i+". "+model.getValueAt(i,j).toString());
            }
           }
       report.write(reportOut);
        reportOut.close();
        System.out.println("write out to: " + file.getAbsolutePath());
    }
}
4

3 回答 3

1

已经找到答案了。对于 NoClassDefFound 错误,工作站需要具有访问我肯定忽略的 POI api 的类路径的权限。

于 2012-05-31T10:05:21.937 回答
0

我认为您的一个关键声明是该代码仅适用于您的工作站。很多时候,问题与文件/目录权限有关。普通用户的权限确实比开发人员少。

如果您告诉我们输出到 file.getAbsolutePath() 也很有帮助,以防路径可疑。

该路径应该是您的用户创建/修改文件的安全位置。

于 2012-05-25T05:39:20.557 回答
0

您是否尝试将输出保存到服务器,而不是每个工作站的本地计算机?

于 2012-05-25T05:48:40.950 回答