Моя цель - прочитать Excel (что я могу, через Apache POI) и отобразить Excel в TableView (JavaFX).Я могу отображать имена столбцов на TableView
, но не могу заполнить данные в этих столбцах
Для многих доступных ресурсов я нашел общий пример, где создается отдельный класс (в котором переменные инициализируются,геттеры и сеттеры пишутся) и через конструктор значения передаются в 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);
}
}
}
Кто-то, пожалуйста, сообщите мне, как отображать данные в столбцах. вот как выглядит вывод