www.pudn.com > testWordAll.rar > testWordAllDlg.cpp
// testWordAllDlg.cpp : implementation file // #include "stdafx.h" #include "testWordAll.h" #include "testWordAllDlg.h" #include "DlgProxy.h" #include "WordDocOperateBasic.h" #include//Com,和word有关 #include "WordDocOperate_Inform.h" #include "Form1.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CTestWordAllDlg dialog IMPLEMENT_DYNAMIC(CTestWordAllDlg, CDialog); CTestWordAllDlg::CTestWordAllDlg(CWnd* pParent /*=NULL*/) : CDialog(CTestWordAllDlg::IDD, pParent) { //{{AFX_DATA_INIT(CTestWordAllDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_pAutoProxy = NULL; } CTestWordAllDlg::~CTestWordAllDlg() { // If there is an automation proxy for this dialog, set // its back pointer to this dialog to NULL, so it knows // the dialog has been deleted. if (m_pAutoProxy != NULL) m_pAutoProxy->m_pDialog = NULL; } void CTestWordAllDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTestWordAllDlg) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CTestWordAllDlg, CDialog) //{{AFX_MSG_MAP(CTestWordAllDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_CLOSE() ON_BN_CLICKED(IDC_BUTTON_STRUCT, OnButtonStruct) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_BN_CLICKED(IDC_BUTTON3, OnButton3) ON_COMMAND(IDR_MENU1, OnMenu1) ON_BN_CLICKED(IDC_BUTTON4, OnButton4) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CTestWordAllDlg message handlers BOOL CTestWordAllDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } void CTestWordAllDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CTestWordAllDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CTestWordAllDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } // Automation servers should not exit when a user closes the UI // if a controller still holds on to one of its objects. These // message handlers make sure that if the proxy is still in use, // then the UI is hidden but the dialog remains around if it // is dismissed. void CTestWordAllDlg::OnClose() { if (CanExit()) CDialog::OnClose(); } void CTestWordAllDlg::OnOK() { BeginWaitCursor(); //下面是定义VARIANT变量; CString strCurPath; CString strDocName; ::GetCurrentDirectory(MAX_PATH,strCurPath.GetBuffer(MAX_PATH)); strCurPath.ReleaseBuffer(); strCurPath.Format("%s",strCurPath); strDocName = strCurPath + "\\wordTable.doc"; //COleVariant vTrue((short)TRUE), vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR); COleVariant varFilePath(strDocName); COleVariant varstrNull(""); COleVariant varZero((short)0); COleVariant varTrue(short(1),VT_BOOL); COleVariant varFalse(short(0),VT_BOOL); COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); _Application m_App;//定义Word提供的应用程序对象; Documents m_Docs;//定义Word提供的文档对象; Selection m_Sel;//定义Word提供的选择对象; m_Docs.ReleaseDispatch(); m_Sel.ReleaseDispatch(); m_App.m_bAutoRelease=true; if(!m_App.CreateDispatch("Word.Application")) { AfxMessageBox("创建Word2003服务失败!"); exit(1); } m_App.SetVisible(TRUE); //显示Word,如果,FALSE,表示隐藏 //m_App.SetVisible(FALSE); //显示Word,如果,FALSE,表示隐藏 m_Docs.AttachDispatch(m_App.GetDocuments());//将Documents类对象m_Docs和Idispatch接口关联起来; CString m_WordVer = "Word2003"; if (m_WordVer == "Word2003"){ //office2000 m_Docs.Open(varFilePath,varFalse,varFalse,varFalse, varstrNull,varstrNull,varFalse,varstrNull, varstrNull,varTrue,varTrue,varTrue); }else{ //office2003 m_Docs.Open( //可看成VB语句set testDoc = Word.documents.Open(…) COleVariant(strDocName,VT_BSTR), varFalse, // Confirm Conversion. varFalse, // ReadOnly. varFalse, // AddToRecentFiles. covOptional, // PasswordDocument. covOptional, // PasswordTemplate. varTrue, // Revert. covOptional, // WritePasswordDocument. covOptional, // WritePasswordTemplate. covOptional, // Format. // Last argument for Word 97 covOptional, // Encoding // New for Word 2000/2002 varTrue, // Visible covOptional, // OpenConflictDocument covOptional, // OpenAndRepair varZero, // DocumentDirection wdDocumentDirection LeftToRight covOptional // NoEncodingDialog ); } //save word file _Document oActiveDoc; oActiveDoc = m_App.GetActiveDocument(); // m_Sel.AttachDispatch(m_App.GetSelection());//将Selection类对象m_Sel和Idispatch接口关联起来; m_Sel.MoveDown(COleVariant((short)4),COleVariant((short)1),COleVariant((short)0)); m_Sel.MoveDown(COleVariant((short)5),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("123456789"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("李明"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("25"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("技术员"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("本科"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("上海市虹口区民主路315号"); m_Sel.MoveDown(COleVariant((short)5),COleVariant((short)1),COleVariant((short)0)); ///////////////////////////////////////////////////////////////////////////////// /////////////插入图片////////////////////////// CString strPicFile = strCurPath + "\\tp1.jpg"; //浮动方式显示图片 //Shapes shapes1 = m_Sel.GetInlineShapes(); //shapes1.AddPicture((LPCTSTR)lpstrPicFile, &vtFalse,&vtTrue, &vtOpn); //嵌入方式显示图片 InlineShapes inlineshapes; LPDISPATCH pInlineShapes = m_Sel.GetInlineShapes(); inlineshapes.AttachDispatch(pInlineShapes); CComVariant vtTrue(true), vtFalse(false), vtZero(0l), vtNone, vtNullString(""); CComVariant vtOpn(DISP_E_PARAMNOTFOUND, VT_ERROR); inlineshapes.AddPicture(strPicFile, &vtFalse, &vtTrue, &vtOpn); inlineshapes.ReleaseDispatch(); /////////////////////////////////////////////// Tables m_tables = oActiveDoc.GetTables(); Table m_table1 = m_tables.Item(2); //第一个表格 Rows rows = m_table1.GetRows(); //第1行 Row row = rows.Item(1); Cells cells = row.GetCells(); Cell cell = cells.Item(2); //第2列 Range r = cell.GetRange(); r.SetText("冬天"); //动态加行 //rows.Add(covOptional); oActiveDoc.PrintPreview(); //预览,前提是m_App.SetVisible(TRUE); return; /////////////////////////////////////// //save doc //word 2000 /* oActiveDoc.SaveAs(COleVariant("c:\\填写后表格.doc"), COleVariant((short)0), vFalse, COleVariant(""), vTrue, COleVariant(""), vFalse, vFalse, vFalse, vFalse, vFalse); */ //save doc //word 2003 /* oActiveDoc.SaveAs(COleVariant("c:\\填写后表格.doc"), COleVariant((short)0), vFalse, COleVariant(""), vTrue, COleVariant(""), vFalse, vFalse, vFalse, vFalse, vFalse, vFalse,vFalse,vFalse,vTrue,vTrue); */ m_Docs.ReleaseDispatch();//断开关联; m_Sel.ReleaseDispatch(); //退出WORD m_App.Quit(covOptional, covOptional, covOptional); m_App.Quit(covOptional, covOptional, covOptional); m_App.ReleaseDispatch(); EndWaitCursor(); MessageBox("word表格填写完毕!","提示",MB_ICONEXCLAMATION); } void CTestWordAllDlg::OnCancel() { if (CanExit()) CDialog::OnCancel(); } BOOL CTestWordAllDlg::CanExit() { // If the proxy object is still around, then the automation // controller is still holding on to this application. Leave // the dialog around, but hide its UI. if (m_pAutoProxy != NULL) { ShowWindow(SW_HIDE); return FALSE; } return TRUE; } //通过结构得到内容 void CTestWordAllDlg::OnButtonStruct() { CWordDocOperateBasic wordOperate; wordOperate.m_wordStruct.WordVer="Word2000"; // CString strWordVer = wordOperate.GetWordVer(); AfxMessageBox(strWordVer); } void CTestWordAllDlg::OnButton1() { BeginWaitCursor(); //下面是定义VARIANT变量; CString strCurPath; CString strDocName; ::GetCurrentDirectory(MAX_PATH,strCurPath.GetBuffer(MAX_PATH)); strCurPath.ReleaseBuffer(); strCurPath.Format("%s",strCurPath); strDocName = strCurPath + "\\wordTable1.doc"; //COleVariant vTrue((short)TRUE), vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR); COleVariant varFilePath(strDocName); COleVariant varstrNull(""); COleVariant varZero((short)0); COleVariant varTrue(short(1),VT_BOOL); COleVariant varFalse(short(0),VT_BOOL); COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); _Application m_App;//定义Word提供的应用程序对象; Documents m_Docs;//定义Word提供的文档对象; Selection m_Sel;//定义Word提供的选择对象; m_Docs.ReleaseDispatch(); m_Sel.ReleaseDispatch(); m_App.m_bAutoRelease=true; if(!m_App.CreateDispatch("Word.Application")) { AfxMessageBox("创建Word2003服务失败!"); exit(1); } m_App.SetVisible(TRUE); //显示Word,如果,FALSE,表示隐藏 //m_App.SetVisible(FALSE); //显示Word,如果,FALSE,表示隐藏 m_Docs.AttachDispatch(m_App.GetDocuments());//将Documents类对象m_Docs和Idispatch接口关联起来; CString m_WordVer = "Word2003"; if (m_WordVer == "Word2003"){ //office2000 m_Docs.Open(varFilePath,varFalse,varFalse,varFalse, varstrNull,varstrNull,varFalse,varstrNull, varstrNull,varTrue,varTrue,varTrue); }else{ //office2003 m_Docs.Open( //可看成VB语句set testDoc = Word.documents.Open(…) COleVariant(strDocName,VT_BSTR), varFalse, // Confirm Conversion. varFalse, // ReadOnly. varFalse, // AddToRecentFiles. covOptional, // PasswordDocument. covOptional, // PasswordTemplate. varTrue, // Revert. covOptional, // WritePasswordDocument. covOptional, // WritePasswordTemplate. covOptional, // Format. // Last argument for Word 97 covOptional, // Encoding // New for Word 2000/2002 varTrue, // Visible covOptional, // OpenConflictDocument covOptional, // OpenAndRepair varZero, // DocumentDirection wdDocumentDirection LeftToRight covOptional // NoEncodingDialog ); } //打开Word文档; m_Sel.AttachDispatch(m_App.GetSelection());//将Selection类对象m_Sel和Idispatch接口关联起来; /* m_Sel.MoveDown(COleVariant((short)4),COleVariant((short)1),COleVariant((short)0)); m_Sel.MoveDown(COleVariant((short)5),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("123456789"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("李明"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("25"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("技术员"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("本科"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("上海市虹口区民主路315号"); m_Sel.MoveDown(COleVariant((short)5),COleVariant((short)1),COleVariant((short)0)); */ //save word file _Document oActiveDoc; oActiveDoc = m_App.GetActiveDocument(); //////////////////////////////////// //word书签使用 CString strBMark = "kdsj"; COleVariant varBMark_kdsj(strBMark); //设置变量 Range rBMark = oActiveDoc.GoTo(varTrue,varZero,varZero,varBMark_kdsj); //Range rBMark;rBMark rBMark.SetText("2006-09-18"); //日期 //表格的正常用法(非标准表格) Tables m_tables = oActiveDoc.GetTables(); Table m_table1 = m_tables.Item(1); //第一个表格 Rows rows = m_table1.GetRows(); //第1行 Row row = rows.Item(1); Cells cells = row.GetCells(); Cell cell = cells.Item(2); //第2列 Range r = cell.GetRange(); r.SetText("冬天"); cell = cells.Item(4); //第4列 r = cell.GetRange(); r.SetText("沈阳市大东区"); //第2行 row = rows.Item(2); cells = row.GetCells(); cell = cells.Item(2); //第2列 r = cell.GetRange(); r.SetText("辽A12345"); cell = cells.Item(4); //第4列 r = cell.GetRange(); r.SetText("大型车"); //第10行第2列,插入图片: row = rows.Item(10); cells = row.GetCells(); cell = cells.Item(2); //第2列 r = cell.GetRange(); /////////////////////////////////// /////////////插入图片////////////////////////// CString strPicFile = strCurPath + "\\tp1.jpg"; //浮动方式显示图片 //Shapes shapes1 = m_Sel.GetInlineShapes(); //shapes1.AddPicture((LPCTSTR)lpstrPicFile, &vtFalse,&vtTrue, &vtOpn); //嵌入方式显示图片 InlineShapes inlineshapes; LPDISPATCH pInlineShapes = r.GetInlineShapes(); inlineshapes.AttachDispatch(pInlineShapes); CComVariant vtTrue(true), vtFalse(false), vtZero(0l), vtNone, vtNullString(""); CComVariant vtOpn(DISP_E_PARAMNOTFOUND, VT_ERROR); inlineshapes.AddPicture(strPicFile, &vtFalse, &vtTrue, &vtOpn); inlineshapes.ReleaseDispatch(); /////////////////////////////////////////////// /* //复制所有内容 m_Sel.WholeStory(); m_Sel.Copy(); m_Sel.PasteAndFormat(0); m_Sel.PasteAndFormat(0); // */ oActiveDoc.PrintPreview(); //预览,前提是m_App.SetVisible(TRUE); return; //save doc //word 2000 /* oActiveDoc.SaveAs(COleVariant("c:\\填写后表格.doc"), COleVariant((short)0), vFalse, COleVariant(""), vTrue, COleVariant(""), vFalse, vFalse, vFalse, vFalse, vFalse); */ //save doc //word 2003 /* oActiveDoc.SaveAs(COleVariant("c:\\填写后表格.doc"), COleVariant((short)0), vFalse, COleVariant(""), vTrue, COleVariant(""), vFalse, vFalse, vFalse, vFalse, vFalse, vFalse,vFalse,vFalse,vTrue,vTrue); */ m_Docs.ReleaseDispatch();//断开关联; m_Sel.ReleaseDispatch(); //退出WORD m_App.Quit(covOptional, covOptional, covOptional); m_App.Quit(covOptional, covOptional, covOptional); m_App.ReleaseDispatch(); EndWaitCursor(); MessageBox("word表格填写完毕!","提示",MB_ICONEXCLAMATION); } void CTestWordAllDlg::OnButton2() { CWordDocOperate_Inform wordInform; wordInform.m_wordStruct.WordVer = "Word2003"; AfxMessageBox(wordInform.m_wordStruct.WordVer); } //测试告知单 void CTestWordAllDlg::OnButton3() { //////// CString strCurPath; CString strDocName; CString strTempName; ::GetCurrentDirectory(MAX_PATH,strCurPath.GetBuffer(MAX_PATH)); strCurPath.ReleaseBuffer(); strCurPath.Format("%s",strCurPath); strDocName = strCurPath + "\\wordModel\\wordInform.doc"; //比如,取当前时间再加名:wordInform20060919090909(用常用函数类) //以后在pprocess里就这么写,以免文件名重复; //如果放到pprocess里,在pprocess的ini里有word临时目录,从该处取目录 strTempName = strCurPath + "\\tempPic\\wordInform20060919090909.doc"; CString strPicName = strCurPath + "\\tp1.JPG"; //Word操作 CWordDocOperate_Inform wordInform; wordInform.m_wordStruct.WordVer = "Word2003"; //预览0或打印1 wordInform.m_wordStruct.PreviewOrPrint = 0; wordInform.m_wordStruct.PrintNum = 1; wordInform.m_wordStruct.PrintPageSize = "A4"; wordInform.m_wordStruct.m_WordModelName = strDocName; //模版 wordInform.m_wordStruct.m_tempWordDoc = strTempName; //临时:今后放到pprocess程序配置文件里指定的目录 wordInform.SetPictureName(strPicName); //设置图片 // BOOL res = FALSE; BeginWaitCursor(); res = wordInform.WordDocOperate(); EndWaitCursor(); if(wordInform.m_wordStruct.PreviewOrPrint == 1){ if(res == FALSE){ MessageBox("警告:违法告知单打印出现故障!"); }else{ MessageBox("word违法告知单打印完毕!"); } } } void CTestWordAllDlg::OnMenu1() { CForm1 dlg; dlg.DoModal(); } void CTestWordAllDlg::OnButton4() { BeginWaitCursor(); //下面是定义VARIANT变量; CString strCurPath; CString strDocName; ::GetCurrentDirectory(MAX_PATH,strCurPath.GetBuffer(MAX_PATH)); strCurPath.ReleaseBuffer(); strCurPath.Format("%s",strCurPath); strDocName = strCurPath + "\\wordTable.doc"; //COleVariant vTrue((short)TRUE), vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR); COleVariant varFilePath(strDocName); COleVariant varstrNull(""); COleVariant varZero((short)0); COleVariant varTrue(short(1),VT_BOOL); COleVariant varFalse(short(0),VT_BOOL); COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); _Application m_App;//定义Word提供的应用程序对象; Documents m_Docs;//定义Word提供的文档对象; Selection m_Sel;//定义Word提供的选择对象; m_Docs.ReleaseDispatch(); m_Sel.ReleaseDispatch(); m_App.m_bAutoRelease=true; if(!m_App.CreateDispatch("Word.Application")) { AfxMessageBox("创建Word2003服务失败!"); exit(1); } m_App.SetVisible(TRUE); //显示Word,如果,FALSE,表示隐藏 //m_App.SetVisible(FALSE); //显示Word,如果,FALSE,表示隐藏 m_Docs.AttachDispatch(m_App.GetDocuments());//将Documents类对象m_Docs和Idispatch接口关联起来; CString m_WordVer = "Word2003"; if (m_WordVer == "Word2003"){ //office2000 m_Docs.Open(varFilePath,varFalse,varFalse,varFalse, varstrNull,varstrNull,varFalse,varstrNull, varstrNull,varTrue,varTrue,varTrue); }else{ //office2003 m_Docs.Open( //可看成VB语句set testDoc = Word.documents.Open(…) COleVariant(strDocName,VT_BSTR), varFalse, // Confirm Conversion. varFalse, // ReadOnly. varFalse, // AddToRecentFiles. covOptional, // PasswordDocument. covOptional, // PasswordTemplate. varTrue, // Revert. covOptional, // WritePasswordDocument. covOptional, // WritePasswordTemplate. covOptional, // Format. // Last argument for Word 97 covOptional, // Encoding // New for Word 2000/2002 varTrue, // Visible covOptional, // OpenConflictDocument covOptional, // OpenAndRepair varZero, // DocumentDirection wdDocumentDirection LeftToRight covOptional // NoEncodingDialog ); } //save word file _Document oActiveDoc; oActiveDoc = m_App.GetActiveDocument(); // m_Sel.AttachDispatch(m_App.GetSelection());//将Selection类对象m_Sel和Idispatch接口关联起来; /* m_Sel.MoveDown(COleVariant((short)4),COleVariant((short)1),COleVariant((short)0)); m_Sel.MoveDown(COleVariant((short)5),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("123456789"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("李明"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("25"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("技术员"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("本科"); m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0)); m_Sel.TypeText("上海市虹口区民主路315号"); m_Sel.MoveDown(COleVariant((short)5),COleVariant((short)1),COleVariant((short)0)); ///////////////////////////////////////////////////////////////////////////////// /////////////插入图片////////////////////////// CString strPicFile = strCurPath + "\\tp1.jpg"; //浮动方式显示图片 //Shapes shapes1 = m_Sel.GetInlineShapes(); //shapes1.AddPicture((LPCTSTR)lpstrPicFile, &vtFalse,&vtTrue, &vtOpn); //嵌入方式显示图片 InlineShapes inlineshapes; LPDISPATCH pInlineShapes = m_Sel.GetInlineShapes(); inlineshapes.AttachDispatch(pInlineShapes); CComVariant vtTrue(true), vtFalse(false), vtZero(0l), vtNone, vtNullString(""); CComVariant vtOpn(DISP_E_PARAMNOTFOUND, VT_ERROR); inlineshapes.AddPicture(strPicFile, &vtFalse, &vtTrue, &vtOpn); inlineshapes.ReleaseDispatch(); /////////////////////////////////////////////// Tables m_tables = oActiveDoc.GetTables(); Table m_table1 = m_tables.Item(2); //第一个表格 Rows rows = m_table1.GetRows(); //第1行 Row row = rows.Item(1); Cells cells = row.GetCells(); Cell cell = cells.Item(2); //第2列 Range r = cell.GetRange(); r.SetText("冬天"); //动态加行 //rows.Add(covOptional); */ /////复制表格////////////// //MoveDown函数的第1参数:4 表示 按列跳,5 表示按行跳 //参数2: 1表示移动1行,3 表示表格下移3行 //参数3: 0 表示按列移动,1表示按行移动 //跳过第一行标题 m_Sel.MoveDown(COleVariant((short)4),COleVariant((short)1),COleVariant((short)0)); //选择表格 m_Sel.MoveDown(COleVariant((short)5),COleVariant((short)3),COleVariant((short)1)); //复制被选择的表格及表格上的一行 m_Sel.Copy(); //向下再移动一行,以便复制新的表 m_Sel.MoveDown(COleVariant((short)4),COleVariant((short)1),COleVariant((short)0)); //复制出新的表格 m_Sel.PasteAndFormat(0); /////////////////// /////////////////////////////////////////////// Tables m_tables = oActiveDoc.GetTables(); int nTableCount = m_tables.GetCount(); //得到表格总数 Table m_table1 = m_tables.Item(2); //第2个表格 Rows rows = m_table1.GetRows(); //第1行 Row row = rows.Item(1); Cells cells = row.GetCells(); Cell cell = cells.Item(2); //第2列 Range r = cell.GetRange(); r.SetText("冬天"); oActiveDoc.PrintPreview(); //预览,前提是m_App.SetVisible(TRUE); }