zzzzzzhuzhu |
2020-03-12 08:58 |
Qt快速写Excel,无平台限制
以下代码直接放在函数里测试,补上头文件就可以了。细节意会。写速度很快。 其实写的是xml格式的文本。。。具体应该写什么内容,可以打开一个xml,改好格式,再用文本编辑器打开,反推。 QElapsedTimer timer; timer.start(); QString excelXMLStringBuilder; //构造好excelXML的头 excelXMLStringBuilder .append("<?xml version=\"1.0\"?><?mso-application progid=\"Excel.Sheet\"?><Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:html=\"http://www.w3.org/TR/REC-html40\"><Worksheet ss:Name=\"学生表\"><Table>"); //输出好表头 excelXMLStringBuilder .append("<Row><Cell><Data ss:Type=\"String\">学号</Data></Cell><Cell><Data ss:Type=\"String\">姓名</Data></Cell><Cell><Data ss:Type=\"String\">班级</Data></Cell></Row>"); //构造出每一行 for (int i = 0; i < 100000; i++) { //先构造出<Row>节点 excelXMLStringBuilder.append("<Row>");
excelXMLStringBuilder.append("<Cell><Data ss:Type=\"String\">"+ QString::number(i) + "</Data></Cell><Cell><Data ss:Type=\"String\">"+ QString::number(QDateTime::currentDateTime().toMSecsSinceEpoch()) + "</Data></Cell><Cell><Data ss:Type=\"String\">"+ "text" + "</Data></Cell><Cell><Data ss:Type=\"String\">"+ "123" + "</Data></Cell>" ); excelXMLStringBuilder.append("</Row>"); } //再构造好excelXML的尾 excelXMLStringBuilder.append("</Table></Worksheet></Workbook>");
QFile file; file.setFileName("log.xls"); if (file.open(QIODevice::ReadWrite | QIODevice::Append)) { QTextStream out(&file); out.setCodec("utf-8"); out << excelXMLStringBuilder; file.flush(); file.close(); qDebug() << "operation took" << timer.elapsed() << "milliseconds"; } [attachment=21436]
|
|