我有一个小问题。我想在表格视图中显示一个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();
}
}