1、UI设计。
2、四个按钮的槽函数实现如下:
(1)Excel写入槽函数:
void WandE::on_pushButton()//Excel写入
{
//创建一个Excel应用程序进程
QAxObject *myexcel = new QAxObject("Excel.Application");
//隐藏不显示文档窗体
myexcel->dynamicCall("SetVisible(bool Visible)", "false");
//屏蔽文档的警告消息框
myexcel->setProperty("DisplayAlerts", false);
//获取工作薄集
QAxObject *myworks = myexcel->querySubObject("WorkBooks");
//添加工作薄
myworks->dynamicCall("Add");
//获取当前活动工作薄
QAxObject *mywork = myexcel->querySubObject("ActiveWorkBook");
//获取电子表格集
QAxObject *mysheets = mywork->querySubObject("Sheets");
//添加一个表
mysheets->dynamicCall("Add");
//指向当前的活动表格
QAxObject *sheet = mywork->querySubObject("ActiveSheet");
//给表格命名
sheet->setProperty("Name", "表格1号");
//指向C3单元格
QAxObject *cell = sheet->querySubObject("Range (QVariant, QVariant) ", "C3");
//从lineEdit控件获得数据
QString inStr = ui.lineEdit->text();
//向单元格写入内容
cell->dynamicCall("SetValue(const QVariant&)", QVariant(inStr));
mywork->dynamicCall("SaveAs(const QString&) ", QDir::toNativeSeparators("F:/work/we.xls"));
mywork->dynamicCall("Close()"); //关闭
myexcel->dynamicCall("Quit()"); //退出
}
(2)Excel读出槽函数:
void WandE::on_pushButton_2()//Excel读出
{
QAxObject *myexcel = new QAxObject("Excel.Application");
QAxObject *myworks = myexcel->querySubObject("WorkBooks");
//QAxObject *mywork = myexcel->querySubObject("ActiveWorkBook");
//打开文件
//QAxObject *mywork = myworks->querySubObject("Open(QString, QVariant)", QDir::currentPath() + "/IMEI.xls");
QAxObject *mywork = myworks->querySubObject("Open(QString, QVariant)", QString("F:/work/work1.xlsx"));
//访问第一个工作表
QAxObject * mysheet = mywork->querySubObject("WorkSheets(int)", 1);
QString Range = "A1:B2";
//读取范围
QAxObject *allEnvData = mysheet->querySubObject("Range(QString)", Range);
QVariant allEnvDataQVariant = allEnvData->property("Value");
QVariantList allEnvDataList = allEnvDataQVariant.toList();
QVariantList allEnvDataList_i = allEnvDataList[0].toList();
QString data11 = allEnvDataList_i[0].toString(); //第i行第0列的数据
QString data12 = allEnvDataList_i[1].toString();
data11 = data11 + data12;
ui.lineEdit_2->setText(data11);
mywork->dynamicCall("Close()");
myexcel->dynamicCall("Quit()");
}
(3) word写入槽函数:
void WandE::on_pushButton_3()//word写入
{
QAxObject *myword = new QAxObject("Word.Application");
myword->setProperty("Visible", false);
QAxObject *mydocs=myword->querySubObject("Documents");
mydocs->dynamicCall("Add(void)");
QAxObject *mydoc = myword->querySubObject("ActiveDocument");
QString str = ui.lineEdit_3->text();
QAxObject *selection = myword->querySubObject("Selection");
selection->dynamicCall("TypeText(const QString&)", str);
mydoc->dynamicCall("SaveAs(const QString&) ", "F:/work/word1.doc");
mydoc->dynamicCall("Close()");
myword->dynamicCall("Quit()");
delete myword;
}
(4) word读出槽函数实现:
void WandE::on_pushButton_4()//word读出
{
QAxObject *myword = new QAxObject("Word.Application");
myword->setProperty("Visible", false);
QAxObject *mydocs = myword->querySubObject("Documents");
mydocs->dynamicCall("Open(const QVariant&)", "F:/work/word2.doc");
QAxObject *mydoc = myword->querySubObject("ActiveDocument");
QAxObject *selection = mydoc->querySubObject("Range()");
//然后获取选中的word文档内容
QString str = selection->property("Text").toString();
ui.lineEdit_4->setText(str);
mydoc->dynamicCall("Close()");
myword->dynamicCall("Quit()");
}