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);
//绘制单元格边框(黑色)