Название: QTableWidget + Excel Отправлено: Артем от Апрель 08, 2017, 20:25 Возникла необходимость реализовать функцию сохранения: все содержимое QTableWidget необходимо сохранить в MS Excel. Как научить этому QT. Заранее спасибо.
Название: Re: QTableWidget + Excel Отправлено: gil9red от Апрель 08, 2017, 23:56 Разбейте задачу на 2 части:
1. Получение данных из таблицы (для начала хотя бы в консоль вывести их в табличном виде) 2. Сохранение этих данных в формат excel В excel можно сохранять 2 способами: через ActiveX (только для виндовс) и через библиотеки, знающие формат Excel Подробнее о работе с Excel можно на страничке Qt прочитать: http://wiki.qt.io/Handling_Microsoft_Excel_file_format А еще можно попробовать схитрить и сохранять в формате CSV Название: Re: QTableWidget + Excel Отправлено: __Heaven__ от Апрель 09, 2017, 02:29 Можно ещё в csv писать через ;
Или использовать open document format Название: Re: QTableWidget + Excel Отправлено: Артем от Апрель 09, 2017, 08:03 Спасибо за советы. Попробовал реализовать через ActiveX, но строчка выделенная жирным шрифтом, где я получаю указатель на список листов, способствует вылету приложения(т.е. оно запускается, но в процессе работы вылетает). В чем может быть причина? Заранее спасибо
QAxObject* excel = new QAxObject( "Excel.Application", 0 ); excel->dynamicCall("SetVisible(bool)",true); QAxObject *workbooks = excel->querySubObject( "Workbooks" ); QAxObject *workbook = workbooks->querySubObject( "Open(const QString&)", "C:\\Users\\user\\Desktop\\A.xls" ); QAxObject *sheets = workbook->querySubObject( "Sheets" ); // QAxObject *StatSheet = sheets->querySubObject( "Item(const QVariant&)", QVariant("stat") ); // StatSheet->dynamicCall( "Select()" ); // QAxObject *range = StatSheet->querySubObject( "Range(const QVariant&)", QVariant( Qstring("A1:A1"))); // range->dynamicCall( "Clear()" ); // на всякий случай очищаем эту ячейк // range->dynamicCall( "SetValue(const QVariant&)", QVariant(5) );//записываем в эту ячейку число 5 Название: Re: QTableWidget + Excel Отправлено: Пантер от Апрель 09, 2017, 10:18 Лучше сохраняй в csv, это будет самое простое и кросспалтформенное.
Название: Re: QTableWidget + Excel Отправлено: Артем от Апрель 09, 2017, 15:49 Да, спасибо огромное, получилось
Название: Re: QTableWidget + Excel Отправлено: titan83 от Апрель 09, 2017, 19:04 Не колхозь, вот xlsx-парсер: https://github.com/VSRonin/QtXlsxWriter
Сможешь еще и нормально форматировать таблицу. |