pro文件:
QT += axcontainer
读Excel文件:
bool readExcel()
{
QString FilePath = "1.xls";
QFile excelFile(FilePath );
if(!excelFile.exists())
{
return false;
}
QAxObject *excel = new QAxObject(this); //连接Excel控件
if (excel->setControl("Excel.Application"))
{
}
else
{
excel->setControl("Ket.Application"); //连接Excel控件
}
excel->setProperty("Visible", false); //不显示窗体
QAxObject* workbooks = excel->querySubObject("WorkBooks"); //获取工作簿集合
workbooks->dynamicCall("Open(const QString&)", FilePath ); //打开打开已存在的工作簿
QAxObject* workbook = excel->querySubObject("ActiveWorkBook"); //获取当前工作簿
//QAxObject* sheets = workbook->querySubObject("Sheets"); //获取工作表集合,Sheet/WorkSheets
QAxObject* sheet = workbook->querySubObject("WorkSheets(int)", 1);//获取工作表集合的工作表1,即sheet1
QAxObject* range = sheet->querySubObject("UsedRange"); //获取该sheet的使用范围对象
QVariant var = range->dynamicCall("Value");
QVariantList varRows = var.toList(); //得到表格中的所有数据
//数据都在varRows ,打印出来一看就知道了
workbook->dynamicCall("Close (Boolean)", false); //关闭文件
delete range;
delete excel;
return true;
}
修改Excel文件中某个数据:
void writeExcel()
{
QString FilePath = “1.xls”;
qDebug() << "filePath:" << FilePath;
QAxObject *excel = new QAxObject(this); //连接Excel控件
if (excel->setControl("Excel.Application"))
{
}
else
{
excel->setControl("ket.Application"); //连接Excel控件
}
excel->setProperty("Visible", false); //不显示窗体
QAxObject* workbooks = excel->querySubObject("WorkBooks"); //获取工作簿集合
workbooks->dynamicCall("Open(const QString&)", FilePath); //打开打开已存在的工作簿
QAxObject* workbook = excel->querySubObject("ActiveWorkBook");
QAxObject* sheet = workbook->querySubObject("WorkSheets(int)", 1);//获取工作表集合的工作表1,即sheet1
qDebug() << "setExcel:" << m_currentRowNum;
QAxObject* cell = sheet->querySubObject("Cells(int, int)", 2, 2); //获2行2列单元格值
cell->dynamicCall("SetValue(conts QVariant&)", 123); // 设置单元格的值
workbook->dynamicCall("Save()"); //保存文件
workbook->dynamicCall("Close (Boolean)", false); //关闭文件
delete excel;
}