Подключение внешней базы данных Excel
Дали задание сделать подключаемую базу данных. Решил что удобнее будет в Excel. База данных с параметрами объектов к которым надо будет обращаться. Она подключается также как и написанная в Qt или как-то по другому? Ну а обращение к элементам одинаково?
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.Вам це подобається? Поділіться в соціальних мережах!
m
- molni99
- 26 жовтня 2024 р. 01:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80бали,
- Рейтинг балів4
m
- molni99
- 26 жовтня 2024 р. 01:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20бали,
- Рейтинг балів-10
Останні коментарі
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь Максимов05 жовтня 2024 р. 07:51
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Qt Linux - Урок 001. Автозапуск програми Qt під Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Робота з ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко05 лютого 2024 р. 01:50
Тепер обговоріть на форумі
jd
GeForce Now India: Unlocking the Future of Cloud Gaming GeForce Now India has a major impact on the gaming scene by introducing NVIDIA's cloud gaming service to Indian gamers. GeForce Now India lets you stream top-notch PC games on any device, from b…
jasmine disouza28 жовтня 2024 р. 04:58
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
ИМ
Реализация навигации по разделам Спасибо Евгений!
Игорь Максимов03 жовтня 2024 р. 04:05
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
Это же файл с таблицами, в которых используются разделители определённых типов, например точка с запятой. Наиболее простым вариантом такого формат является формат CSV.
На сайте имеется урок по работе с CSV в Qt, можете там посмотреть, как с ним работать.
А вообще с файлами Excel в Qt всё печально. Это же по сути проприетарный формат и Qt не занимается его поддержкой. Поэтому готовых классов по работе с файлами Excel в Qt нет. Необходимо либо парсить файл Excel и разбирать его до основания, либо найти стороннюю библиотеку, которая даст весь необходимый для работы функционал.
А если Вы имели ввиду работу, например как, через QSqlDatabase, то вы ошиблись. Здесь механика работы совершенно различна.
При сохранении в CSV скорее всего все связи и настройки будут утеряны.
CSV является простейшим форматом. Если нужна сортировка, связи таблиц и прочие настройки, которые сделаете в Excel, то нужно будет всё-таки разбираться с форматом Excel и парсить его, но это довольно нетривиальная задача.
Так что наиболее логичным будет поискать готовые решения по работе с Excel файлами.
Впрочем, кажется я немного ошибся. Можно попробовать подключить файл с помощью драйвера QODBC. Вот ссылка Обработка Microsoft Excel в Qt
Там же есть список готовых библиотек.
Спасибо, попробую реализовать.
Но если использовать Excel просто для составления самой простой таблицы, без связей и настроек, то при сохранении в csv все останется рабочим. Если делать так то должно работать? Если да, то вопрос еще актуален.
Если использовать Excel просто для составления таблицы и сохранить его в CSV, то можно делать что-то вроде импорта документа в программу и распарсить его, разбирая на нужные объекты. Например, одна строка – это один объект. Поля объекта (то есть переменные), будут соответствовать полям таблицы в строке (то есть колонкам).
Если посмотрите внимательно урок по CSV, который я привёл выше, то увидите, что там идёт довольно простое формирование ячеек таблицы. Символ ‘;’ служит для разделения колонок, а перевод строки ‘\n’ соответственно разделяет строки.
Соответственно распарсить такой файл, прочитав его построчно, не должно составить большого труда.
Когда сохраните файл, то откройте его обычным блокнотом, и станет сразу ясна структура документа.
Вечером накидаю небольшой набросок возможного варианта.
Данные из CSV файла необходимо считывать построчно. Поскольку это формат данных, разделённых точкой запятой, и каждая строка закрывается последовательностью \r\n, как правило. А далее, чтобы отобразить данные в таблице в приложении на Qt, необходимо воспользоваться QStandardItemModel и QTableView, переписывая данные в соответствующие ячейки.
Например, создали таблицу в Excel следующего вида:
Чтобы получить следующий результат:
У меня код получился следующий, для извлечения данных из csv файла, который хранится в файле ресурсов (для того, чтобы взять другой внешний файл, нужно только правильно указать путь к нему)
mainwindow.h
mainwindow.cpp
А что касается добавления данных в базу данных SQLite, то посмотрите следующие уроки, в них навалом примеров по добавлению данных в базу данных SQLite:
csvexample-1.zip
Пытался засунуть я данные в базу, однако не получается. Пишет ” Parameter count mismatch” .Подскажите что не так.
Ничего другого не придумал как переписать файл csv в массив, а потом хотел с него в базу записать.
Проект скинуть не могу ввиду требований секретности (армия). На ПК ни интернета, ни переводчика.
1-я Ошибка – это получается скорее массив из одного элемента. А если учесть, что он статический, то в него непонятно, что записывается. Чтобы работать с массивом, нужно знать заранее его длину. То есть длина должна быть равна количеству элементов, которое в него будет записано. Ну тут я ничем помочь не могу. Вам нужно почитать про массивы какую-нибудь литературу по C++, по его основам. Кто-то на эту тему советует Страуструпа, кто-то Лафоре. Авторов много.
2-я Ошибка – в методе, где создаётся база данных. Опять же, почитать про SQLite, а точнее про типы данных. А также про основы создания таблиц в SQL. У Вас там одни только типы данных перечислены и не более того. Нет названий колонок.
3-я Ошибка – в методе, где добавляется запись. Та же самая ерунда, отсутствуют названия колонок. В моих примерах они присутствовали. Вы их удалили.
Рекомендую почитать дополнительно про типы данных в SQL и массивы. То, как Вы создали массив, приведёт к созданию массива с одним элементом. Тут нужно дополнительно восполнять пробелы в знаниях чтением профильной литературы.
Рекомендую заменить на QList. В него помещать ваш собственный класс или структуру, которая будет содержать элементы i и j.