【发布时间】:2019-06-05 14:31:25
【问题描述】:
我的目标是读取 excel(我可以通过 Apache POI)并在 TableView (JavaFX) 上显示 excel。我可以在TableView 上显示列名,但无法在这些列中填充数据
对于我发现的许多可用资源,一个通用示例创建了一个单独的类(其中初始化了变量,写入了 getter 和 setter)并通过构造函数将值提供给 TableView。但就我而言,我无法对这些变量进行硬编码。当我知道TableView 的列数未知时,我试图填充TableView。这是我迄今为止尝试过的。
package sample;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import javafx.scene.control.TableView;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
public class Controller {
@FXML public TableView tableView;
public void quitMethod(ActionEvent actionEvent) {
System.out.println("quit button was pressed");
System.exit(0);
}
public void browseMethod(ActionEvent actionEvent) throws IOException {
Stage stage = new Stage();
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Select File");
fileChooser.setInitialDirectory(new File("C:/"));
fileChooser.getExtensionFilters().addAll(
new FileChooser.ExtensionFilter("xls files", "*.xls"),
new FileChooser.ExtensionFilter("xlsx files", "*.xlsx")
);
File file = fileChooser.showOpenDialog(stage);
String path = file.getPath();
ArrayList<ArrayList> excel = ReadExcel.main1(path);
for (int i=0; i<excel.get(0).size();i++) {
TableColumn<Controller, String> firstcol = new TableColumn<> (excel.get(0).get(i).toString());
tableView.getColumns().add(firstcol);
ObservableList<ArrayList<Controller>> data = FXCollections.observableArrayList(excel.get(i));
tableView.setItems(data);
}
}
}
请有人指导我如何在列中显示数据。 here is what output looks like
【问题讨论】:
-
创建代表表格数据的模型/对象,然后按照表格视图教程进行操作。
-
感谢@Sedrick 的回复。我无法执行您的建议。请提供有关如何实现它的进一步见解。再次感谢您。
-
这是你可以做的其他事情 -> stackoverflow.com/questions/47885549/…