qt对excel的基本操作

本文详细介绍了如何在Qt环境中通过COM组件与Excel进行交互,包括环境配置、连接控件、操作指令,如打开/保存工作簿、设置单元格属性、宽度自适应等,并针对常见问题提供解决方案。适合开发者掌握Excel在跨平台应用中的集成技巧。
摘要由CSDN通过智能技术生成

qt对excel的基本操作

1.环境

1.1 配置方面

​ ① 确保Excel软件在本地服务器注册成功,没注册成功的可以通过 在运行中"E:\program Files\Microsoft Office\Office12\EXCEL.EXE" /regserver 手动注册,注意路径要用自己的excel路径。

​ ② 确保组件配制正确,运行命令:dcomcnfg,查看DCOM配置下是否有Microsoft Excel Application,有的话万事大吉,开始设置(1)常规,身份验证:无(2)安全、配制权限自定义,控制权限,完全控制选中,保存

2.指令

2.1 常用操作指令

连接Excel控件

QAxWidget excel(“Excel.Application”);

显示当前窗口:
excel.setProperty(“Visible”, true);

更改 Excel 标题栏:
excel.setProperty(“Caption”, “Invoke Microsoft Excel”);

不显示任何警告信息

setProperty(“DisplayAlerts”,0)

添加新工作簿:
QAxObject * workbooks = excel.querySubObject(“WorkBooks”);
workbooks->dynamicCall(“Add”);

打开已存在的工作簿:
workbooks->dynamicCall(“Open (const QString&)”, QString(“c:/test.xls”));

获取活动工作簿:
QAxObject * workbook = excel.querySubObject(“ActiveWorkBook”);

获取所有的工作表:
QAxObject * worksheets = workbook->querySubObject(“WorkSheets”);

获取工作表数量:
int intCount = worksheets->property(“Count”).toInt();

获取第一个工作表:
QAxObject * worksheet = workbook->querySubObject(“Worksheets(int)”, 1);

获取cell的值:
QAxObject * range = worksheet->querySubObject(“Cells(int,int)”, 1, 1 );

获取已使用区域

m_pworksheet->querySubObject(“UsedRange”)

获取行数

QAxObject *rows = usedrange->querySubObject(“Rows”);

int nRows = rows->property(“Count”).toInt();

获取列数

QAxObject *columns = usedrange->querySubObject(“Columns”);

int nCols = columns->property(“Count”).toInt();

2.2 设置单元格属性

QAxObject *pCell = work_sheet->querySubObject("Range(const QString&)", "A1:C1");
if (pCell)
{	    	        	
    //字体对齐(居中)
    pCell ->setProperty("HorizontalAlignment", -4108);//左对齐(xlLeft):-4131  居中(xlCenter):-4108  右对齐(xlRight):-4152
    pCell ->setProperty("VerticalAlignment", -4108); //上对齐(xlTop)-4160 居中(xlCenter):-4108  下对齐(xlBottom):-4107

    //设置字体
    QAxObject *font = pCell->querySubObject("Font");  //获取单元格字体
    font->setProperty("Bold", true);  //字体加粗
    font->setProperty("Name", QStringLiteral("华文彩云"));  //设置单元格字体
    font->setProperty("Bold", true);  //设置单元格字体加粗
    font->setProperty("Size", 20);  //设置单元格字体大小
    font->setProperty("Italic", true);  //设置单元格字体斜体
    font->setProperty("Underline", 2);  //设置单元格下划线
    font->setProperty("Color", QColor(255, 0, 0));  //设置单元格字体颜色(红色)

    //设置单元格背景色(灰色)
    QColor bkColor(125, 125, 125);
    QAxObject* interior = pCell->querySubObject("Interior");
    interior->setProperty("Color", bkColor);

    //绘制单元格边框(黑色)
Qt提供了QAxObject类来操作Microsoft Excel文件。以下是Qt操作Excel文件的基本步骤: 1. 引入头文件 ```cpp #include <QAxObject> ``` 2. 创建Excel对象 ```cpp QAxObject *excel = new QAxObject("Excel.Application", this); ``` 3. 打开Excel文件 ```cpp QAxObject *workbooks = excel->querySubObject("Workbooks"); QAxObject *workbook = workbooks->querySubObject("Open(const QString&)", "excel_file_path"); ``` 4. 获取工作表 ```cpp QAxObject *worksheets = workbook->querySubObject("Worksheets"); QAxObject *worksheet = worksheets->querySubObject("Item(int)", 1); //获取第一个工作表 ``` 5. 操作单元格 ```cpp QAxObject *cell = worksheet->querySubObject("Cells(int,int)", row, column); cell->setProperty("Value", cell_value); //设置单元格值 QString cell_value = cell->property("Value").toString(); //获取单元格值 ``` 6. 保存Excel文件 ```cpp workbook->dynamicCall("Save()"); ``` 7. 关闭Excel文件 ```cpp workbook->dynamicCall("Close()"); excel->dynamicCall("Quit()"); ``` 完整代码示例: ```cpp #include <QAxObject> void operateExcel() { QAxObject *excel = new QAxObject("Excel.Application", this); QAxObject *workbooks = excel->querySubObject("Workbooks"); QAxObject *workbook = workbooks->querySubObject("Open(const QString&)", "excel_file_path"); QAxObject *worksheets = workbook->querySubObject("Worksheets"); QAxObject *worksheet = worksheets->querySubObject("Item(int)", 1); QAxObject *cell = worksheet->querySubObject("Cells(int,int)", 1, 1); cell->setProperty("Value", "Hello, world!"); workbook->dynamicCall("Save()"); workbook->dynamicCall("Close()"); excel->dynamicCall("Quit()"); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值