精华内容
下载资源
问答
  • Qt打开excel文件

    千次阅读 2015-03-18 12:40:34
    qt打开excel文件有两种方法 第一种,用QAxObject,在使用QAxObject,要在.pro文件中添加QT += axcontainer,同时在调用文件中添加#include 打开文件代码如下: void newExcel(QString &fileName) { QAxObject *...

    qt中打开excel文件有两种方法

    第一种,用QAxObject,在使用QAxObject,要在.pro文件中添加QT += axcontainer,同时在调用文件中添加#include <QAxObject>

    打开文件代码如下:

    void newExcel(QString &fileName)
    {
        QAxObject *pApplication = NULL;
        QAxObject *pWorkBooks = NULL;
        QAxObject *pWorkBook = NULL;
        QAxObject *pSheets = NULL;
        QAxObject *pSheet = NULL;
    
        pApplication = new QAxObject();
        pApplication->setControl("Excel.Application");
        pApplication->dynamicCall("SetVisible(bool)", true);
        pApplication->setProperty("DisplayAlerts", false);
    
        pWorkBooks = pApplication->querySubObject("Workbooks");
        QFile file(fileName);
        if (file.exists()) {
            pWorkBook = pWorkBooks->querySubObject("Open(const QString &)", fileName);
        }
    
        pSheets = pWorkBook->querySubObject("Sheets");
        pSheet = pSheets->querySubObject("Item(int)", 1);
    }
    

    用这种方法有个问题,需要自己管理打开的对象,如果不管理,就会出现多次打开相同的文件
    第二种,用QDesktopServices::openUrl方法

    是本地文件时,在文件名前加上file:///,更方便的一种方法是QUrl::fromLocalFile()

    代码如下:

    void openExcel(QString &fileName)
    {
       
        QFile file(fileName);
        if (file.exists()) {
    		QDesktopServices::openUrl(QUrl::fromLocalFile(fileName));
        }
    }


     

    展开全文
  • qt读取excel文件

    2015-12-31 16:05:09
    qt读取excel文件,且封装成动态库。以Qtcreator编译的。开发环境Qtcreator+Qt5.5.1
  • QT读取excel文件 并可以修改 还有sqlite数据库 实现了一些 打开文件 保存 等基本功能(打印没实现)
  • ubuntu下qt读取excel文件

    2018-05-03 08:32:57
    在ubuntu下qt读取excel文件,该文件只支持xls格式,在使用过程中遇到的坑与大家分享一下
  • QTexcel文件转换成txt文件代码 本文基于QAxObject,依赖excel程序,优化了读xls文件的效率。 代码 //excel程序连接 QAxObject excel("Excel.Application"); excel.setProperty("Visible", false); //隐藏打开的...

    QT将excel文件转换成txt文件

    本文基于QAxObject,依赖excel程序,优化了读xls文件的效率。
    注意pro中需要添加 CONFIG += qaxcontainer

    代码

        //excel程序连接
        QAxObject excel("Excel.Application");
        excel.setProperty("Visible", false);    //隐藏打开的excel文件界面
        QAxObject * workbooks = excel.querySubObject("WorkBooks");
    
        //打开总工作簿
        QAxObject * book  = workbooks->querySubObject("Open(QString, QVariant)", filename); //打开文件
        QAxObject * sheet = book->querySubObject("WorkSheets(int)", 1); //访问第一个工作表
        QAxObject * usedrange = sheet->querySubObject("UsedRange");
    
        //获取sheet所有数据,二维矩阵形式
        QVariant cell = usedrange->dynamicCall("Value");
    
        //打开待写入文件
        filename= path+year+"_"+month+"_"+date+".txt";
        QFile textfile(filename);
        textfile.open(QIODevice::WriteOnly);
        textfile.close();
    
        textfile.open(QIODevice::WriteOnly |QIODevice::Text);
        QTextStream stream(&textfile);
    
        //行list
        QVariantList cell_rowList=cell.toList();
        unsigned int rowCount = cell_rowList.size();
    
        unsigned int columnCount;
        for(i=0;i<rowCount;i++)
        {
            QVariantList cell_columnList=cell_rowList[i].toList();
            columnCount = cell_columnList.size();
    
            for(j=0;j<columnCount;j++)
            {
                stream<<cell_columnList[j].toString()<<",";
            }
            stream<<"\n";
        }
    
        textfile.close();
    
        book->dynamicCall("Close(Boolen)", false);    //关闭xls文件
        excel.dynamicCall("Quit(void)");              //退出excel
        
    
    展开全文
  • QT打开Excel设置列的类型的问题

    千次阅读 2017-01-11 11:02:43
    Excel列或者单元格的类型有很...由于用户更习惯表格式增删改查,所以我曾经想通过QT的QAxObject打开一个csv文件,以文本的方式,显示成excel的形式 为了实现上述需求,我做了很多尝试,查了很多资料 微软官方中文exce

    Excel列或者单元格的类型有很多,例如:数值、文本、日期等,

    我们用QT的QAxObject打开电话号码,或者比较长的数值时,前面的0就没了,或者变成了科学计数法,比如0210 会变成210,

    由于用户更习惯表格式增删改查,所以我曾经想通过QT的QAxObject打开一个csv文件,以文本的方式,显示成excel的形式

    为了实现上述需求,我做了很多尝试,查了很多资料

    微软官方中文excel解释地址:https://msdn.microsoft.com/zh-cn/library/ff837097.aspx

    搜索VBA操作的excel相关资料

    从微软官方中文excel解释发现有个接口或许能够实现相关功能,就是workbooks的OpenText方法

    如下:

    OpenText(FilenameOriginStartRowDataTypeTextQualifierConsecutiveDelimiterTabSemicolonCommaSpace,OtherOtherCharFieldInfoTextVisualLayoutDecimalSeparatorThousandsSeparatorTrailingMinusNumbersLocal)


    第13个参数FildInfo可以设置列的格式为文本


    于是马上想用QT去实现这个功能,可读到解释发现该参数是一个二维数组,

    QAxObject的dynamicCall的第二个参数为QVariant,怎么实现一个二维数组呢,通过长时间的QT源码调试发现,在qaxtypes.cpp中方法QVariantToVARIANT

    可以实现把QList<Qlist<T>>变成一个二维数组,在qaxbase.cpp中通过dynamicCallHelper方法中两步实现了了开excel

    ①:DISPID dispid = d->metaobj->dispIDofName(function, disp); //获取对应程序映射的数值ID

    ②:HRESULT hres = disp->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, disptype, &params, res, &excepinfo, &argerr);//打开excel

    原理参考链接:http://blog.csdn.net/zj510/article/details/39494873

    下面直接上QT如何使用OpenText源码:

    QAxObject* excel = new QAxObject("Excel.Application");

    excel->dynamicCall("SetVisible(bool)",true); 

    QAxObject *workbooks = excel->querySubObject( "WorkBooks" );

    QList<QVariant> list;

    QVariantList array;//二维数组

    QVariantList array1;//一维数组

    array1.append(1);
    array1.append(2);

    QVariantList array2;//一维数组
    array2.append(2);
    array2.append(2);

    array.append(QVariant(array1));
    array.append(QVariant(array2));

    QVariant v;
    v.setValue(array);

    QString path = QDir::currentPath();
    path.replace("/","\\");
    list.append(path + QLatin1String("\\IBSymbolDescription.txt"));

    list.append(936);
    list.append(1);
    list.append(1);
    list.append(1);
    list.append(false);
    list.append(false);
    list.append(false);
    list.append(true);//分隔符为,
    list.append(false);
    list.append(false);
    list.append(936);
    list.append(v);

    QVariant workbook = workbooks->dynamicCall( "OpenText(QString,int,int,int,int,bool,bool,bool,bool,bool,bool,int,QList<LongLong>)",list); 

    这里一定要用longlong,因为QT在封装接口,即QVariantToVARIANT中采用VARIANT构建二维数组,如果使用int,就相当于把4字节的数值左移4位变为8字节的数,与期望值相差很大


    赠送名言:杂耍和唱歌的才需要掌声

    展开全文
  • Qt读取excel文件

    千次阅读 2018-11-25 20:42:44
    qt的pro文件中添加 QT += sql QT += axcontainer 需要包含的头文件 #include &lt;QAxObject&gt; #include &lt;QSqlDatabase&gt; #include &lt;QSqlQuery&gt; #include &lt;vector&...

    在qt的pro文件中添加

    QT += sql
    QT += axcontainer
    

    需要包含的头文件

    #include <QAxObject>
    #include <QSqlDatabase>
    #include <QSqlQuery>
    #include <vector>
    

    直接上函数代码

    void Read_Excel(const QString PATH,const QString FILENAME,const int SHEETNUM,const QString RANGE,const int INVALIDROW,const int TOTALCOLNUM,vector<QString>& RESULT)
    //参数解释:路径,文件名,第几个sheet表,读取范围(格式为A1:B),无效的行数(比如不想要的title等),读取范围的总列数,返回一个QString的vector。
    {
        QString pathandfilename=PATH+FILENAME;
        QAxObject excel("Excel.Application");
        excel.setProperty("Visible", false); //隐藏打开的excel文件界面
        QAxObject *workbooks = excel.querySubObject("WorkBooks");
        QAxObject *workbook = workbooks->querySubObject("Open(QString, QVariant)", pathandfilename); //打开文件
        QAxObject * worksheet = workbook->querySubObject("WorkSheets(int)", SHEETNUM); //访问第SHEETNUM个工作表
        QAxObject * usedrange = worksheet->querySubObject("UsedRange");
        QAxObject * rows = usedrange->querySubObject("Rows");
        int rownum = rows->property("Count").toInt(); //获取行数
    
        QString Range = RANGE +QString::number(rownum);
        QAxObject *allEnvData = worksheet->querySubObject("Range(QString)", Range); //读取范围
        QVariant allEnvDataQVariant = allEnvData->property("Value");//读取所有的值
        QVariantList allEnvDataList = allEnvDataQVariant.toList();//转换为list
    
        for(int i=0; i<rownum-INVALIDROW; i++)
        {
            QVariantList allEnvDataList_i =  allEnvDataList[i].toList();//第i行的数据
            for(int j=0;j<TOTALCOLNUM;j++)
            {
                QString tempvalue=allEnvDataList_i[j].toString();
                RESULT.push_back(tempvalue);
            }
        }
        workbooks->dynamicCall("Close()");
        excel.dynamicCall("Quit()");
    }
    
    展开全文
  • QTExcel文件总结

    2020-04-28 21:56:01
    QT操作excel表格,我们需要在工程文件(.pro)中加入以下内容,这里分两种添加方法: 第一种: QT += qaxcontainer 第二种: QT += axcontainer 上面两种方法都可以,只是需要在头文件mainwindow.h文件包含的...
  • Qt下读写Excel文件,网上推荐是适用QAxObject QAxObject *excel = new QAxObject; excel->setControl(“Excel.Application”); //连接Excel控件 但是这个用法有问题,当机器没有安装Office的时候,是不能调用...
  • Qt 解析EXcel文件

    千次阅读 2015-08-07 14:53:19
    写代码需要将excel中的文件导入到数据库中 网上找到以为大神写的,但是当初没有保存,也没有找到 我几乎是原分不动拔下来的,希望大神莫怪 代码格式传不上去,只能贴 了 void AddDialog::readExcel...
  • QT导出Excel文件示例

    热门讨论 2012-04-06 18:46:36
    借用了微软的ODBC来操作Excel,例子虽然简单,但对于一般导出类型够用了
  • QT使用excel

    2018-12-24 16:51:15
    软件打开多个excel文件,提取excel中相应的内容,存储到目的excel文件中对应的位置
  • void ReportDialog::setCellValue(int row...这个向excel填写内容的函数。 setCellValue(1,1,"这就是这样"); 结果是: [img=https://img-bbs.csdn.net/upload/201604/06/1459945851_646548.jpg][/img] 求大神指导
  • QT 快速读取Excel文件

    2018-03-10 00:00:20
    QT 快速读取Excel文件QT 快速读取Excel文件QT 快速读取Excel文件
  • Qt操作Excel

    2019-03-23 12:42:34
    * 该类通过COM来操作excel,主要使用QAxObject以及Excel VBA,须在.pro文件中添加 “QT += axcontainer” * * Excel的层次结构为 excel应用程序->工作簿->工作表->单元格 * 一个类对象可以创建多个工作簿,每个...
  • Qt创建excel文件

    千次阅读 2012-09-16 13:39:46
    #include #include #include #include int main(int argc, char *argv[]) {  QApplication a(argc, argv);... QString fileName = QFileDialog::getSaveFileName(NULL,"Save File",".","Excel File (*.xls)");
  • Qt操作Excel文件,附完整工程

    千次阅读 2020-12-03 18:34:18
    最近因项目需要,需将Qt工具测试到的数据通过Excel文件存储,在Qt下以前没弄过对Excel的操作,网上铺天盖地的一顿好找,终于,皇天不负有心人,Excel方面已经能满足项目需求了,现将代码整理,方便坛友与自己后续...
  • Qt读取excel文件的两种方法

    万次阅读 2017-07-25 13:54:13
    一.QAxObject 1.在工程文件(pro文件)中加入 CONFIG += qaxcontainer 2.添加头文件 #include 3.读取文件代码 QAxObject excel("Excel.Application");... //隐藏打开excel文件界面 Q
  • 2、软件功能:将excel文件中的数据动态显示在界面上,便于大数据的动态观察; 实现功能1:对Excel文件进行读操作,将Excel数据存入QList<QList<QVariant>> 类型的变量中,实现快速获取excel数据和对excel数据的...
  • qtExcel文件

    2018-06-25 15:05:02
    //打开excel文件 bool openExcel(const QString& filename); //获取 指定单元格的数据 std::string getCellData(const int& row, const int& col); //获取 行数,列数 void getInfo(int& row, int& col) ...
  • Qt-excel文件操作方法

    2018-12-24 21:25:16
    QAxObject是Qt提供的包装COM组件的类,通过COM操作Excel需要使用QAxObject类,使用此类还需要在pro文件增加“QT += axcontainer” QAxObject的具体说明请见帮助文档excel com连接的方法 #include &amp;lt;...
  • 用法①:使用Xlsx作为Qt5的附加模块2.1 构建模块2.2 下载QtXlsx源代码2.3 为编译器安装Xlsx模块2.3.1 打开 MinGW 7.3.0 32-bit 控制台2.3.2 找到QtXlsx源码路径2.3.3 再MinGW32控制台进入路径2.3.4 执行qmake2.3.5 ...
  • QtExcel文件中Chart绘图

    千次阅读 2019-07-24 15:41:12
    使用第三方库QtXlsxWriter ...文档:http://qtxlsx.debao.me/ 库加载使用方法:https://blog.csdn.net/qq_27175513/article/details/78711993(或者根据github中的方法加载) DEMO: #in...
  • QtXlsx读写excel文件

    2019-10-14 09:33:42
    QtXlsx读写excel文件库,可以对excel文件进行读写,很方便各位开发者去操作excel文件,有兴趣的可以下载进行学习和研究。
  • Xlsx Module 某块提供了读写Excel 文件的类.其不需要安装 Microsoft ExcelQT5结合,可以使用在任何平台,该库主要用如下几个功能: Generate a new .xlsx file from scratch Extract data from
  • qt打开excel、word等文件方法

    万次阅读 2017-06-17 11:36:15
    这样即可,调用excel打开文件 QFile file(fileName); if (file.exists())  { QDesktopServices::openUrl(QUrl::fromLocalFile(fileName)); } 如果是调用exe程序直接这样,比如打开计算器 QProcess process...
  • Qt操作Excel文件知识总结

    万次阅读 2011-12-15 14:40:39
    这种方法比较通用,是常规方法,缺点是速度太慢了,如果数据量大,要想提高速度,可以考虑把excel文件另存为csv格式,用逗号分割个单元格的文本方式,直接操作文本文件,速度很快 2011年12月16日,在开源网站搜到一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,280
精华内容 1,312
关键字:

qt打开excel文件