有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在IDE中使用ApachePOI将java导出到excel是可行的,但当我创建runnable jar时就不行了

我使用的是Netbeans 8.2,我通过点击clean and build图标创建jar,runnable jar可以工作,除非我想将数据导出到excel

这是导出到excel的逻辑:

public static void exportToExcel(TableView<T> tableView, Stage stage) {

    HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
    HSSFSheet hssfSheet = hssfWorkbook.createSheet("Sheet1");
    HSSFRow firstRow = hssfSheet.createRow(0);

    //Getting column width
    ExcelPropertiesCustomization.getColumnWidth(hssfSheet);
 
    // Getting title properties
    CellStyle naslov = ExcelPropertiesCustomization.getTitleProperties(hssfWorkbook);
    //set titles of columns
    for (int i = 0; i < tableView.getColumns().size(); i++) {
        firstRow.createCell(i).setCellValue(tableView.getColumns().get(i).getText());
        firstRow.getCell(i).setCellStyle(naslov);
    }
    // set cells for rest of the table
    for (int i = 0; i < tableView.getItems().size(); i++) {
        HSSFRow hssfRow = hssfSheet.createRow(i + 1);
        for (int col = 0; col < tableView.getColumns().size(); col++) {
            Object celValue = tableView.getColumns().get(col).getCellObservableValue(i).getValue();
            try {
                if (celValue != null) {
                    hssfRow.createCell(col).setCellValue(Double.parseDouble(celValue.toString()));
                }
            } catch (NumberFormatException e) {
                hssfRow.createCell(col).setCellValue(celValue.toString());
            } catch (NullPointerException e) {
                System.out.println(e);
            }
        }
    }

    //save excel file and close the workbook
    try {
        File file = new File("FXdatabase.xls");
        FileOutputStream out = new FileOutputStream(file);
        hssfWorkbook.write(out);
        FileChooser fileChooser = new FileChooser();
        FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("XLS files (*.xls)", "*.xls");
        fileChooser.getExtensionFilters().add(extFilter);
        File dest = fileChooser.showSaveDialog(stage);
        if (dest != null) {
            try {
                Files.copy(file.toPath(), dest.toPath());
            } catch (IOException ex) {
                System.err.println(ex);
            }
        }
        out.close();
    } catch (IOException e) {
        System.out.prinln(e);
    }
}

这不是我第一次使用ApachePOI导出到excel,但我从未遇到过这个问题(我也有新的笔记本电脑,不知道这是否与问题有关),我怀疑是IOException。我能做什么


共 (0) 个答案