Qt 數據導入到excel


//main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QtGui>
#include <QWidget>
#include <QAxObject>
#include <QAxWidget>
#include <QFileDialog>
#include <QObject>
#include <iostream>
using namespace std;
 
        
 
        
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
        
    QString filepath=QFileDialog::getSaveFileName(NULL,QObject::tr("Save orbit"),"/untitled.xlsx",QObject::tr("Microsoft Office 2007 (*.xlsx)"));//獲取保存路徑
    QList<QVariant> allRowsData;//保存所有行數據
    allRowsData.clear();
//    mLstData.append(QVariant(12));
    if(!filepath.isEmpty()){
        QAxObject *excel = new QAxObject("Excel.Application");//連接Excel控件
        excel->dynamicCall("SetVisible (bool Visible)",false);//不顯示窗體
        excel->setProperty("DisplayAlerts", true);//不顯示任何警告信息。如果為true那么在關閉是會出現類似“文件已修改,是否保存”的提示
        QAxObject *workbooks = excel->querySubObject("WorkBooks");//獲取工作簿集合
        workbooks->dynamicCall("Add");//新建一個工作簿
        QAxObject *workbook = excel->querySubObject("ActiveWorkBook");//獲取當前工作簿
        QAxObject *worksheets = workbook->querySubObject("Sheets");//獲取工作表集合
        QAxObject *worksheet = worksheets->querySubObject("Item(int)",1);//獲取工作表集合的工作表1,即sheet1
 
        
        for(int row = 1; row <= 1000; row++)
        {
            QList<QVariant> aRowData;//保存一行數據
            for(int column = 1; column <= 2; column++)
            {
                aRowData.append(QVariant(row*column));
            }
            allRowsData.append(QVariant(aRowData));
        }
 
        
        QAxObject *range = worksheet->querySubObject("Range(const QString )", "A1:B1000");
        range->dynamicCall("SetValue(const QVariant&)",QVariant(allRowsData));//存儲所有數據到 excel 中,批量操作,速度極快
        range->querySubObject("Font")->setProperty("Size", 30);//設置字號
 
        
        QAxObject *cell = worksheet->querySubObject("Range(QVariant, QVariant)","A1");//獲取單元格
        cell = worksheet->querySubObject("Cells(int, int)", 1, 1);//等同於上一句
        cell->dynamicCall("SetValue(const QVariant&)",QVariant(123));//存儲一個 int 數據到 excel 的單元格中
//        cell->dynamicCall("SetValue(const QVariant&)",QVariant("abc"));//存儲一個 string 數據到 excel 的單元格中
 
        
//        QString str = cell->dynamicCall("Value2()").toString();//讀取單元格中的值
//        cout<<"\nThe value of cell is "<<str.toStdString()<<endl;
 
        
        worksheet->querySubObject("Range(const QString&)", "1:1")->setProperty("RowHeight", 60);//調整第一行行高
 
        
        workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(filepath));//保存至filepath,注意一定要用QDir::toNativeSeparators將路徑中的"/"轉換為"\",不然一定保存不了。
        workbook->dynamicCall("Close()");//關閉工作簿
        excel->dynamicCall("Quit()");//關閉excel
        delete excel;
        excel=NULL;
    }
    return a.exec();
}

原地址:https://www.cnblogs.com/woxinfeixiang2015/p/7677295.html
參考資料:http://blog.csdn.net/li494816491/article/details/50274305
(親測有效,需安裝office或WPS,否則程序會崩潰)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM