最近需要用到导出ECXCEL文件,由于导出测试记录文件格式比较固定,只需要按照一定的格式填写测试结果和判据,就想着制作一个EXCEL模板文件,通过读取模板文件获取文件的格式,然后直接往里面填数据,这样就不需要用代码在去调整文件的格式了。
实现过程可以参考网上资料,读写excel的也比较常见。写这个主要是自己记录一下,防止以后再用时候好找。
下面放一下代码。
void MainWindow::on_pushButton_clicked()
{
//连接Excel控件
QAxObject excel("Excel.Application");
//如果为了看自己的程序到底怎样工作,可设为true
excel.dynamicCall("SetVisible(bool)",true);
//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示 excel.setProperty("DisplayAlerts", false);
//获取工作簿集合
QAxObject* work_books = excel.querySubObject("WorkBooks") ;
QAxObject* work_book = nullptr;
QAxObject* work_sheets = nullptr;
QAxObject* work_sheet = nullptr;
QString str_ModeFile = tr("D:/qtTest/模板文件.xlsx"); //EXCEL模板
QString fileName;
//获取保存路径
QString filepath =QFileDialog::getSaveFileName(this,tr("Save"),".",tr(" (*.xlsx)"));
fileName = filepath.replace("/","\\");
QFile file(str_ModeFile);
if(work_books)
{
if(!fileName.isEmpty())
{
//这个位置就是将模板格式复制到新文件中。
file.copy(fileName);//将模板文件复制到新建保存文件中。
if(file.exists())
{
work_book = work_books->querySubObject("Open(const QString&)",fileName);
}
}
//获取工作表集合
if(work_book)
{
work_sheets &