Das CSV -Datenformat ( Comma-Separated Values ) ist das einfachste Format zur Darstellung tabellarischer Daten. Dieses Format wird von Excel und vielen anderen Office-Paketen unterstützt. Ich stoße beispielsweise oft auf dieses Format, wenn ich Website-Statistiken aus dem Webmaster-Panel der Google Search Console hochlade.
In diesem Format wird die Tabelle durch eine Folge von Daten dargestellt, die durch Kommas getrennt sind und Spalten darstellen, und Zeilen werden durch einen Zeilenumbruch getrennt. Im Fall von russifiziertem Microsoft Excel werden die Daten durch ein Semikolon getrennt und sehen folgendermaßen aus:
BMW;X5;3000000 Lada;Kalina;250000
CSV analysieren
Daher läuft die ganze Aufgabe darauf hinaus, Daten Zeile für Zeile aus der Datei zu lesen und diese Daten zum Datenansichtsmodell hinzuzufügen, das in QTableView .
Nehmen wir als Grundlage obiges Beispiel den Inhalt einer CSV -Datei, die in Microsoft Excel erstellt wurde:
Und zeigen Sie es in QTableView über QStandardItemModel: an
Hauptfenster.h
Das Erscheinungsbild der Anwendung wurde im Grafikdesigner erstellt, daher wird auf QTableView über das ui-Objekt zugegriffen.
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QStandardItemModel> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; QStandardItemModel *csvModel; // Объявим указатель на модель данных, которая // будет содержать данные из CSV файла }; #endif // MAINWINDOW_H
Hauptfenster.cpp
Die CSV-Datei in diesem Beispiel wird in der Projektressourcendatei platziert. Wenn Sie eine andere Datei angeben müssen, müssen Sie den Pfad zu dieser Datei entsprechend neu schreiben. Das Ergebnis stimmt mit dem überein, was im Screenshot oben gezeigt wurde.
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QFile> #include <QTextStream> #include <QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // Создаём модель данных для отображения таблицы из CSV файла csvModel = new QStandardItemModel(this); csvModel->setColumnCount(3); csvModel->setHorizontalHeaderLabels(QStringList() << "Марка" << "Модель" << "Цена"); ui->tableView->setModel(csvModel); // Устанавливаем модель в таблицу // Открываем файл из ресурсов. Вместо данного файла // необходимо указывать путь к вашему требуемому файлу QFile file(":/exampleTable.csv"); if ( !file.open(QFile::ReadOnly | QFile::Text) ) { qDebug() << "File not exists"; } else { // Создаём поток для извлечения данных из файла QTextStream in(&file); // Считываем данные до конца файла while (!in.atEnd()) { // ... построчно QString line = in.readLine(); // Добавляем в модель по строке с элементами QList<QStandardItem *> standardItemsList; // учитываем, что строка разделяется точкой с запятой на колонки for (QString item : line.split(";")) { standardItemsList.append(new QStandardItem(item)); } csvModel->insertRow(csvModel->rowCount(), standardItemsList); } file.close(); } } MainWindow::~MainWindow() { delete ui; delete csvModel; }
Archiv mit Beispiel herunterladen csv und QStandardItemModel
https://evileg.com/en/post/158/
Also, I would like to get a list of specific column with its items to use it for another function. How can I retrieve it?
А если мне надо данными из файла подписать оси x и y и построить график как это сделать?
Считайте данные из файла и постройте график, например с помощью библиотеки QCustomPlot