上传 .csv 或 .txt 文件以填充 QTableView

Posted

技术标签:

【中文标题】上传 .csv 或 .txt 文件以填充 QTableView【英文标题】:Uploading .csv or .txt file to populate QTableView 【发布时间】:2014-12-08 08:39:29 【问题描述】:

最近我正在开发一个 gui 应用程序,我想将 QTableView 的数据保存在 .csv 或 .txt 文件中。我使用了received during this question 的指导,这让我想到是否也可以反过来;即,如果 QTableView 可以从 .csv 或 .txt 文件填充。再一次,我更喜欢使用基于模型的设计,例如 QTableView 而不是基于项目的 QTableWidget。

任何 code-sn-p 或教程文档都会很有帮助。

【问题讨论】:

【参考方案1】:

考虑一个test.csv 文件(它可以由任何文本编辑器生成):

而后面的文本流是(如果通过编程生成的话):

1,2,3,\n4,5,6,\n7,8,9,\n10,11,12,\n13,14,15,

如果在 Microsoft Office Excel 中打开,它可能看起来像:


要将这个.csv 文件读取到您的QTableView 的模型中:

QStandardItemModel *model = new QStandardItemModel;

QFile file("test.csv");
if (file.open(QIODevice::ReadOnly)) 
    
    int lineindex = 0;                     // file line counter
    QTextStream in(&file);                 // read to text stream
    
    while (!in.atEnd())                            
   
        // read one line from textstream(separated by "\n") 
        QString fileLine = in.readLine();  
                                         
        // parse the read line into separate pieces(tokens) with "," as the delimiter
        QStringList lineToken = fileLine.split(",", QString::SkipEmptyParts); 
        
        // load parsed data to model accordingly
        for (int j = 0; j < lineToken.size(); j++) 
            QString value = lineToken.at(j);
            QStandardItem *item = new QStandardItem(value);
            model->setItem(lineindex, j, item);
        

        lineindex++;   
    

    file.close();

(你可以操纵代码来满足你的表格格式)


[结果]

【讨论】:

我猜你打错了,应该是,QString value = lineToken.at(j);最后我得到了一个完全空白的表格,数据没有被填充:(已编辑---对不起,整理出来了。我忘了直接输出到我的表格视图。 您应该检查您是否成功加载了.csv 文件。使用 qDebug() 查看文件是否已加载。 不,没关系,我只是忘记将输出定向到我的 tableView,tableView 没有获取数据,这就是为什么它是空白的。现在很好。非常感谢。 @AmarjitBis 没问题。但请记住,这只是一个简单的演示,可帮助您掌握解析.csv 文件的主要思想。您应该根据您的实际数据格式自行修改代码并定义数据加载方式。

以上是关于上传 .csv 或 .txt 文件以填充 QTableView的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 php 以 .dat 或 .txt 格式导出文件

加快 Django 表单以将大型(500k obs)CSV 文件上传到 MySQL 数据库

BULK INSERT将CSV或TXT文件导入到SQL Server

文件上传(支持csv,xls,xlsx,txt格式)把文件导入到minio,还需要生成一个demo临时文件只放10条数据

文件上传(支持csv,xls,xlsx,txt格式)把文件导入到minio,还需要生成一个demo临时文件只放10条数据

上传分片切片大文件 XLSX/CSV/TXT