• 大小: 11KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签: QT  个税  计算器  

资源简介

可导入excel表格的用QT开发的个税计算器,可针对不同税率在代码中进行修改

资源截图

代码片段和文件信息

#include “excelengine.h“
#include “qt_windows.h“

ExcelEngine::ExcelEngine()
{
    pExcel     = NULL;
    pWorkbooks = NULL;
    pWorkbook  = NULL;
    pWorksheet = NULL;

    sXlsFile     = ““;
    nRowCount    = 0;
    nColumnCount = 0;
    nStartRow    = 0;
    nStartColumn = 0;

    bIsOpen  = false;
    bIsValid = false;

    HRESULT r = OleInitialize(0);
    if (r != S_OK && r != S_FALSE)
    {
        qDebug(“Qt: Could not initialize OLE (error %x)“ (unsigned int)r);
    }
}

ExcelEngine::ExcelEngine(QString xlsFile)
{
    pExcel     = NULL;
    pWorkbooks = NULL;
    pWorkbook  = NULL;
    pWorksheet = NULL;

    sXlsFile     = xlsFile;
    nRowCount    = 0;
    nColumnCount = 0;
    nStartRow    = 0;
    nStartColumn = 0;

    bIsOpen  = false;
    bIsValid = false;

    HRESULT r = OleInitialize(0);
    if (r != S_OK && r != S_FALSE)
    {
        qDebug(“Qt: Could not initialize OLE (error %x)“ (unsigned int)r);
    }
}

ExcelEngine::~ExcelEngine()
{
    if ( bIsOpen )
    {
        //析构前,先保存数据,然后关闭workbook
        Close();
    }
    OleUninitialize();
}

/**
  *@brief 打开sXlsFile指定的excel报表
  *@return true : 打开成功
  *        false: 打开失败
  */
bool ExcelEngine::Open(UINT nSheet bool visible)
{

    if ( bIsOpen )
    {
        //return bIsOpen;
        Close();
    }

    if ( NULL == pExcel )
    {
        pExcel = new QAxobject(“Excel.Application“);
        if ( pExcel )
        {
            bIsValid = true;
        }
        else
        {
            bIsValid = false;
            bIsOpen  = false;
            return bIsOpen;
        }

        pExcel->dynamicCall(“SetVisible(bool)“ bIsVisible);
    }

    if ( !bIsValid )
    {
        bIsOpen  = false;
        return bIsOpen;
    }

    if ( sXlsFile.isEmpty() )
    {
        bIsOpen  = false;
        return bIsOpen;
    }


    bool ok = CreateXlsFile(sXlsFile);
    if ( !ok )
    {
        bIsOpen  = false;
        return bIsOpen;
    }

    nCurrSheet = nSheet;
    bIsVisible = visible;

    pWorkbooks = pExcel->querySubobject(“WorkBooks“); //获取工作簿
    pWorkbook = pWorkbooks->querySubobject(“Open(QString QVariant)“sXlsFileQVariant(0)); //打开xls对应的工作簿
    pWorksheet = pWorkbook->querySubobject(“WorkSheets(int)“ nCurrSheet);//打开第一个sheet

    //至此已打开,开始获取相应属性
    QAxobject *usedrange = pWorksheet->querySubobject(“UsedRange“);//获取该sheet的使用范围对象
    QAxobject *rows = usedrange->querySubobject(“Rows“);
    QAxobject *columns = usedrange->querySubobject(“Columns“);

    //因为excel可以从任意行列填数据而不一定是从00开始,因此要获取首行列下标
    nStartRow    = usedrange->property(“Row“).toInt();    //第一行的起始位置
    nStartColumn = usedrange->property(“Column“).toInt(); //第一列的起始位置

    nRowCount    = rows->property(“Count“).toInt();       //获取行数
    nColumnCount = columns->property(“Count“).toInt();    //获取列数

    bIsOpen  = true;
    return bIsOpen;
}

/**
  *@brief Open()的重载函数
  */

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9412  2012-06-02 19:35  tax\excelengine.cpp

     文件       2210  2012-05-22 20:31  tax\excelengine.h

     文件        270  2012-10-08 09:58  tax\main.cpp

     文件      10707  2012-10-23 20:10  tax\mainwindow.cpp

     文件        478  2012-10-08 11:49  tax\mainwindow.h

     文件       4700  2012-10-23 22:16  tax\mainwindow.ui

     文件        394  2012-10-07 15:18  tax\tax.pro

     文件      17608  2012-10-23 23:03  tax\tax.pro.user

     文件      29759  2012-10-23 22:42  tax\tax.pro.user.2.5pre1

     目录          0  2013-01-05 08:35  tax

----------- ---------  ---------- -----  ----

                75538                    10


评论

共有 条评论