我有这个应用程序。我正在尝试。它允许用户查看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());
}
}
答案 0 :(得分:1)
已经找到了答案。对于NoClassDefFound错误,工作站需要具有访问POI api的类路径的权限,这是我绝对忽略的。
答案 1 :(得分:0)
我认为您的一个重要声明是该代码仅适用于您的工作站。很多时候,该问题与文件/目录权限有关。普通用户的权限比开发人员少。
如果您告诉我们输出到file.getAbsolutePath()以防路径可疑,也会有帮助。
路径应该是用户创建/修改文件的安全位置。
答案 2 :(得分:0)
您是否尝试将输出保存到服务器,而不是每个工作站的本地计算机?