读取Excel并将其显示在TableView上可以通过以下步骤实现:
import org.apache.poi.ss.usermodel.*;
public class ExcelReader {
public static void readExcel(String filePath) {
try {
Workbook workbook = WorkbookFactory.create(new File(filePath));
Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
DataFormatter dataFormatter = new DataFormatter();
for (Row row : sheet) {
for (Cell cell : row) {
String cellValue = dataFormatter.formatCellValue(cell);
System.out.print(cellValue + "\t");
}
System.out.println();
}
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
上述代码通过创建Workbook
对象打开Excel文件,并使用Sheet
和Row
对象遍历Excel表格中的所有单元格。使用DataFormatter
可以将每个单元格的值格式化为字符串。
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class ExcelTableView extends Application {
private TableView<ObservableList<String>> tableView = new TableView<>();
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
String filePath = "path/to/excel.xlsx";
ExcelReader.readExcel(filePath); // 调用ExcelReader的readExcel方法读取Excel数据
primaryStage.setTitle("Excel TableView");
VBox vbox = new VBox(tableView);
Scene scene = new Scene(vbox, 400, 300);
primaryStage.setScene(scene);
primaryStage.show();
}
public void populateTableView(List<List<String>> data) {
// 创建TableColumn对象,定义每一列的标题和数据绑定的属性
for (int i = 0; i < data.get(0).size(); i++) {
final int colIndex = i;
TableColumn<ObservableList<String>, String> column = new TableColumn<>("Column " + (i+1));
column.setCellValueFactory(cellData -> {
List<String> row = cellData.getValue();
if (colIndex >= row.size()) {
return new SimpleStringProperty("");
}
return new SimpleStringProperty(row.get(colIndex));
});
tableView.getColumns().add(column);
}
// 创建ObservableList对象,用于存储Excel数据
ObservableList<ObservableList<String>> tableData = FXCollections.observableArrayList();
for (List<String> rowData : data) {
tableData.add(FXCollections.observableArrayList(rowData));
}
tableView.setItems(tableData);
}
}
上述代码中,populateTableView
方法接收一个二维列表(data
),将数据填充到TableView中。该方法使用TableColumn和ObservableList来配置表格列和行的数据。每个列与二维列表的每个元素进行绑定,以实现数据的展示。
请注意,上述代码仅为示例,需要根据实际情况进行适当的修改和完善。此外,还可以根据需要自定义表格样式、添加排序、筛选、编辑等功能。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云