#include "reporting.h" #include "ui_reporting.h" #include #include #include #include #include #include #include #include Reporting::Reporting(QWidget *parent) : QWidget(parent), ui(new Ui::Reporting) { ui->setupUi(this); QToolBar* locToolBar = new QToolBar(tr("报告"),this); //创建工具栏 locToolBar->addAction(ui->saveAction); connect (ui->saveAction,SIGNAL(triggered(bool)),this,SLOT(fileSave())); locToolBar->addAction(ui->openAction); connect (ui->openAction,SIGNAL(triggered(bool)),this,SLOT(openAction())); locToolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); QVBoxLayout *Layout = new QVBoxLayout();//图片合成主界面垂直布局 Layout->addWidget(locToolBar); //设置工具栏和编辑器上下布局 } Reporting::~Reporting() { delete ui; } void Reporting::fileSave(){ QString number=ui->numberEdit->text();//字号 QString wtdw=ui->wtdwEdit->text();//委托单位 QString sjr=ui->sjrEdit->text();//送检人 QDate slrqEdit=ui->slrqEdit->date(); QString slrq=QString::number(slrqEdit.year())+"年"+QString::number(slrqEdit.month())+"月"+QString::number(slrqEdit.day())+"日";//送检日期 QString qkzy=ui->qkzyTextEdit->toPlainText();//案(事)件情况摘要 QString jc=ui->jcTextEdit->toPlainText();//检材 QString yb=ui->ybTextEdit->toPlainText();//样本 QString jdyq=ui->jdyqEdit->text();//鉴定要求 QDate jyksrqEdit=ui->jyksrqDateEdit->date(); QString jyksrq=QString::number(jyksrqEdit.year())+"年"+QString::number(jyksrqEdit.month())+"月"+QString::number(jyksrqEdit.day())+"日";//检验开始日期 QString jydd=ui->jyddEdit->text();//检验地点 QString jy=ui->jyTextEdit->toPlainText();//检验 QString jcjy=ui->jcjyTextEdit->toPlainText();//检材检验 QString ybjy=ui->ybjyTextEdit->toPlainText();//样本检验 QString bdjy=ui->bdjyTextEdit->toPlainText();//比对检验 QString lz=ui->lzTextEdit->toPlainText();//论证 QString jdyj=ui->jdyjTextEdit->toPlainText();//鉴定意见 QString fj=ui->fjEdit->text();//附件 QString jdr1=ui->jdr1Edit->text();//鉴定人1 QString jdr2=ui->jdr2Edit->text();//鉴定人2 QString sqqzr=ui->sqqzrEdit->text();//授权签字人 QDate rqEdit=ui->rqDateEdit->date(); QString rq=QString::number(rqEdit.year())+"年"+QString::number(rqEdit.month())+"月"+QString::number(rqEdit.day())+"日";//检验开始日期 QString zp1=ui->zp1Edit->text();//照片1地址 QString zp2=ui->zp2Edit->text();//照片2地址 QString wzbh1=ui->wzbh1Edit->text();//照片2物证编号 QString zp3=ui->zp3Edit->text();//照片3 QString wzbh2=ui->wzbh2Edit->text();//照片3物证编号 QString zp4=ui->zp4Edit->text();//照片4 QString outFileName = QFileDialog::getSaveFileName(this, QStringLiteral("请输入要保存的名字:"),".", "Microsoft Word 97-2003(*.doc);;Microsoft Word 2007-2013(*.docx)"); if (outFileName.isEmpty()) { QMessageBox::warning(this, tr("警告"),tr("输入的文件名为空!"),QMessageBox::Ok); return ; } // 新建一个word应用程序,并设置为不可见 QAxWidget *word=new QAxWidget("Word.Application", 0, Qt::MSWindowsOwnDC); word->setProperty("Visible", false); // 获取所有的工作文档 QAxObject * documents = word->querySubObject("Documents"); // 以文件testTemplate.dot为模版新建一个文档,注意这里的路径为绝对路径 QDir dir("."); documents->dynamicCall("Add(QString)",templatePath); // 获取当前激活的文档 QAxObject *document=word->querySubObject("ActiveDocument"); // 获取文档中名字为number的标签 // QString bookmakrName="number"; QAxObject*numbermark_text=document->querySubObject(QString("Bookmarks(%1)").arg("number").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!numbermark_text->isNull()) { numbermark_text->dynamicCall("Select(void)"); numbermark_text->querySubObject("Range")->setProperty("Text",number); } QAxObject*wtdwmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("wtdw").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!wtdwmark_text->isNull()) { wtdwmark_text->dynamicCall("Select(void)"); wtdwmark_text->querySubObject("Range")->setProperty("Text",wtdw); } QAxObject*sjrmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("sjr").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!sjrmark_text->isNull()) { sjrmark_text->dynamicCall("Select(void)"); sjrmark_text->querySubObject("Range")->setProperty("Text",sjr); } QAxObject*slrqmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("slrq").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!slrqmark_text->isNull()) { slrqmark_text->dynamicCall("Select(void)"); slrqmark_text->querySubObject("Range")->setProperty("Text",slrq); } QAxObject*qkzymark_text=document->querySubObject(QString("Bookmarks(%1)").arg("qkzy").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!qkzymark_text->isNull()) { qkzymark_text->dynamicCall("Select(void)"); qkzymark_text->querySubObject("Range")->setProperty("Text",qkzy); } QAxObject*jcmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("jc").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!jcmark_text->isNull()) { jcmark_text->dynamicCall("Select(void)"); jcmark_text->querySubObject("Range")->setProperty("Text",jc); } // 获取文档中名字为number的标签 QAxObject*ybmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("yb").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!ybmark_text->isNull()) { ybmark_text->dynamicCall("Select(void)"); ybmark_text->querySubObject("Range")->setProperty("Text",yb); } QAxObject*jdyqmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("jdyq").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!jdyqmark_text->isNull()) { jdyqmark_text->dynamicCall("Select(void)"); jdyqmark_text->querySubObject("Range")->setProperty("Text",jdyq); } QAxObject*jyksrqmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("jyksrq").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!jyksrqmark_text->isNull()) { jyksrqmark_text->dynamicCall("Select(void)"); jyksrqmark_text->querySubObject("Range")->setProperty("Text",jyksrq); } QAxObject*jyddmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("jydd").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!jyddmark_text->isNull()) { jyddmark_text->dynamicCall("Select(void)"); jyddmark_text->querySubObject("Range")->setProperty("Text",jydd); } QAxObject*jymark_text=document->querySubObject(QString("Bookmarks(%1)").arg("jy").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!jymark_text->isNull()) { jymark_text->dynamicCall("Select(void)"); jymark_text->querySubObject("Range")->setProperty("Text",jy); } QAxObject*jcjymark_text=document->querySubObject(QString("Bookmarks(%1)").arg("jcjy").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!jcjymark_text->isNull()) { jcjymark_text->dynamicCall("Select(void)"); jcjymark_text->querySubObject("Range")->setProperty("Text",jcjy); } QAxObject*ybjymark_text=document->querySubObject(QString("Bookmarks(%1)").arg("ybjy").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!ybjymark_text->isNull()) { ybjymark_text->dynamicCall("Select(void)"); ybjymark_text->querySubObject("Range")->setProperty("Text",ybjy); } QAxObject*bdjymark_text=document->querySubObject(QString("Bookmarks(%1)").arg("bdjy").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!bdjymark_text->isNull()) { bdjymark_text->dynamicCall("Select(void)"); bdjymark_text->querySubObject("Range")->setProperty("Text",bdjy); } QAxObject*lzmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("lz").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!lzmark_text->isNull()) { lzmark_text->dynamicCall("Select(void)"); lzmark_text->querySubObject("Range")->setProperty("Text",lz); } QAxObject*jdyjmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("jdyj").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!jdyjmark_text->isNull()) { jdyjmark_text->dynamicCall("Select(void)"); jdyjmark_text->querySubObject("Range")->setProperty("Text",jdyj); } QAxObject*fjmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("fj").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!fjmark_text->isNull()) { fjmark_text->dynamicCall("Select(void)"); fjmark_text->querySubObject("Range")->setProperty("Text",fj); } QAxObject*jdr1mark_text=document->querySubObject(QString("Bookmarks(%1)").arg("jdr1").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!jdr1mark_text->isNull()) { jdr1mark_text->dynamicCall("Select(void)"); jdr1mark_text->querySubObject("Range")->setProperty("Text",jdr1); } QAxObject*jdr2mark_text=document->querySubObject(QString("Bookmarks(%1)").arg("jdr2").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!jdr2mark_text->isNull()) { jdr2mark_text->dynamicCall("Select(void)"); jdr2mark_text->querySubObject("Range")->setProperty("Text",jdr2); } QAxObject*sqqzrmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("sqqzr").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!sqqzrmark_text->isNull()) { sqqzrmark_text->dynamicCall("Select(void)"); sqqzrmark_text->querySubObject("Range")->setProperty("Text",sqqzr); } QAxObject*rqmark_text=document->querySubObject(QString("Bookmarks(%1)").arg("rq").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!rqmark_text->isNull()) { rqmark_text->dynamicCall("Select(void)"); rqmark_text->querySubObject("Range")->setProperty("Text",rq); } QAxObject*zp1mark_pic=document->querySubObject("Bookmarks(QVariant)","zp1"); // 选中标签,将字符插入到标签位置 if(!zp1mark_pic->isNull()) { zp1mark_pic->dynamicCall("Select(void)"); QAxObject *range; range = zp1mark_pic->querySubObject("Range"); QVariant tmp = range->asVariant(); QListqList; qList<querySubObject("InlineShapes"); Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList); // zp1mark_pic->querySubObject("Range")->setProperty("Text",zp1); } QAxObject*zp2mark_pic=document->querySubObject("Bookmarks(QVariant)","zp2"); // 选中标签,将字符插入到标签位置 if(!zp2mark_pic->isNull()) { zp2mark_pic->dynamicCall("Select(void)"); QAxObject *range; range = zp2mark_pic->querySubObject("Range"); QVariant tmp = range->asVariant(); QListqList; qList<querySubObject("InlineShapes"); Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList); } QAxObject*wzbh1mark_text=document->querySubObject(QString("Bookmarks(%1)").arg("wzbh1").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!wzbh1mark_text->isNull()) { wzbh1mark_text->dynamicCall("Select(void)"); wzbh1mark_text->querySubObject("Range")->setProperty("Text",wzbh1); } QAxObject*zp3mark_pic=document->querySubObject("Bookmarks(QVariant)","zp3"); // 选中标签,将字符插入到标签位置 if(!zp3mark_pic->isNull()) { zp3mark_pic->dynamicCall("Select(void)"); QAxObject *range; range = zp3mark_pic->querySubObject("Range"); QVariant tmp = range->asVariant(); QListqList; qList<querySubObject("InlineShapes"); Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList); } QAxObject*wzbh2mark_text=document->querySubObject(QString("Bookmarks(%1)").arg("wzbh2").toLocal8Bit().data()); // 选中标签,将字符插入到标签位置 if(!wzbh2mark_text->isNull()) { wzbh2mark_text->dynamicCall("Select(void)"); wzbh2mark_text->querySubObject("Range")->setProperty("Text",wzbh2); } QAxObject*zp4mark_pic=document->querySubObject("Bookmarks(QVariant)","zp4"); // 选中标签,将字符插入到标签位置 if(!zp4mark_pic->isNull()) { zp4mark_pic->dynamicCall("Select(void)"); QAxObject *range; range = zp4mark_pic->querySubObject("Range"); QVariant tmp = range->asVariant(); QListqList; qList<querySubObject("InlineShapes"); Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList); } // 将文件另存为outFileName,关闭工作文档,退出应用程序 document->dynamicCall("SaveAs (const QString&)", outFileName); document->dynamicCall("Close (boolean)", true); //关闭文本窗口 word->dynamicCall("Quit(void)"); //退出word QMessageBox::information(this, tr("消息"),tr("报告生成成功!"),QMessageBox::Ok); // delete bookmark_text; delete document; delete documents; delete word; } void Reporting::on_zp1Button_clicked() { //定义文件对话框类 QFileDialog *fileDialog = new QFileDialog(this); //定义文件对话框标题 fileDialog->setWindowTitle(tr("选择图片")); //设置默认文件路径 fileDialog->setDirectory("."); //设置文件过滤器 fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)")); //设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles fileDialog->setFileMode(QFileDialog::ExistingFiles); //设置视图模式 fileDialog->setViewMode(QFileDialog::Detail); ui->zp1Edit->setText(QString(fileDialog->getOpenFileName())); } void Reporting::on_zp2Button_clicked() { //定义文件对话框类 QFileDialog *fileDialog = new QFileDialog(this); //定义文件对话框标题 fileDialog->setWindowTitle(tr("选择图片")); //设置默认文件路径 fileDialog->setDirectory("."); //设置文件过滤器 fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)")); //设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles fileDialog->setFileMode(QFileDialog::ExistingFiles); //设置视图模式 fileDialog->setViewMode(QFileDialog::Detail); ui->zp2Edit->setText(QString(fileDialog->getOpenFileName())); } void Reporting::on_pushButton_3_clicked() { //定义文件对话框类 QFileDialog *fileDialog = new QFileDialog(this); //定义文件对话框标题 fileDialog->setWindowTitle(tr("选择图片")); //设置默认文件路径 fileDialog->setDirectory("."); //设置文件过滤器 fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)")); //设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles fileDialog->setFileMode(QFileDialog::ExistingFiles); //设置视图模式 fileDialog->setViewMode(QFileDialog::Detail); ui->zp3Edit->setText(QString(fileDialog->getOpenFileName())); } void Reporting::on_zp4Button_clicked() { //定义文件对话框类 QFileDialog *fileDialog = new QFileDialog(this); //定义文件对话框标题 fileDialog->setWindowTitle(tr("选择图片")); //设置默认文件路径 fileDialog->setDirectory("."); //设置文件过滤器 fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)")); //设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles fileDialog->setFileMode(QFileDialog::ExistingFiles); //设置视图模式 fileDialog->setViewMode(QFileDialog::Detail); ui->zp4Edit->setText(QString(fileDialog->getOpenFileName())); } void Reporting::openAction() { //定义文件对话框类 QFileDialog *fileDialog = new QFileDialog(this); //定义文件对话框标题 fileDialog->setWindowTitle(tr("选择文件")); //设置默认文件路径 fileDialog->setDirectory("."); //设置文件过滤器 fileDialog->setNameFilter(tr("dot(*.dot)")); //设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles fileDialog->setFileMode(QFileDialog::ExistingFiles); //设置视图模式 fileDialog->setViewMode(QFileDialog::Detail); templatePath=QString(fileDialog->getOpenFileName()); }