C++读取,修改excel表格数据,重命名excel表格

  1. 读取excel表格数据
#define QSC(s)		(QString::fromLocal8Bit(s))
#define INFO(s)		(qInfo().noquote() << s)
//获取excel表格数据 : GetexcelInfo("E:\\111.xlsx", 1, 1);
//代表读取E:\\111.xlsx表格的第一行第一列的内容
    QString GetexcelInfo(QString name,int i, int j);

QString GetexcelInfo(QString name,int i,int j)
{
    INFO(QSC("Getexcel:读取excel数据"));
    QAxObject* excel = NULL;    //本例中,excel设定为Excel文件的操作对象
    QAxObject* workbooks = NULL;
    QAxObject* workbook = NULL;  //Excel操作对象
    excel = new QAxObject("Excel.Application");
    excel->dynamicCall("SetVisible(bool)", false); //true 表示操作文件时可见,false表示为不可见
    workbooks = excel->querySubObject("WorkBooks");

    //————————————————按文件路径打开文件————————————————————
    workbook = workbooks->querySubObject("Open(QString&)", name);

    // 获取打开的excel文件中所有的工作sheet
    QAxObject* worksheets = workbook->querySubObject("WorkSheets");

    // ————————————————获取第n个工作表 querySubObject("Item(int)", n);——————————
    QAxObject* worksheet = worksheets->querySubObject("Item(int)", 1);//本例获取第一个,最后参数填1

    //—————————获取该sheet的数据范围(可以理解为有数据的矩形区域)————
    QAxObject* usedrange = worksheet->querySubObject("UsedRange");


    QVariantList rowList;
    QAxObject* cell = worksheet->querySubObject("Cells(int,int)", i, j);
    rowList.append(cell->dynamicCall("Value2()"));
    delete cell;
    QString info = rowList.at(0).toString();

    qInfo() << QSC("获取的数据") << info;

    //!!!!!!!一定要记得close,不然系统进程里会出现n个EXCEL.EXE进程
    workbook->dynamicCall("Save()");
    workbook->dynamicCall("Close()");
    excel->dynamicCall("Quit()");
    if (excel)
    {
        delete excel;
        excel = NULL;
    }
    return info;
    //列的转换函数如下地址,第6列转为F列,第29列转为AC列
    //http://blog.csdn.net/y396397735/article/details/78312124
}

  1. 修改excel表格数据
#include <ObjBase.h>
//更改excel表格数据(QString range:如果是六行六列则传入F6:F6)
    //QString name = "E:\\001-20220527135734-PASS.xlsx",QString range= "F6:F6", QString value_info = "sadfdddgtfgtjuyk"
    bool ExcelChange(QString name ,QString range, QString value_info);

