上传 .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的主要内容,如果未能解决你的问题,请参考以下文章
加快 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条数据