如何从Qt应用程序驱动Excel窗口

在我的Qt应用程序中,我有一个窗口,其中一个表使用来自后端服务器的数据dynamic更新。 我需要我的窗口能够打开一个Excel实例,将表中的所有数据插入Excel窗口,并更新Excel表格中的数据更新时的Excel单元格。

这是可能实现的吗? 如果是这样,我怎么能做到这一点? 我不介意只能在Windows上运行的依赖于平台的解决scheme。

这是我最后使用的代码。

打开Excel:

 QAxObject* excel = new QAxObject("Excel.Application", 0); excel->dynamicCall("SetVisible(bool)", true); 

读取单元格值:

 QAxObject* workbooks = excel->querySubObject("Workbooks"); QAxObject* workbook = workbooks->querySubObject("Open(const QString&)", "D:\\a.xlsx"); QAxObject* worksheet = workbook->querySubObject("Worksheets(int)", 1); QAxObject* usedrange = worksheet->querySubObject("UsedRange"); QAxObject* rows = usedrange->querySubObject("Rows"); QAxObject* columns = usedrange->querySubObject("Columns"); int intRowStart = usedrange->property("Row").toInt(); int intColStart = usedrange->property("Column").toInt(); int intCols = columns->property("Count").toInt(); int intRows = rows->property("Count").toInt(); QAxObject* cell; for (int i = intRowStart; i < intRowStart + intRows; i++) { for (int j = intColStart; j < intColStart + intCols; j++) { cell = excel->querySubObject("Cells(Int, Int)", i, j); QVariant cellValue = cell->dynamicCall("value"); qDebug() << cellValue.toString(); } } 

编写单元格值

 cell->setProperty("Value", "somevalue"); 

注意:请记住在做任何这些之前创buildQApplication。 我花了相当多的时间来弄清楚不这样做是错误的。