使用filechooser在tableview中打开一个excel文件

时间:2019-02-22 15:39:23

标签: excel javafx tableview textarea filechooser

我有一个小问题。我想在表格视图中显示一个Excel文件。 我想选择带有filechooser的文件,并将其显示在表格视图中。

我以teaxtarea为例进行了尝试,效果很好。我在表视图中需要它。如果您能帮助我,我将不胜感激。

我用JavaFX编程

我将向您展示如何使用文本区域。

我已经分别创建了tableview。我只需要一个示例说明如何将其插入到表格视图中。

我使用apache poi打开excel文件。

public class ReadExcel extends Application {

Pane pane = new Pane();
Button button = new Button("Hier");
Desktop desktop = Desktop.getDesktop();
TextArea textarea = new TextArea();

public void start(Stage primaryStage) throws IOException {

    Scene scene = new Scene(pane);

    scene.getStylesheets().add("style.css");
    primaryStage.setTitle("GBO-Tool");
    primaryStage.setScene(scene);
    primaryStage.show();
    textarea.setLayoutX(100);
    textarea.setLayoutY(100);

    pane.getChildren().addAll(button, textarea);

    FileChooser filechooser = new FileChooser();
    button.setOnAction(new EventHandler<ActionEvent>() {
        public void handle(ActionEvent e) {
            File file = filechooser.showOpenDialog(primaryStage);
            if (file != null) {
                try {
                    readExcel();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        }
    });
}

public void readExcel() throws IOException {
    String excelfile = "Gesamtpunktzahl.xlsx";
    FileInputStream is = new FileInputStream(newFile(excelfile));
    Workbook wb = new XSSFWorkbook(is);
    Sheet sheet = wb.getSheetAt(0);
    Iterator<Row> iterator = sheet.iterator();
    while (iterator.hasNext()) {
        Row nextRow = iterator.next();
        Iterator<Cell> cellIterator = nextRow.cellIterator();

        while (cellIterator.hasNext()) {
            Cell cell = cellIterator.next();

            switch (cell.getCellType()) {
            case STRING:
                textarea.appendText(cell.getStringCellValue() + "\n");
                break;
            case BOOLEAN:
                textarea.appendText(cell.getBooleanCellValue() + "\n");
                break;
            case NUMERIC:
                textarea.appendText(cell.getNumericCellValue() + "\n");
                break;
            }
            textarea.appendText("\n");
        }
    }
    wb.close();
    is.close();
}

private static String newFile(String excelfile) {
    return excelfile;
    // TODO Auto-generated method stub

}

public static void main(String[] args0) {
    launch();

}

}

0 个答案:

没有答案