Название: Создание отчетов Отправлено: crocus от Декабрь 14, 2005, 08:45 Подскажите способ записать данные таблицы в TextStream типа:
QFile file("file1.txt"); QTextStream stream(&file); // if (file.open(QIODevice::WriteOnly | QIODevice::Append)) if (file.open( QFile::WriteOnly | QFile::Text)) { stream << tableView ;// данные таблицы tableView } file.close(); Название: Re: Создание отчетов Отправлено: Agriop от Декабрь 14, 2005, 12:43 Цитата: "crocus" Подскажите способ записать данные таблицы в TextStream типа: QFile file("file1.txt"); QTextStream stream(&file); // if (file.open(QIODevice::WriteOnly | QIODevice::Append)) if (file.open( QFile::WriteOnly | QFile::Text)) { stream << tableView ;// данные таблицы tableView } file.close(); А так не работает? Код:
P.S. Если это Qt 4, то зачем сохранять tableView? Может лучше tableModel? Название: Создание отчетов Отправлено: crocus от Декабрь 16, 2005, 05:35 Как же все-таки распечатать данные из таблицы tableView
что собственно и является отчетом, не пойму что в поток stream выводить. Название: Создание отчетов Отправлено: crocus от Декабрь 19, 2005, 07:39 Сделал так:
QFile file("file1.htm"); QTextStream stream(&file); if (file.open( QFile::WriteOnly | QFile::Text)) { stream << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n" << "<html>\n" << "<head>\n" << "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=cp-1251\" />\n" << "</head>\n" << "<body bgcolor=\"#F1DABC\">\n"; stream << "<table width=\"100%\" border=\"1\" bordercolor=\"#710000\" cellspacing=\"0\"\n>" "<tr><td align=\"center\">" + tr("Кол-во комнат") + "</td><td align=\"center\">Вид продажи</td>" "<td align=\"center\">Район</td><td align=\"center\">Улица</td>" "<td>Sо</td><td >Sж</td><td >Sк</td><td >Этаж</td><td >Этажность</td><td >Материал</td>" "<td align=\"center\">Планировка</td><td align=\"center\">Санузел</td><td >Б/Л</td><td align=\"center\">Цена</td><td >Телефон</td><td >Тип объекта</td>" "<td align=\"center\">Сторона света</td><td>Состояние</td><td>Агент</td><td></td><td align=\"center\">Примечание</td></tr>"; for ( long int i = 0; i < model->rowCount(); ++i) { stream << "<tr>"; for ( long int k = 0; k < model->columnCount(); ++k) { QModelIndex index = model->index(i, k); if (k != 0) { if (k != 1) { if (k != 16) { stream << "<td align=\"center\">" + model->data(index, Qt::DisplayRole).toString() + "</td>"; } } } } stream << "</tr>\n"; } stream << "</table>\n" << "</body>\n" << "</html>"; } file.close(); 1. нормально все получается только непонятки там где конструкция IF, по идее должно работать логическое включающее ИЛИ в виде if (k != 0 || k !=1) , однако не работает. 2. А предворительный просмотр (preview) страницы кто-нибудь реализовывал (ну типа как в Excele или Firefoxe с масштабированием и колонтитулами). Название: Создание отчетов Отправлено: Dendy от Декабрь 19, 2005, 09:58 Цитата: "crocus" if (k != 0 || k !=1) Немного не в тему, но... Конструкция вьlше (k != 0 || k !=1) == !(k == 0 && k == 1) == !(false) == true. То-есть всегда правда. Название: Создание отчетов Отправлено: Вудруф от Декабрь 19, 2005, 10:29 if (k != 0)
{ if (k != 1) { if (k != 16) { ... } } } Заменяется на if (k != 0 && k !=1 && k!= 16) или на if (!(k==0 || k==1 || k==16)) |