bool ExcelChange(QString name,QString range, QString value_info)
{
    INFO(QSC("ExcelChange:写入excel数据"));
    qInfo() << QSC("获取的数据name") << name<< QSC("获取的数据range") << range<< QSC("获取的数据value_info") << value_info;

	//这行表示在子线程中使用此函数则需要用,不然会报错
    CoInitializeEx(NULL, COINIT_MULTITHREADED);
    
    QAxObject* excel = NULL;    //本例中,excel设定为Excel文件的操作
    QAxObject* workbooks = NULL;
    QAxObject* workbook = NULL;  //Excel操作对象
    excel = new QAxObject("Excel.Application");
    excel->dynamicCall("SetVisible(bool)", false); //true 表示操作文件时可见,false表示为不可见
    workbooks = excel->querySubObject("WorkBooks");

    //————————————————按文件路径打开文件————————————————————
    workbook = workbooks->querySubObject("Open(QString&)", name);

    // 获取打开的excel文件中所有的工作sheet
    QAxObject* worksheets = workbook->querySubObject("WorkSheets");

    qInfo() << QSC("按文件路径打开文件成功");

    // ————————————————获取第n个工作表 querySubObject("Item(int)", n);——————————
    QAxObject* worksheet = worksheets->querySubObject("Item(int)", 1);//本例获取第一个,最后参数填1

    //—————————获取该sheet的数据范围(可以理解为有数据的矩形区域)————
    QAxObject* usedrange = worksheet->querySubObject("UsedRange");

    ———————————————————获取行数———————————————
    QAxObject* rows = usedrange->querySubObject("Rows");
    int iRows = rows->property("Count").toInt();
    qInfo() << QSC("行数为: %1").arg(QString::number(iRows));

    //————————————获取列数—————————
    QAxObject* columns = usedrange->querySubObject("Columns");
    int iColumns = columns->property("Count").toInt();
    qInfo() << QSC("列数为: %1").arg(QString::number(iColumns));

    //————————数据的起始行———
    int iStartRow = rows->property("Row").toInt();
    qInfo() << QSC("起始行为: %1").arg(QString::number(iStartRow));

    //————————数据的起始列————————————
    int iColumn = columns->property("Column").toInt();
    qInfo() << QSC("起始列为: %1").arg(QString::number(iColumn));

    //—————————————写入数据—————————————
    //获取F6的位置
    QAxObject* range2 = worksheet->querySubObject("Range(QString)", range);
    //写入数据, 第6行,第6列
    range2->setProperty("Value", value_info);
    QString newStr = "";
    newStr = range2->property("Value").toString();
    qInfo() << QSC("写入数据数据为:") + newStr;

    //!!!!!!!一定要记得close,不然系统进程里会出现n个EXCEL.EXE进程
    workbook->dynamicCall("Save()");
    workbook->dynamicCall("Close()");
    excel->dynamicCall("Quit()");
    if (excel)
    {
        delete excel;
        excel = NULL;
    }
    qInfo() << QSC("写入数据数据完成");
    return true;
}
  1. 修改excel表格名字
//更改excel文件名
    //oldFileName="E:\\111.xlsx" newFileName="E:\\111111111111.xlsx"
    bool RenameExcel(QString oldFileName, QString newFileName);
