首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

读取Excel并将其显示在tableview上。使用二维数组或列表填充TableView

读取Excel并将其显示在TableView上可以通过以下步骤实现:

  1. 首先,需要使用相应的库或框架来读取Excel文件。在Java中,可以使用Apache POI库来处理Excel文件。你可以使用以下代码示例来读取Excel文件:
代码语言:txt
复制
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文件,并使用SheetRow对象遍历Excel表格中的所有单元格。使用DataFormatter可以将每个单元格的值格式化为字符串。

  1. 接下来,需要将读取的Excel数据填充到TableView中。TableView是JavaFX提供的表格视图组件,可用于显示表格数据。可以使用以下代码示例将Excel数据填充到TableView中:
代码语言:txt
复制
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来配置表格列和行的数据。每个列与二维列表的每个元素进行绑定,以实现数据的展示。

请注意,上述代码仅为示例,需要根据实际情况进行适当的修改和完善。此外,还可以根据需要自定义表格样式、添加排序、筛选、编辑等功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS中怎样创建可展开的Table View?()

上面的这些属性,将会被用来描述每一个我们tableView中有的cell.app级的术语,我们要做的就是使用一个简单易用的属性列表(plist)文件.在这个plist文件中,我们需要合适地填充这些在所有...,它的每一项tableView里都代表一组.这就意味着,plist文件里,根数组里包含三个项(item),和我们想要在tableView显示的数量一样多.....实际,我们不知道它们是否能在一起同时看到,因为当用户需要的时候,它们可以展开合拢....显示cell 了解了每次app运行的时候cell描述符都会被加载,我们继续吧,tableView显示cell.这部分我们会开始创建另一个新的函数,这个函数将会从cellDescriptors数组定位和返回合适的...通过让每个cell都有行号,我们可以从cellDescriptors数组中,"提取"cell描述的字典.注意,指定为二维的索引是indexOfVisibleRow,而不是indexPath.row.使用第二个会返回错误的数据

1.8K50

iOS操作属性列表plist(增删改查)

引 iOS的存储方式之一——属性列表plist,还是经常见到的,可以很方便的用来管理一些有序的批量数据,特别是用来显示固定的内容到表单时,不需要在代码中反复地繁琐编写数组,而可以plist属性列表中进行可视化操作...,极为便捷,本文讲解如何创建和使用plist列表显示表单。...达到下面的效果: 创建plist属性列表文件: 首先我们新建一个Single View的工程,这样就有可以直接使用的storyboard和ViewController文件,然后创建一个属性列表文件。...Table View了,效果如图: 代码实现对plist的操作显示到Table View: 1、准备工作 先打开.h文件,添加TableView的数据源和协议委托,创建一个存储plist中数组内容的可变数组...reloadData];// 重置表单 效果如图: 6、删除plist内容 同添加的思路一样,同样也是先操作可变数组,删除某个位置的内容,然后将可变数组存入原位置,再重新读取显示: //ViewController.m

