星星QT::读取excel (使用libxl)

一、上代码

#include "libxl.h"
#include <QDebug>
#include <QString>
#include <QElapsedTimer>
using namespace libxl;

// int ReadXlsTo(QString fileName )//将excel读取到内存中。
int main()
{
    QString filePath=QString::fromWCharArray(L"./Para.xls");
    Book *book = NULL;
    if(filePath.endsWith("xls", Qt::CaseInsensitive)) { //判断是否是.xls文件,不区分大小写
        book = xlCreateBook(); // xlCreateBook() for xls
    } else if(filePath.endsWith("xlsx", Qt::CaseInsensitive)) { //判断是否是.xlsx文件,不区分大小写
        book = xlCreateXMLBook(); // xlCreateXMLBook() for xlsx
    }
    //     版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    //             原文链接:https://blog.csdn.net/wl362002000/article/details/118719400
    QElapsedTimer timer;
    if (book) {

        timer.start();
        // 打开 Excel 文件
        // if (book->load(L"./Para.xlsx")) {
        if (book->load(L"./Para.xls")) {
            //获取工作表的 数量。
            qDebug()<<"loadUseTime"<<timer.elapsed();timer.restart();
            int sheetCount = book->sheetCount();
            qDebug()<<sheetCount;
            // 遍历所有工作表。 row 行  col 列
            for (int sheetIndex = 0; sheetIndex < sheetCount; ++sheetIndex) {
                Sheet* sheet = book->getSheet(sheetIndex);

                if (sheet) {
                    qDebug()
                        << "Sheet:"
                        << QString::fromWCharArray(sheet->name())<<"\n"
                        <<"row:"<<sheet->lastRow()
                        <<" , col"<<sheet->lastCol();

                    // 获取行数和列数
                    int rowCount = sheet->lastRow();
                    int colCount = sheet->lastCol();

                    // 读取所有数据
                    for (int row = 0; row <= rowCount; ++row) {
                        for (int col = 0; col <= colCount; ++col) {
                            CellType cellType = sheet->cellType(row, col);

                            switch (cellType) {
                            case CELLTYPE_EMPTY:
                                qDebug() << "Row:" << row << ", Col:" << col << " - Empty cell";
                                break;
                            case CELLTYPE_NUMBER:
                                qDebug() << "Row:" << row << ", Col:" << col << " - Number:" << sheet->readNum(row, col);
                                break;
                            case CELLTYPE_STRING:
                                qDebug() << "Row:" << row << ", Col:" << col << " - String:" << QString::fromStdWString( sheet->readStr(row, col));
                                break;
                                // 处理其他数据类型...

                            default:
                                qDebug() << "Row:" << row << ", Col:" << col << " - Unknown cell type";
                                break;
                            }
                        }
                    }
                } else {
                    qDebug() << "Sheet not found.";
                }
            }

            // 关闭 Excel 文件
            book->release();
        } else {
            qDebug() << "Failed to load Excel file.";
        }
    } else {
        qDebug() << "Failed to create LibXL book.";
    }

    return 0;
}

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果 Qt::WindowTaskbarButtonHint 属性在你使用Qt 版本中不可用,可以考虑使用 Qt::Tool 属性来实现窗口分开的效果。Qt::Tool 属性将窗口转换为工具栏窗口,可以在任务栏中分别显示每个窗口的图标和标题。 具体实现方法如下: 1. 在需要设置的窗口类的构造函数中,通过 setWindowFlags 函数设置窗口属性。例如,设置为工具栏窗口: ``` c++ setWindowFlags(Qt::Tool | Qt::WindowMinimizeButtonHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowStaysOnTopHint); ``` 2. 如果希望窗口合并到同一任务栏图标下,可以将 Qt::Tool 属性去掉即可。 ``` c++ setWindowFlags(Qt::Window | Qt::WindowMinimizeButtonHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowStaysOnTopHint); ``` 示例代码如下: ``` c++ #include <QApplication> #include <QWidget> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; window.setWindowFlags(Qt::Tool | Qt::WindowMinimizeButtonHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowStaysOnTopHint); window.show(); QWidget window2; window2.setWindowFlags(Qt::Tool | Qt::WindowMinimizeButtonHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowStaysOnTopHint); window2.show(); return app.exec(); } ``` 注意:使用 Qt::Tool 属性将窗口转换为工具栏窗口,可能会导致窗口的行为和样式与普通窗口不同。例如,工具栏窗口默认不会显示在 Windows 任务栏和 Mac OS Dock 中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值