FileOutputStream()不起作用?

时间:2012-05-25 05:22:32

标签: java apache-poi noclassdeffounderror fileoutputstream

我有这个应用程序。我正在尝试。它允许用户查看JTable instancess,同时可以选择以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());
    }
}

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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