#ifndef QWORD_H #define QWORD_H #define _WIN32_DCOM #include #include #include #include #include #include #include //#include "GlobalAppData.h" //http://www.cxyzjd.com/article/chyuanrufeng/98778379 class QWord : public QObject { Q_OBJECT public: QWord(QObject *parent = 0); ~QWord(); public: #define ALIGNMENT_MIDDLE 0 #define ALIGNMENT_LEFT 1 #define ALIGNMENT_RIGHT 2 #define wdAutoFitFixed 0 #define wdAutoFitContent 1 #define wdAutoFitWindow 2 #define TABLE_BG_COLOR 0xffffffcc //ABGR enum TITLE_NUMBER { TITLE_ONE = 0, TITLE_TWO, TITLE_THREE, NORMAL }; //MOVEEND_INDEX来自于https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.office.interop.word.wdunits?view=word-pia enum MOVEEND_INDEX { wdParagraph = 4, //段落。 wdStory = 6 , //部分。 wdRow = 10, //行 wdParagraphFormatting = 14, //段落格式。 wdTable = 15 //表格 }; //文本对齐方式 enum WdParagraphAlignment { AlignParLeft = 0, //左对齐 AlignParCenter = 1, //居中对齐。 AlignParRight = 2, //右对齐。 AlignParJustify = 3, //完全两端对齐。 }; QAxObject* getDocuments(){return m_documents;} QAxObject* getDocument(){return m_document;} QAxObject* getWordApp(){return m_word;} public: /**************************************************************************/ /* 文件 操作 */ /**************************************************************************/ void save(); //保存操作内容 void close(); //关闭 退出 析构时候也会自动调用一次 void saveAs(); //新建word另存为 bool createWord(QString reportname ); //创建一个新的word文档 void openWord(); //打开一个现有的word文档 bool createNewWord(const QString& filePath ); //创建一个新的word文档 void setTableAutoFitBehavior(int flag);//表格自动拉伸列: 0 固定 1根据内容调整 2 根据窗口调整 void setPageOrientation(int flag); //设置页面0为纵向wdOrientPortrait 1为横向wdOrientLandscape void setWordPageView(int flag); //设置页面视图,是web视图wdWebView 6还是页面视图wdPrintView 3 或者阅读视图wdReadingView 7 void setFontSize(int fontsize); //设置字体大小 void setFontName(QString& fontName); //设置字体 比如 “宋体” void setFontBold(bool flag); //字体加粗 void setParagraphAlignment(int flag); //设置选中位置文字居左 0 ,居中 1 ,居右 2 void setRowAlignment(int tableIndex,int row,int flag); void setRowAlignment(int row,int flag); //同时设置列宽和列高可以固定图片的大小 void setColumnWidth(int column, int width); //设置列宽 void setColumnHeight(int column, int height); //设置列高 void setRowHeight(int nTable,int Row, int height); void setCellString(int row, int column, const QString& text); void setCellFontBold(int row, int column, bool isBold); //设置内容粗体 isBold控制是否粗体 void setCellFontSize(int row, int column, int size); //设置文字大小 void setOptionCheckSpell(bool flags); //设置审阅的拼写检查 true开启检查 false 取消检查 QString GetText(); //获取内容 void getUsedRange(int *topLeftRow, int *topLeftColumn, int *bottomRightRow, int *bottomRightColumn); void setSelectionRange(int start,int end); //"SetRange(1, 9)"第1个字符后开始,到第9个字符结束范围 QVariant getCellValue(int row, int column); //获取单元格内容 int getTableCount(); //获取word中表格总数 QString getStrErrorInfo(){return m_strError;} //获取代码中出现的错误信息可以用QMessageBox::information打印 在cpp不用QMessageBox 是怕你们在线程中调导出报表 void deleteSelectColumn(int column); //删除指定的列 void moveForEnd(); //移动选定对象到文档末尾 void insertCellPic(int row,int column,const QString& picPath); //单元格插入图片 void intsertTable(int row,int column); //插入一个几行几列表格 void insertMoveDown(); //插入回车 void insertText(const QString& text); //插入文字 void insertTable(int tableIndex,int row,int column); //插入巡检单位 巡检计划 巡检时间 巡 检 人 顺序传参 //void insertTitle(const QString& str1,const QString& str2,const QString& str3,const QString& str4); void MergeCells(int tableIndex, int nStartRow,int nStartCol,int nEndRow,int nEndCol);//合并单元格 bool open(const QString& strFilePath,bool bVisable); bool openword(bool bVisable); bool isOpen(); void setColumnWidth(int nTable,int column,int width); void setCellString(int nTable,int row,int column,const QString& text); void insertCellPic(int nTable,int row,int column,const QString& picPath); void setCellFontBold(int nTable,int row,int column,bool isBold); void setCellFontSize(int nTable,int row,int column,int size); //void addTableRow(int nTable ,int nRow,int rowCount); void addTableRow(int tableIndex ,int nRow,int rowCount); void setColumnHeight(int nTable,int column, int height); void intsertTable(int tableIndex, int row,int column); void AddPicture(QString file); void insertEnter(void); QAxObject* createTable(int row, int column); QAxObject* createTableWithColor(int row, int column); void setCellText(QAxObject *table, int row, int column, QString text,bool bold); void autoFitBehavior(QAxObject *table, int flag); void insertNewPage(void); void setColor( QAxObject *obj,QColor color ); void setBgColor( QAxObject *obj,QColor color ); int colorToInt( QColor color ); void addTableRow(QAxObject *table, int nRow, int rowCount); void appendTableRow( QAxObject *table,int rowCount ); void setColumnWidth(QAxObject *table, int column, int width); void MergeCells(QAxObject *table, int nStartRow,int nStartCol,int nEndRow,int nEndCol); QString getTitleStr( TITLE_NUMBER number ); bool addText1( QString titlestr,TITLE_NUMBER number /*= NORMAL*/,WdParagraphAlignment alignment /*= AlignParLeft*/ ); bool addText( QString titlestr,QFont font,QColor fontcolor ); QAxObject* addText2( QString titlestr ); void setTableBgColor( QAxObject *table,uint32_t color ); void setParagraphFormatOutlineLevel(QString level); public: void setVisible(bool isVisible); private: QAxObject* m_word; QAxObject* m_documents; QAxObject* m_document; QString m_fileName; QString m_saveName; QString m_strError; QString m_strFilePath; bool m_bOpened; }; #endif // QWORD_H