以下代码直接放在函数里测试,补上头
文件就可以了。细节意会。写速度很快。
其实写的是
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";
}