Qt写Excel文件 (转载)

本文介绍了如何利用Qt库在Windows和Linux平台上生成Excel文件,适用于数据存储和处理的需求。
摘要由CSDN通过智能技术生成

Qt写Excel文件

      好多人遇到过这个问题,比如gemfield在工程机械上使用Qt编写的人机界面,想要实现黑匣子功能,也就是机器运行的信息每几秒就要存储一次。存储为excel格式是最放便的了,这样就不用gemfield再单独写个软件来解析它,而且得益于办公软件的普及,故障记录信息也可以方便的拷贝。 :I(_6!M'h  
      把怎么把记录在Qt中存储为excel格式呢? Wza2`mL  
      方案是极其的简单,以至于令你都难以置信。 12S `P4 U  
      gemfield写作本文的缘由也正基于此。在和青岛之光社区的奇才们讨论的时候,得到了一个有趣的事实,那就是文本文件也可以变成Excel电子表格。奥秘在于(你可以在windows下打开记事本或者在SYSZUX OS下打开gedit来做这个实验)在每行的各项数据之间加入tab键,在行与行之间加入换行键(这个是很自然的),然后保存的时候后缀名为xls即可。就像上面的暗示一样,在windows下和linux下均可实现这个技巧。 l(V>D5:.  
      因为黑匣子功能的特殊性,文件名最好是用时间表示。 !M 'd~8  
      gemfield的程序如下: Z)RA-K1  
************************coded by gemfield******************** Q-UH s  
    QDateTime gemfield_dt=QDateTime::currentDateTime();//获得当前系统的日期时间 Cq4]O3>?sY  
    QDate date=gemfield_dt.date();//取日期 juph8Iz  
    QVariant gemfield_y=date.year(); 8Eq:@7&bR  
    gemfield_year=gemfield_y.toString(); I*{5F|#l3  
    QTime time=gemfield_dt.time();//取时间 }4->~x^I  
    QVariant gemfield_s=time.second(); [!8;= xj%  
    gemfield_sec=("0"+gemfield_s.toString()).right(2);//获得秒的显示数 V4Wq 3A/  
    `wQ@] :z@  
    QVariant gemfield_m=time.minute(); B7;C1e v  
    gemfield_min=("0"+gemfield_m.toString()).right(2);//获得分的显示数 ^D]8;p2Q  
    Rz4"Cg  
    QVariant gemfield_h=time.hour(); ulgc-/i}  
    gemfield_hour=("0"+gemfield_h.toString()).right(2);//获得小时的显示数 l 12!h  
    `.+t'um0  
    QVariant gemfield_d=date.day(); SIh,  
    gemfield_day=("0"+gemfield_d.toString()).right(2);//获得日期的显示数 d.u7e&$  
    8HSKxP,  
    QVariant gemfield_mon=date.month(); j<% m%/4  
    gemfield_month=("0"+gemfield_mon.toString()).right(2);//获得月的显示数 Hb7r#=`0~z  
    file_name=gemfield_year+"_"+gemfield_month+"_"+gemfield_day+"_"+gemfield_hour+"_"+gemfield_min+dotfix; (6Rb.JLF  
  2Wahtzp&  
    QDir::setCurrent("/mnt/yaffs/gemfield");//因为此程序是交叉编译在SYSZUX PAD上运行,所以路径是linux形式,你在windows下试验时要改过来的。 }6]ZA:F1  
     log_file=new QFile(file_name); /R7uhc ]  
     if (!log_file->open(QIODevice::ReadWrite | QIODevice::Text)) 8S(<zZ  
        { A3u)Az  
         qDebug()<<"file open error!"; N#U;Mfk*}  
         return;        T{Jx 6D  
        } J,U2k@rI C  
      log_file->close(); j(f [j2e8  
**************************************************************** d o_Z5 xP  
      这样就在构造函数中创建了一个以当前时间命名的xls电子表格文件。 3o<OXrX  
      然后写入数据; x W_3xiL  
*********************coded by gemfield**************************** ;NK1)q ?!  
      if (!log_file->open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Append)) Yb:7_Or"  
        { %`rOr2LS  
         qDebug()<<"file open error!"; DGpotW$~1  
         return;        7/o}cU/Y  
        } -0Y|c=pY7  
  ^A#-J/_gK  
    QTextStream log(log_file); a3a(5xu,  
    QString gemfield_t,gemfield_v,gemfield_ah,gemfield_jie; <Dm2)1 u  
    gemfield_t=gemfield_t.fromLocal8Bit("青岛之光社区"); N!(RMr|=  
    gemfield_v=gemfield_v.fromLocal8Bit("一支ge-le之葩"); 34"JrxTYg  
    gemfield_ah=gemfield_ah.fromLocal8Bit("SYSZUX PAD"); y.IA7a  
    gemfield_jie=gemfield_jie.fromLocal8Bit("G币"); g0Z0BTf]I  
    log<<gemfield_t<<"/t"<<gemfield_v<<"/t"<<gemfield_ah<<"/t"<<gemfield_jie<<"/n"; <Nr}j#N<7C  
    log<<"25/t"<<"36/t"<<"48/t"<<"45/n"; KhrhK/Vb  
    log_file->close(); n@;lAHN|  
****************************************************************** hBSBk!4QwX  
      注意tab键和换行键的输入哦! F+3 |zY  
      备注:本文属于gemfield青岛之光博客 【Qt乐园]】版块;bug提交至[url=mailto:gemfield@civilnet.cn]gemfield@civilnet.cn[/url];讨论地址:www.civilnet.cn/qt  ;对本文有贡献的人将有获得CivilNet邮箱和加入CivilNet官方QQ群的机会;转载此文时,请保证包括【备注】在内的文章的完整性。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值