I_P free 2019-01-07 17:31 采纳率: 0%
浏览 1495

关于QT保存EXCEL文件的问题

我新开了线程新建和ECEL并写入和保存, 在主函数里有一个按钮,按钮按一次就会进入EXCEL线程,线程里完成了新建EXCEL工作簿,写入以及保存的工作,可是每一次线程结束后保存的文件都会覆盖上一次保存的文件,怎么解决?
void QExcelThread::run()
{
CoInitializeEx(NULL, COINIT_MULTITHREADED);
excel = new QAxObject(this);
excel->setControl("Excel.Application");
excel->dynamicCall("SetVisible (bool Visible)","false")
excel->setProperty("DisplayAlerts", false);//

workBooks = excel->querySubObject("Workbooks");// 获取工作簿集合
workBooks->dynamicCall("Add"); // 新建一个工作簿
workBook = excel->querySubObject("ActiveWorkBook"); // 获取当前工作簿
sheets = workBook->querySubObject("WorkSheets");

QExcelThread::selectSheet("Sheet1");
while(!bStop)
 QExcelThread::setCellString(cnt+1, 1, "add");

workBook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparatr(savePath+ timestr + ".xlsx"h "));
QExcelThread::close();
    }

    #已解决,把时间放入到线程里去,每次都更新时间,就不会覆盖了
    void QExcelThread::run()

{
QDateTime datetime;
QTime current_time;
QString timestr=datetime.currentDateTime().toString("yyyyMMddHHmmss");//文件保存名//日期和时间
QString timestr1;

  • 写回答

1条回答

  • bostonAlen 2019-01-07 19:36
    关注

    就是说你每次进线程new了,QT是自动析构。那你可以考虑下每次进线程新建的工作薄保存到一个能随时访问的地方。希望有帮助。。。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器