bool RenameExcel(QString oldFileName, QString newFileName)
{
    qInfo() << QSC("RenameExcel:oldFileName") << oldFileName << QSC("RenameExcel:newFileName") << newFileName;
    //由qstring转换成const char*
    //QString  oldFileName;
    std::string str1 = oldFileName.toStdString();
    const char* oldFileName_char = str1.c_str();

    //QString  newFileName;
    std::string str2 = newFileName.toStdString();
    const char* newFileName_char = str2.c_str();

    int result = rename(oldFileName_char, newFileName_char);
    if (result)
    {
        return false;
    }
    qInfo() << QSC("修改excel文件名成功");
    return true;
}

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Python中,可以使用pandas库对Excel表格进行读取和写入。其中,pandas.read_excel()函数可以用来读取Excel表格,pandas.DataFrame.to_excel()函数则可以用来将DataFrame数据类型写入Excel表格读取Excel表格的示例代码如下: import pandas as pd df = pd.read_excel('example.xlsx', sheet_name='Sheet1') 其中,'example.xlsx'表示Excel表格的文件路径,'Sheet1'为要读取表格的名称。 写入Excel表格的示例代码如下: import pandas as pd data = {'Name': ['Tom', 'Sam', 'Kevin'], 'Age': [25, 30, 27], 'Gender': ['Male', 'Male', 'Female']} df = pd.DataFrame(data) df.to_excel('example.xlsx', sheet_name='Sheet1', index=False) 其中,data是一个字典类型,包含了要写入Excel表格数据。df是一个DataFrame类型,用来保存data的数据。'example.xlsx'表示要写入的Excel表格的文件路径,'Sheet1'为要写入的表格的名称。index=False表示不将行索引写入Excel表格中。 综上所述,要读取和写入Excel表格,只需要使用pandas库中的相关函数即可。 ### 回答2: Excel表格是一种常见的电子表格,它可以记录和处理各种数据,具有直观、简单、易用等特点。在Python中,可以使用第三方库openpyxl来读取和写入Excel表格。下面分别介绍如何读取和写入Excel表格的方法。 一、读取Excel表格 1. 安装openpyxl库:在命令行中输入 pip install openpyxl,即可安装openpyxl库。 2. 打开Excel表格:要使用openpyxl库读取Excel表格,首先要打开表格文件,可以使用load_workbook()方法打开文件,并返回一个workbook对象。 例如:workbook = openpyxl.load_workbook('example.xlsx') 3. 获取表格中的单元格:要获取Excel表格中的单元格,可以先选定一个工作表,然后通过其名称或坐标来获取单元格对象。 例如:worksheet = workbook['Sheet1'] cell = worksheet['A1'] 或 cell = worksheet.cell(row=1, column=1) 4. 读取单元格的值:可以使用value属性来读取单元格中的值。 例如:print(cell.value) 二、写入Excel表格 1. 创建Excel表格:要使用openpyxl库写入Excel表格,首先要创建一个workbook对象,并添加需要的工作表。 例如:workbook = openpyxl.Workbook() worksheet = workbook.active worksheet.title = 'Sheet1' 2. 写入单元格的值:也可以使用value属性来写入单元格中的值。 例如:worksheet['A1'].value = 'Python' 3. 保存Excel表格:可以使用save()方法来保存Excel表格。 例如:workbook.save('example.xlsx') 综上所述,Python通过openpyxl库可以方便地读取和写入Excel表格,这对于数据处理和分析非常有帮助。但需要注意的是,openpyxl库在读写大型Excel文件时可能会存在性能问题,因此需要合理使用并注意优化。 ### 回答3: Excel表格是一种广泛使用的电子表格,它被广泛用于记录和管理数据。Python语言中有很多可用于读取和写入Excel表格的库,这里我们将重点介绍openpyxl库。 openpyxl是Python中一个用于读取和写入Excel表格的库。它可以完全处理xlsx和xlsm文件,并且提供了对Excel中电子表格、单元格、行和列的完整访问。下面我们详细介绍openpyxl库的读写操作。 读取Excel表格: 1. 导入openpyxl库 ``` import openpyxl ``` 2. 打开Excel表格 ``` workbook = openpyxl.load_workbook('file_path') ``` 3. 获取要操作的表格(可以是默认的第一个sheet页,也可以是指定的sheet页) ``` sheet = workbook['sheet_name'] # 或者 sheet = workbook.active ``` 4. 获取单元格的值 ``` cell_value = sheet['A1'].value ``` 5. 获取行和列的值 ``` row_values = [] for row in range(1, sheet.max_row+1): row_data = [] for column in range(1, sheet.max_column+1): row_data.append(sheet.cell(row=row, column=column).value) row_values.append(row_data) col_values = [] for column in range(1, sheet.max_column+1): col_data = [] for row in range(1, sheet.max_row+1): col_data.append(sheet.cell(row=row, column=column).value) col_values.append(col_data) ``` 写入Excel表格: 1. 导入openpyxl库 ``` import openpyxl ``` 2. 创建Excel表格 ``` workbook = openpyxl.Workbook() ``` 3. 创建并选择要操作的sheet页 ``` sheet = workbook.create_sheet('sheet_name', 0) ``` 4. 写入单元格的值 ``` sheet['A1'] = 'value' ``` 5. 写入行和列的值 ``` row_values = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] for row in row_values: sheet.append(row) col_values = [[1, 4, 7], [2, 5, 8], [3, 6, 9]] for col in col_values: sheet.append(col) ``` 6. 保存Excel表格 ``` workbook.save('file_path') ``` 总的来说,使用openpyxl库读取和写入Excel表格非常容易,只需几行代码就可以完成读写操作。对于需要处理Excel表格的项目,openpyxl是一个非常方便和强大的工具。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值