1.5K20
  • C++ Qt开发:StandardItemModel数据模型组件

    这样,就创建了一个包含表头和数据的 QTableView,并将其显示 MainWindow 中。...如果用户选择了文件,就以只读文本方式打开该文件,读取文件内容到一个字符串列表 fFileContent 中,显示到 plainTextEdit 文本框中。...当读取结束后,直接关闭文件,调用 iniModelFromStringList 函数,该函数根据字符串列表的内容初始化数据模型。...这个函数主要完成了从字符串列表中获取数据初始化到 TableView 模型的过程,包括表头的设置、数据的提取和状态的处理。...首先,代码中同样是获取应用程序路径,同样是打开文件唯一不同的是这里使用了getSaveFileName也标志着是打开一个保存对话框,这里还使用了QFile::Open函数,设置了QIODevice:

    34110

    CC++ Qt TableWidget 表格组件应用

    ,表格结构分为表头,表中数据两部分,表格结构可看作一个二维数组,通过数组行列即可锁定特定元素,如下代码是针对表格结构的基本使用方法,分别实现了表头数据的初始化,元素的插入等基本操作。...研究Widget组件之前先来熟悉一下View组件,View组件相对Widget组件来说只是不具备编辑功能,其他功能保持一致,View组件支持与数据库建立映射关系,如果表格无需更新则最好可以使用View...->setModel(model); ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft); // 表头居左显示...radioButton->setChecked(true); ui->lineEdit_1->setText(""); ui->lineEdit_2->setText(""); // 填充数据...std::cout text().toStdString().data() << std::endl; // 先来处理第一个姓名,读出来写回到列表

    84120

    C++ Qt开发:TableView与TreeView组件联动

    ,底部保留两个按钮,按钮1用于该表表格的行列个数,按钮2则用于设置TableView表格表头参数,整个表格我们将其设置为可编辑状态。...继续创建一个包含三个字符串列表数组 DataList,每个列表代表一行数据。然后使用嵌套的循环遍历数组,将数据逐个添加到模型中。...,外层循环遍历数组,内层循环遍历每个数组中的元素,创建 QStandardItem 对象并将其添加到模型的相应位置。...如下代码中我们通过model->rowCount()以及model->columnCount()获取到父UI界面中tableView表格的行列数,通过ptr->setRowColumn将这些数据设置到了子对话框的编辑框上面...的表头进行重新设置,弹出对话框之前,需要将当前表头元素复制到strList列表容器内,通过使用子对话框中的ptr->setHeaderList将其拷贝到子对话框中,通过QDialog::Accepted

    37710

    CC++ Qt TableWidget 表格组件应用

    ,表格结构分为表头,表中数据两部分,表格结构可看作一个二维数组,通过数组行列即可锁定特定元素,如下代码是针对表格结构的基本使用方法,分别实现了表头数据的初始化,元素的插入等基本操作。...研究Widget组件之前先来熟悉一下View组件,View组件相对Widget组件来说只是不具备编辑功能,其他功能保持一致,View组件支持与数据库建立映射关系,如果表格无需更新则最好可以使用View...->setModel(model); ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft); // 表头居左显示...radioButton->setChecked(true); ui->lineEdit_1->setText(""); ui->lineEdit_2->setText(""); // 填充数据...std::cout text().toStdString().data() << std::endl; // 先来处理第一个姓名,读出来写回到列表

    71130

    iOS开发之表视图爱上CoreData

    为了TableView显示我们的信息我们这样设计我们的数据结构:       1.整个TableView是一个可变的数组tableArray;       2.tableArray中的每个元素又是一个存放分组的字典...2.数据结构我们设计好了,那么如何用代码生成我们的测试数据(数据的组织形式如上图所示),下面的代码就是生成我们要在tableView显示的数据,生成的数组存储tableArray中,代码如下: 1...来修改着添加数据时,TableView的内容是不跟着CoreData的变化而变化的,接下来要做的就是要绑定TableView和CoreData的关系。...UISearchDisplayController自己有一个TableView用于显示查询出来的结果,需要在通讯录中添加一些代码我们的Seach Bar就可以使用了。   ...和我们之前的tableView用的是一个FetchedReaultsController,所以UISearchDisplayController取消的时候要重载一下我们之前的TableView,去通讯录中的

    2.2K80

    iOS 9 Storyboard 教程(二下)

    拖拽一个新的 TableViewController到Main.storyboard里.AddPlayerscene里选择Game的单元格(确保你选择的的是整个单元格,而不是标签)并且按住ctrl拖线到新的新的...现在让我们给这个新的控制器一些数据来显示吧.GamePickerViewController.swift中,把一个具有硬编码值的games字符串数组添加到顶部: var games:[String]...text = games[indexPath.row] return cell } 你只是使用games数组设置了数据源并且把字符串的值放到了单元格的textLabel里....你没有写任何代码调用新的控制器.你只是按住ctrl键并从静态table view cell拖拽出了新的控制器.你写的唯一的代码就是填充tableView的内容,这通常是更动态的而不是硬编码列表....这个方法点击之后就会取消选中.那使得它从灰色高亮褪色为正常的白色.然后它就会从先前选中的单元格移除对号标记,然后把对号放到刚刚点击的那一行.

    2.2K10

    C++ Qt开发:SqlRelationalTable关联表组件

    通过这个类,你可以一个表中使用外键关联到另一个表的数据。例如将主表中的某个字段与附加表中的特定字段相关联起来,QSqlRelation(关联表名,关联ID,名称)就是用来实现多表之间快速关联的。...,存储该用户所管理的主机列表信息通过数据库组件实现的联动非常简单,初始化表结构得到了两张表,当程序运行时默认MainWindow构造函数处填充第一个ComboBox组件,也就是执行一次数据库查询,并将结果通过...);}运行代码后,程序会从数据库内取出结果输出到tableView组件,如下图所示;1.3 SqlRelationalTable最开始我们也说过,SqlRelationalTable 并不是Qt中标准的类方法...使用 setRelation 方法可以使得表格中更容易地显示和编辑关联数据,而不是直接显示外键的值。...(theSelection);ui->tableView->setItemDelegate(new QSqlRelationalDelegate(ui->tableView));选择显示数据表最后,通过调用

    25810

    C++ Qt开发:数据库与TableView多组件联动

    Qt中,通常我们不会在TableView等组件中保存数据,一般会将这些数据存储至数据库或者是文件中保存,当使用时则动态的在数据库中调出来,以下案例将实现,当用户点击选中TableView组件内的某一行时...使用这些方法,你可以应用中执行 SQL 查询,并将结果显示相应的视图组件中。...这些方法允许你一个多个视图中管理选择项,进行选择的查询、修改,以及处理选择变化的信号。通过使用这些方法,你可以实现对模型中的项进行灵活的选择操作,及时响应选择的变化。...这些方法使得 Qt 应用程序中更容易实现数据模型和用户界面的交互,通过将数据模型字段映射到用户界面的小部件,实现了数据的显示和编辑的同步。...通过调用 setCurrentIndex、toNext、toPrevious 等方法,你可以在数据模型中移动,自动更新映射的小部件显示的数据。

    51610

    iOS-MVVM 模式简单演练

    本篇只是简单介绍一下MVVM的大致模式,每个人对每种架构模式有自己的理解,本文也是单纯的从获取新闻列表数据,并将其显示到界面上而已。暂时不做过多的考虑。...(获取数据、加工数据) QQNetworkManager网络请求工具类 QQNetworkManager+QQNews网络请求工具类的分类(专门用于获取新闻列表数据) ---- 获取数据 QQNetworkManager...中定义新闻视图模型数组,用来控制QQNewsViewController中TableView显示的Cell行数及Cell的显示内容。...中进行数据加工,将拿到的字典数组转化为视图模型数组 QQNewsListViewModel.m - (void)loadNewsDataCompletion:(void (^)(BOOL))completion...(nonatomic, strong) UITableView *tableView; /// 新闻视图模型数组 @property (nonatomic, strong) QQNewsListViewModel

    84950

    CC++ Qt StandardItemModel 数据模型应用

    ,而模型则是视图与原始数据之间的接口,通常该类结构都是用在数据库中较多,例如模型结构负责读取写入数据库,视图结构则负责展示数据,其条理清晰,编写代码便于维护。...QStandardItemModel组件通常会配合TableView组件一起使用,当数据库文本中的记录发生变化时会自动同步到组件中,首先绘制UI界面。...item的文字内容 }}当页面被初始化时,默认界面如下:图片打开填充组件: 当工具栏中打开文件被点击后则触发,打开文件时通过aFile.open打开,循环读入文件,并将文件中的内容逐行追加到QStringList...fFileContent中,当追加完毕后,直接调用iniModelFromStringList(fFileContent);完成对页面TableView组件的初始化,设置其他控件状态为可点击。...ui->plainTextEdit->clear(); // 清空列表 // 循环读取只要不为空 while (!

    1.6K30

    窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用

    显示的数据了,正常开放中这些数据往往来源于网络请求,而在本篇博客中就模拟数据源,来为我们的TableView提供显示的数据。...数据源的格式是一个数组,而数组中存放的是多个字典,每个字典有两个键值对,一个键值对存储要显示图片的文件名,另一个键值对则存储美女的名字。为了使该数据的存储结构,请看下方结构图。 ?     ...(2) 接着就是往上面这个数组填充数据了,代码如下: 1 //-----------创建Table要显示的数据------------------------- 2 func createSourceData...通过Cell的重用标示符来创建Cell的实例对象,对Cell的一些属性赋值,返回当前是Cell实例对象,代码如下所示。...)中去,修改相应Cell的名字。

    3.5K80

    CC++ Qt StandardItemModel 数据模型应用

    ,而模型则是视图与原始数据之间的接口,通常该类结构都是用在数据库中较多,例如模型结构负责读取写入数据库,视图结构则负责展示数据,其条理清晰,编写代码便于维护。...QStandardItemModel组件通常会配合TableView组件一起使用,当数据库文本中的记录发生变化时会自动同步到组件中,首先绘制UI界面。...item的文字内容 } } 当页面被初始化时,默认界面如下: 打开填充组件: 当工具栏中打开文件被点击后则触发,打开文件时通过aFile.open打开,循环读入文件,并将文件中的内容逐行追加到...QStringList fFileContent中,当追加完毕后,直接调用iniModelFromStringList(fFileContent);完成对页面TableView组件的初始化,设置其他控件状态为可点击...ui->plainTextEdit->clear(); // 清空列表 // 循环读取只要不为空 while (!

    1.7K20

    【iOS7一些总结】9、与列表显示):列表显示UITableView

    列表显示,顾名思义它是一个列表视图的形式显示屏幕的数据的内容。于ios列表视图UITableView达到。这个类实际应用中频繁,是很easy理解。...UITableView定义头文件UITableView.h中,详细的定义能够查看官方文档;从定义中能够看出,UITableView继承自UIScrollView类,因此支持方便地显示列表数据的同一时候...详细的使用过程中,能够创建一个独立的UITableView,也能够直接创建一个UITableViewController。...这里主要记录创建UITableView的方法,下篇记录通过列表视图控制器使用UITableView。...执行,显示结果: 假设希望实现对选中某个单元格的响应,仅仅须要实现以下代理方法就可以。代理方法中能够实现创建新的视图控制器控制其载入到屏幕

    1.9K40

    【QT】QT模型视图

    常见的3种模型为列表模型、表格模型、树模型,如下图所示: 为确保数据的表示与数据获取相分离,Qt引入了模型索引的概念,输入和委托均可通过模型索引来请求数据显示。...QListView将数据项显示为一个列表;QTableView将模型中的数据显示一个表格中;QTreeView将模型中的数据项显示具有层次的列表中。...QTableView和QTreeView显示项目的时候同时还可以显示标头,通过QHeaderView类实现。...这些部件分别是QListWidget提供一个项目列表,QTreeWidget显示一个多层次的树结构,QTableWidget提供了一个以项目作为单元的表格。...之所以成为便捷因其用起来比较简单,使用于少量的数据的存储和显示。因没有将视图与模型分离,所以没有视图类灵活,不能和任意的模型一起使用。 通过自定义委托来实现更高级的渲染。

    3K20

    iOS中怎样创建可展开的Table View?(下)

    () 展开和合拢 我猜这部分可能是你最期望的了,因为本次教程的目标将会在在部分实现.第一次我们设法让顶层的cell,它们点击的时候展开或者合拢.以及显示或者隐藏合适的子cell....,我们必须要检查cellDescriptors数组,指定的cell是否展开.某个cell是可展开的,但是现在还没有展开,那么我们要标示(我们将使用一个flag标记)那个cell展开,否则我们要标示它合拢...接下来,让我们处理cell的开关吧.当改变了开关的值,我们需要做两件事情:首先,设置合适的值("Single""Married"),显示到对应的顶级cell;之后,cellDescriptors...tableView的方法,主要的特点就是一个plist文件中,所有cell的描述都使用具体的属性.我向你展示了当cell显示,打开或是选中的时候,如何使用代码处理cell的描述列表;此外,我给了你一个方法通过用户输入数据来直接更新它...(例如,将cell描述列表保存到文件),然而,那已经超出了我们的目标;我们最开始所想的是实现一个可展开的tableView,根据需求显示隐藏cell,以及我们最终所做的.我相信,在这篇教程中你会找到左右有用的信息

    1.5K30

    《Motion Design for iOS》(三十八)

    我自己的iPhone app Interesting中也使用了波浪形的动画。来看看我的app的动画构建它。...一些app选择在数据返回时淡入列表,一些会将行一行行地滑动到位置,而其他的则立即显示行,没有任何动画。...然后我会调用[self.tableView reloadData]将数据加载到列表行中去,这时候所有的行都在它们正常的位置,但因为整个列表透明度为0并且是隐藏的,屏幕什么都看不见。...我遍历现在屏幕可见的行并且移动UITableView将行都放到屏幕底部。我通过改变列表的位置,将其移动到整个列表高度的下方来达到目的,这样每行都会藏在屏幕的底部了。...但有很多种方法可以解决问题,也就是说,还有其他的不使用苹果的Core Animation框架的方式可以iOS app的屏幕创建动作。 其中一个创建动画的方法最近获取了很多的关注。

    45120
    领券