151人参与 • 2024-12-28 • 网页播放器
bool reportformutils::exportreporthtml(qstring &errstring, const qstring tablename, const qstring savepathandname, const qstring tabletitle, const qstring tableinfo) { q_unused(errstring) q_unused(tablename) q_unused(savepathandname) #define single_opt_row 1000 qstring cmd; quint32 i,j; quint32 row,col; bool occererror = false; qstring filewritecontent; //判断文件是否存在 qfile file(savepathandname); if(!file.open(qiodevice::writeonly | qiodevice::text)) { errstring = tr("文件打开失败!"); return false; } qtextstream out(&file); out << qstring("<!doctype html>") << qt::endl; out << qstring("<html>") << qt::endl; out << qstring("<head>") << qt::endl; out << qstring("<meta charset=\"utf-8\">") << qt::endl; out << qstring("<title>"); out << tabletitle << qstring("</title>") << qt::endl; out << qstring("</head>") << qt::endl; out << qstring("<body>") << qt::endl; out << qstring(tableinfo) << qt::endl; out << qstring("<table border=\"1\">") << qt::endl; sqlitehelper* sqlhelper = sqlitehelper::getinstance(); qsqldatabase *db = sqlhelper->getdatabase(); qsqlquery sqlquery(*db); qsqlrecord record; //开始设置表头 cmd =qstring("select * from %1").arg(tablename); sqlquery.prepare(cmd); if(!sqlquery.exec()) { errstring = tr("数据库表头获取失败!"); occererror = true; goto exit; } record = sqlquery.record(); col = record.count(); //获取列数 //qdebug()<<"col:"<<col; //写入表头 out << qstring("<tr>") << qt::endl; for(i=0;i<col;++i) { out << formatcell(record.fieldname(i)) << qt::endl; } out << qstring("</tr>") << qt::endl; //获取数据行数 cmd =qstring("select count(*) from %1;").arg(tablename); sqlquery.prepare(cmd); if(!sqlquery.exec()) { errstring = tr("数据库行数获取失败!"); occererror = true; goto exit; } sqlquery.next(); row = sqlquery.value(0).toint(); //开始导出数据 for(i =0;i < row; i+=single_opt_row) { sqlquery.clear(); cmd =qstring("select * from %1 limit %2,%3").arg(tablename).arg(i).arg(single_opt_row); //qdebug()<<cmd; sqlquery.prepare(cmd); if(!sqlquery.exec()) { errstring = tr("数据库数据获取失败!"); occererror = true; goto exit; } //读取数据 while(sqlquery.next()) { out << qstring("<tr>") << qt::endl; for(j=0;j<col;j++) { out << formatcell(sqlquery.value(j).tostring()) << qt::endl; } out << qstring("</tr>") << qt::endl; } } out << qstring("</table>") << qt::endl; out << qstring("</body>") << qt::endl; out << qstring("</html>") <<qt::endl; qdebug()<<"currentthreadid = "<<qthread::currentthreadid(); exit: file.close(); db->close(); delete db; if(occererror) return false; return true; } void reportformutils::castlistlistvariant2variant(const qlist<qlist<qvariant> > &cells, qvariant &res) { qvariantlist vars; const int rows = cells.size(); for(int i=0;i<rows;++i) { vars.append(qvariant(cells[i])); } res = qvariant(vars); } qstring reportformutils::formatcell(qstring val) { qstring outstr = "<td"; //文本对齐 outstr += " align=\""; outstr += "center"; outstr += "\""; //跨列 outstr += qstring::asprintf(" colspan=\"%d\"", 1); //跨行 outstr += qstring::asprintf(" rowspan=\"%d\"", 1); //背景色 bgcolor outstr += qstring::asprintf(" bgcolor=\"#%x\"", 0xcce8cf); outstr += ">"; //内容 if (val.size()) { outstr += val; } outstr += "</td>"; return outstr; }
到此这篇关于qt将数据库中的数据导出为html的文章就介绍到这了,更多相关qt数据库数据导出为html内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论