Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
-2 / 4 / 2
Регистрация: 13.03.2013
Сообщений: 198
1

Чтение файла CSV и чтение из Table View

06.03.2018, 19:16. Просмотров 2912. Ответов 9
Метки нет (Все метки)

Здравствуйте, задача считать столбцы и строки excel в TextEdit. Прошу помощи в реализиции.
Вручную сохраняю xls файл в csv. Потом надо подсчитать кол-во строк первого столбца и второго, и создать необходимое кол-во TextEdit и записать значения по Editam. 1 столбец 1 строка, 2 столбец 1 строка пойдут в TextEdit1 и TextEdit2 , далее 1 столбец 2 строка пойдут в TextEdit3 , 2 столбец 2 строка пойдут в TextEdit4. Примерно такая схема. Структура файла всегда одинаковая, 2 столбца, неограниченное кол-во (произвольное) строк.


Я пока смог считать в TableView , может из нее проще читать текст по Edit ?

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    ui->setupUi(this);
    // Создаём модель данных для отображения таблицы из CSV файла
    csvModel = new QStandardItemModel(this);
    csvModel->setColumnCount(2);
    csvModel->setHorizontalHeaderLabels(QStringList() << "Имя" << "Пароль" );
    ui->tableView->setModel(csvModel); // Устанавливаем модель в таблицу
 
    // Открываем файл из ресурсов. Вместо данного файла
    // необходимо указывать путь к вашему требуемому файлу
    QFile file("/home/1.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();
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2018, 19:16
Ответы с готовыми решениями:

Как правильно сделать построчное чтение txt файла, чтобы потом эти данные выводились в теге <table></table>?
У меня есть файл file.txt: Саша 12 руб. Рома 76 руб. Петя 120 руб. Маша 234 руб. Я пытаюсь...

Чтение из файла csv
Здравствуйте! Читаю из файла csv данные, представленные в виде Поле1 Поле2 Поле3 Поле1 ...

Чтение из csv-файла
Добрый день. Мне нужно открыть в своей программе cs файл и найти там все методы - выделить их в...

Чтение CSV файла
Всем привет, не может кто-нибудь подсказать как прочитать таблицу в csv файле? Нужно каждую строку...

9
6911 / 5976 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
06.03.2018, 19:24 2
Ну и используй QTableView, он же редактируется.
0
-2 / 4 / 2
Регистрация: 13.03.2013
Сообщений: 198
06.03.2018, 19:28  [ТС] 3
nmcf, Спасибо, но надо текст вывести именно по edit, я перебираю кол-во строк в екселе и создаю определенное кол-во виджетов на форме, и на каждом виджете TextEdit1 и TextEdit2 , куда я должен с каждой строки столбца 1 и 2 считать значение в соответствующие Edit .
0
Avazart
06.03.2018, 19:31
  #4

Не по теме:

Цитата Сообщение от neva Посмотреть сообщение
nmcf, Спасибо, но надо текст вывести именно по edit, я перебираю кол-во строк в екселе и создаю определенное кол-во виджетов на форме, и на каждом виджете TextEdit1 и TextEdit2 , куда я должен с каждой строки столбца 1 и 2 считать значение в соответствующие Edit .
Ну ну, гавнокодили в билдере, продолжаем в Qt.

0
-2 / 4 / 2
Регистрация: 13.03.2013
Сообщений: 198
06.03.2018, 19:32  [ТС] 5
Avazart, Вы как всегда правы.
0
Эксперт С++
8329 / 6081 / 605
Регистрация: 10.12.2010
Сообщений: 28,251
Записей в блоге: 27
06.03.2018, 19:32 6
Цитата Сообщение от neva Посмотреть сообщение
for (QString item : line.split(","))
Этого недостаточно для парсинга CSV
1
-2 / 4 / 2
Регистрация: 13.03.2013
Сообщений: 198
06.03.2018, 21:01  [ТС] 7
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
FrameFlash *ff = new FrameFlash(this); //cоздаем новую форму на ScrollArea
 
                                 ui->MyVerticalLayout->addWidget(ff); // Добавляем ее на ScrollArea
 
int row;
                                 QVariant myData; //Сюда положим данные из ячейки
                                 QModelIndex myIndex;
                                 myIndex = ui->tableView->model()->index( row, 0, QModelIndex()); // 
                                 myData = ui->tableView->model()->data( myIndex); 
                                 ff->ui->label->setText(myData.toString());
                                 //данные в QVariant приводите к чему хотите и обрабатывайте
row++;

пока сделал так, правильно? Покрайне мере работает

Добавлено через 53 минуты
Avazart, nmcf, а можно программно пересохранить(конвертировать) xls в csv без использования стороннего ПО ?

Добавлено через 3 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Этого недостаточно для парсинга CSV
у меня файл имеет одинаковую структуру и в нем нет символов ", . " и тд. Только буквы, и только пара столбцов. В моем случае думаю будет достаточно?
0
Эксперт С++
8329 / 6081 / 605
Регистрация: 10.12.2010
Сообщений: 28,251
Записей в блоге: 27
06.03.2018, 21:14 8
Цитата Сообщение от neva Посмотреть сообщение
Avazart, nmcf, а можно программно пересохранить(конвертировать) xls в csv без использования стороннего ПО ?
Нет, можно через ActiveX тобиш OLE
0
-2 / 4 / 2
Регистрация: 13.03.2013
Сообщений: 198
08.03.2018, 13:18  [ТС] 9
Avazart, если бы на Windows писал, а на Linux разве есть поддержка OLE?
0
Эксперт С++
8329 / 6081 / 605
Регистрация: 10.12.2010
Сообщений: 28,251
Записей в блоге: 27
08.03.2018, 13:31 10
Лучший ответ Сообщение было отмечено neva как решение

Решение

Так под линукс и экселя нет.

Добавлено через 10 минут
https://wiki.qt.io/Handling_CSV
https://github.com/iamantony/qtcsv
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2018, 13:31

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Чтение .csv файла
Считываю .csv файл. ifstream in(&quot;test.csv&quot;); string line, field; vector&lt;...

Чтение csv-файла с кириллицей
Здравствуйте. На странице сайта есть функционал чтения csv-файлов, которые пользователь может...

Чтение файла *.CSV с разделителями(;)
Всем привет. Столкнулся с такой проблемой: using (StreamReader rd = new StreamReader(new...

Чтение csv файла в массив
подскажите пожалуйста как можно из одного массива сделать два. Есть csv фаил где храняться имена и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.