找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 29|回复: 0

c++ 读写Word

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-9-26 10:26:17 | 显示全部楼层 |阅读模式
  1. #pragma once
  2. #include "msword/CApplication.h" //word程序对象   
  3. #include "msword/CDocuments0.h" //文档集对象   
  4. #include "msword/CDocument1.h" //docx对象   
  5. #include "msword/CSelection0.h" //所选内容   
  6. #include "msword/CCell0.h" //单个单元格   
  7. #include "msword/CCells0.h" //单元格集合   
  8. #include "msword/CRange0.h" //文档中的一个连续范围   
  9. #include "msword/CTable1.h" //单个表格   
  10. #include "msword/CTables1.h" //表格集合   
  11. #include "msword/CRow0.h" //单个行   
  12. #include "msword/CRows0.h" //行集合   
  13. #include "msword/CBookmark0.h" //   
  14. #include "msword/CBookmarks0.h" //
  15. #include "msword/CFont0.h"
  16. #include "msword/CnlineShape.h"
  17. #include "msword/CnlineShapes.h"
  18. const  auto wdMove = 0;
  19. const  auto wdExtend = 1;
  20. const  auto wdCharacter = 1;
  21. const  auto wdLine = 5;
  22. const  auto wdCell = 12;
  23. const  auto wdDeleteCellsEntireRow = 2;
  24. class WordOperate
  25. {
  26. public:
  27.         WordOperate(void);
  28.         ~WordOperate(void);
  29.         //创建一个新的WORD应用程序
  30.         BOOL CreateApp();
  31.         //创建一个新的Word文档集合
  32.         BOOL CreateDocuments();
  33.         //创建一个新的Word文档
  34.         BOOL CreateDocument();
  35.         //创建新的WORD应用程序并创建一个新的文档
  36.         BOOL Create();
  37.         //显示WORD文档
  38.         void ShowApp();
  39.         //隐藏word文档
  40.         void HideApp();
  41.         //打开已经存在的文档。
  42.         BOOL OpenDocument(const CString& fileName);
  43.         //创建新的WORD应用程序并打开一个已经存在的文档。
  44.         BOOL Open(CString fileName);
  45.         //设置当前激活的文档。
  46.         BOOL SetActiveDocument(short i);
  47.         //文档是以打开形式,保存。
  48.         BOOL SaveDocument();
  49.         //文档以创建形式,保存。
  50.         BOOL SaveDocumentAs(const CString& fileName);
  51.         BOOL CloseDocument();
  52.         void CloseApp();
  53.         void WriteText(CString szText);        //当前光标处写文本  
  54.         void WriteNewLineText(CString szText, int nLineCount = 1); //换N行写字  
  55.         void WriteEndLine(CString szText);    //文档结尾处写文本  
  56.         void WholeStory();                    //全选文档内容  
  57.         void Copy();                        //复制文本内容到剪贴板  
  58.         void InsertFile(CString fileName);    //将本地的文件全部内容写入到当前文档的光标处。
  59.         void SelectMoveDown(short lineCount, short unit);//有选择操作的移动  
  60.         void NoneSelectMoveDown(short lineCount, short unit);//仅仅移动光标,不选中  
  61.         void SelectMoveUp(short lineCount, short unit);//有选择操作的移动  
  62.         void NoneSelectMoveUp(short lineCount, short unit);//仅仅移动光标,不选中  
  63.         void SelectMoveLeft(short charCount, short unit);//有选择操作的移动  
  64.         void NoneSelectMoveLeft(short charCount, short unit);//  
  65.         void SelectMoveRight(short charCount, short unit);//有选择操作的移动  
  66.         void NoneSelectMoveRight(short charCount, short unit);//  
  67.         void MoveToFirst();
  68.         void MoveToNextPage();
  69.         void TypeParagraph();
  70.         void PasteAndFormat();
  71.         void Paste();
  72.         void TypeBackspace(int count);
  73.         //填写书签
  74.         void SetCBookmark(const CString& bookmarkname, const CString& value, const CString& fontname = "");
  75.         //设置单元格内容
  76.         void SetWordCellValue(int row, int column, int tableIndex, const CString& value, float size, const CString& fontname = "");
  77.         //合并单元格
  78.         BOOL MergeCell(int  cell1row, int cell1col, int cell2row, int cell2col, int tableIndex);
  79.         //查找字符串 然后全部替换
  80.         void FindWord(CString FindW, CString RelWord);
  81.         //表格插入行
  82.         void TableInsertRows(int row, int column, int tableIndex);
  83.         //表格删除行
  84.         void TableRemoveRows(int row, int column, int tableIndex);
  85.         //插入照片
  86.         void InsertJpg(CString strPicture);
  87. private:
  88.         CApplication m_wdApp;
  89.         CDocuments0 m_wdDocs;
  90.         CDocument1 m_wdDoc;
  91.         CSelection0 m_wdSel;
  92.         CRange0     m_wdRange;
  93.         CBookmarks0 bookmarks;
  94.         CTables1 tables;
  95. };
复制代码
  1. #include "stdafx.h"
  2. #include "WordOperate.h"
  3. WordOperate::WordOperate(void)
  4. {
  5. }
  6. WordOperate::~WordOperate(void)
  7. {
  8.         COleVariant vTrue((short)TRUE),
  9.                 vFalse((short)FALSE),
  10.                 vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
  11.         //m_wdDoc.Save();
  12.         m_wdApp.Quit(vFalse,    // SaveChanges.
  13.                 vTrue,            // OriginalFormat.
  14.                 vFalse            // RouteDocument.
  15.         );
  16.         m_wdRange.ReleaseDispatch();
  17.         m_wdSel.ReleaseDispatch();
  18.         //m_wdFt.ReleaseDispatch();
  19.         m_wdDoc.ReleaseDispatch();
  20.         m_wdDocs.ReleaseDispatch();
  21.         m_wdApp.ReleaseDispatch();
  22. }
  23. BOOL WordOperate::CreateApp()
  24. {
  25.         COleException pe;
  26.         if (!m_wdApp.CreateDispatch(_T("Word.Application"), &pe))
  27.         {
  28.                 AfxMessageBox(_T("Application创建失败,请确保安装了word 2000或以上版本!"), MB_OK | MB_ICONWARNING);
  29.                 pe.ReportError();
  30.                 throw& pe;
  31.                 return FALSE;
  32.         }
  33.         m_wdApp.put_DisplayAlerts(FALSE);//屏蔽警告
  34.         return TRUE;
  35. }
  36. BOOL WordOperate::CreateDocuments()
  37. {
  38.         if (FALSE == CreateApp())
  39.         {
  40.                 return FALSE;
  41.         }
  42.         m_wdDocs.AttachDispatch(m_wdApp.get_Documents());
  43.         //m_wdDocs=m_wdApp.get_Documents();
  44.         if (!m_wdDocs.m_lpDispatch)
  45.         {
  46.                 AfxMessageBox(_T("Documents创建失败!"), MB_OK | MB_ICONWARNING);
  47.                 return FALSE;
  48.         }       
  49.         return TRUE;
  50. }
  51. BOOL WordOperate::CreateDocument()
  52. {
  53.         if (!m_wdDocs.m_lpDispatch)
  54.         {
  55.                 AfxMessageBox(_T("Documents为空!"), MB_OK | MB_ICONWARNING);
  56.                 return FALSE;
  57.         }
  58.         COleVariant varTrue(short(1), VT_BOOL), vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
  59.         CComVariant Template(_T(""));    //没有使用WORD的文档模板  
  60.         CComVariant NewTemplate(false), DocumentType(0), Visible;
  61.         m_wdDocs.Add(&Template, &NewTemplate, &DocumentType, &Visible);
  62.         //得到document变量  
  63.         m_wdDoc = m_wdApp.get_ActiveDocument();
  64.         if (!m_wdDoc.m_lpDispatch)
  65.         {
  66.                 AfxMessageBox(_T("Document获取失败!"), MB_OK | MB_ICONWARNING);
  67.                 return FALSE;
  68.         }
  69.         //得到selection变量  
  70.         m_wdSel = m_wdApp.get_Selection();
  71.         if (!m_wdSel.m_lpDispatch)
  72.         {
  73.                 AfxMessageBox(_T("Select获取失败!"), MB_OK | MB_ICONWARNING);
  74.                 return FALSE;
  75.         }
  76.         //得到Range变量  
  77.         m_wdRange = m_wdDoc.Range(vOptional, vOptional);
  78.         if (!m_wdRange.m_lpDispatch)
  79.         {
  80.                 AfxMessageBox(_T("Range获取失败!"), MB_OK | MB_ICONWARNING);
  81.                 return FALSE;
  82.         }
  83.         return TRUE;
  84. }
  85. BOOL WordOperate::Create()
  86. {
  87.         /*if (FALSE == CreateDocuments())
  88.         {
  89.                 return FALSE;
  90.         }*/
  91.         return CreateDocument();
  92. }
  93. void WordOperate::ShowApp()
  94. {
  95.         m_wdApp.put_Visible(TRUE);
  96. }
  97. void WordOperate::HideApp()
  98. {
  99.         m_wdApp.put_Visible(FALSE);
  100. }
  101. BOOL WordOperate::OpenDocument(const CString& fileName)
  102. {
  103.         if (!m_wdDocs.m_lpDispatch)
  104.         {
  105.                 AfxMessageBox(_T("Documents为空!"), MB_OK | MB_ICONWARNING);
  106.                 return FALSE;
  107.         }
  108.         COleVariant vTrue((short)TRUE),
  109.                 vFalse((short)FALSE),
  110.                 vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR),
  111.                 vZ((short)0);
  112.         COleVariant vFileName(fileName);
  113.         //得到document变量  
  114.         try
  115.         {
  116.                 //m_wdDoc = m_wdDocs.Add(vFileName, vOptional, vOptional, vOptional);               
  117.                 m_wdDoc.AttachDispatch(m_wdDocs.Open(
  118.                 vFileName,        // FileName  
  119.                 vTrue,            // Confirm Conversion.  
  120.                 vFalse,            // ReadOnly.  
  121.                 vFalse,            // AddToRecentFiles.  
  122.                 vOptional,        // PasswordDocument.  
  123.                 vOptional,        // PasswordTemplate.  
  124.                 vOptional,        // Revert.  
  125.                 vOptional,        // WritePasswordDocument.  
  126.                 vOptional,        // WritePasswordTemplate.  
  127.                 vOptional,        // Format. // Last argument for Word 97  
  128.                 vOptional,        // Encoding // New for Word 2000/2002  
  129.                 vOptional,        // Visible  
  130.                 //如下4个是word2003需要的参数。本版本是word2000。  
  131.                 vOptional,    // OpenAndRepair  
  132.                 vZ,            // DocumentDirection wdDocumentDirection LeftToRight  
  133.                 vOptional,    // NoEncodingDialog  
  134.                 vOptional
  135.         )                // Close Open parameters  
  136.         );                    // Close AttachDispatch
  137.         }
  138.         catch (const std::exception&p)
  139.         {
  140.                 CString str= p.what();
  141.                 AfxMessageBox(str, MB_OK | MB_ICONWARNING);
  142.                 return FALSE;
  143.         }
  144.        
  145.         if (!m_wdDoc.m_lpDispatch)
  146.         {
  147.                 AfxMessageBox(_T("Document获取失败!"), MB_OK | MB_ICONWARNING);
  148.                 return FALSE;
  149.         }
  150.         //得到selection变量  
  151.         m_wdSel = m_wdApp.get_Selection();
  152.         if (!m_wdSel.m_lpDispatch)
  153.         {
  154.                 AfxMessageBox(_T("Select获取失败!"), MB_OK | MB_ICONWARNING);
  155.                 return FALSE;
  156.         }
  157.         //得到全部DOC的Range变量  
  158.         m_wdRange = m_wdDoc.Range(vOptional, vOptional);
  159.         if (!m_wdRange.m_lpDispatch)
  160.         {
  161.                 AfxMessageBox(_T("Range获取失败!"), MB_OK | MB_ICONWARNING);
  162.                 return FALSE;
  163.         }
  164.         //得到全部书签
  165.         bookmarks = m_wdDoc.get_Bookmarks();
  166.         if (!bookmarks.m_lpDispatch)
  167.         {
  168.                 AfxMessageBox(_T("bookmarks获取失败!"), MB_OK | MB_ICONWARNING);
  169.                 return FALSE;
  170.         }
  171.         //得到全部表格
  172.         tables = m_wdDoc.get_Tables();
  173.         if (!tables.m_lpDispatch)
  174.         {
  175.                 AfxMessageBox(_T("tables获取失败!"), MB_OK | MB_ICONWARNING);
  176.                 return FALSE;
  177.         }
  178.         return TRUE;
  179. }
  180. BOOL WordOperate::Open(CString fileName)
  181. {
  182.         if (FALSE == CreateDocuments())
  183.         {
  184.                 return FALSE;
  185.         }
  186.         //HideApp();  
  187.         return OpenDocument(fileName);
  188. }
  189. BOOL WordOperate::SetActiveDocument(short i)
  190. {
  191.         COleVariant     vIndex(i), vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
  192.         m_wdDoc.AttachDispatch(m_wdDocs.Item(vIndex));
  193.         m_wdDoc.Activate();
  194.         if (!m_wdDoc.m_lpDispatch)
  195.         {
  196.                 AfxMessageBox(_T("Document获取失败!"), MB_OK | MB_ICONWARNING);
  197.                 return FALSE;
  198.         }
  199.         //得到selection变量  
  200.         m_wdSel = m_wdApp.get_Selection();
  201.         if (!m_wdSel.m_lpDispatch)
  202.         {
  203.                 AfxMessageBox(_T("Select获取失败!"), MB_OK | MB_ICONWARNING);
  204.                 return FALSE;
  205.         }
  206.         //得到全部DOC的Range变量  
  207.         m_wdRange = m_wdDoc.Range(vOptional, vOptional);
  208.         if (!m_wdRange.m_lpDispatch)
  209.         {
  210.                 AfxMessageBox(_T("Range获取失败!"), MB_OK | MB_ICONWARNING);
  211.                 return FALSE;
  212.         }
  213.         //得到全部书签
  214.         bookmarks = m_wdDoc.get_Bookmarks();
  215.         if (!bookmarks.m_lpDispatch)
  216.         {
  217.                 AfxMessageBox(_T("bookmarks获取失败!"), MB_OK | MB_ICONWARNING);
  218.                 return FALSE;
  219.         }
  220.         HideApp();
  221.         return TRUE;
  222. }
  223. BOOL WordOperate::SaveDocument()
  224. {
  225.         if (!m_wdDoc.m_lpDispatch)
  226.         {
  227.                 AfxMessageBox(_T("Document获取失败!"), MB_OK | MB_ICONWARNING);
  228.                 return FALSE;
  229.         }
  230.         m_wdDoc.Save();
  231.         return TRUE;
  232. }
  233. BOOL WordOperate::SaveDocumentAs(const CString& fileName)
  234. {
  235.         if (!m_wdDoc.m_lpDispatch)
  236.         {
  237.                 AfxMessageBox(_T("Document获取失败!"), MB_OK | MB_ICONWARNING);
  238.                 return FALSE;
  239.         }
  240.         COleVariant vTrue((short)TRUE),
  241.                 vFalse((short)FALSE),
  242.                 vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
  243.         COleVariant vFileName(fileName);
  244.         m_wdDoc.SaveAs(
  245.                 vFileName,    //VARIANT* FileName  
  246.                 vOptional,    //VARIANT* FileFormat  
  247.                 vOptional,    //VARIANT* LockComments  
  248.                 vOptional,    //VARIANT* Password  
  249.                 vOptional,    //VARIANT* AddToRecentFiles  
  250.                 vOptional,    //VARIANT* WritePassword  
  251.                 vOptional,    //VARIANT* ReadOnlyRecommended  
  252.                 vOptional,    //VARIANT* EmbedTrueTypeFonts  
  253.                 vOptional,    //VARIANT* SaveNativePictureFormat  
  254.                 vOptional,    //VARIANT* SaveFormsData  
  255.                 vOptional,    //VARIANT* SaveAsAOCELetter  
  256.                 vOptional,    //VARIANT* ReadOnlyRecommended  
  257.                 vOptional,    //VARIANT* EmbedTrueTypeFonts  
  258.                 vOptional,    //VARIANT* SaveNativePictureFormat  
  259.                 vOptional,    //VARIANT* SaveFormsData  
  260.                 vOptional    //VARIANT* SaveAsAOCELetter  
  261.         );
  262.         return    TRUE;
  263. }
  264. BOOL WordOperate::CloseDocument()
  265. {
  266.         COleVariant vTrue((short)TRUE),
  267.                 vFalse((short)FALSE),
  268.                 vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
  269.         m_wdDoc.Close(vFalse,    // SaveChanges.  
  270.                 vTrue,            // OriginalFormat.  
  271.                 vFalse            // RouteDocument.  
  272.         );
  273.         /*
  274.         //AfxMessageBox("c1");
  275.         m_wdDoc.AttachDispatch(m_wdApp.get_ActiveDocument());
  276.         if (!m_wdDoc.m_lpDispatch)
  277.         {
  278.                 AfxMessageBox(_T("Document获取失败!"), MB_OK | MB_ICONWARNING);
  279.                 return FALSE;
  280.         }
  281.         //  AfxMessageBox("c2");
  282.                 //得到selection变量
  283.         m_wdSel = m_wdApp.get_Selection();
  284.         if (!m_wdSel.m_lpDispatch)
  285.         {
  286.                 AfxMessageBox(_T("Select获取失败!"), MB_OK | MB_ICONWARNING);
  287.                 return FALSE;
  288.         }
  289.         //  AfxMessageBox("c3");
  290.                 //得到全部DOC的Range变量
  291.         m_wdRange = m_wdDoc.Range(vOptional, vOptional);
  292.         if (!m_wdRange.m_lpDispatch)
  293.         {
  294.                 AfxMessageBox(_T("Range获取失败!"), MB_OK | MB_ICONWARNING);
  295.                 return FALSE;
  296.         }
  297.         //  AfxMessageBox("c4");
  298.         */
  299.         m_wdRange.ReleaseDispatch();
  300.         m_wdRange = nullptr;
  301.         m_wdSel.ReleaseDispatch();
  302.         m_wdSel = nullptr;
  303.         bookmarks.ReleaseDispatch();
  304.         bookmarks = nullptr;
  305.         tables.ReleaseDispatch();
  306.         tables = nullptr;
  307.         m_wdDoc.ReleaseDispatch();
  308.         m_wdDoc = nullptr;
  309.         return TRUE;
  310. }
  311. void WordOperate::CloseApp()
  312. {
  313.         COleVariant vTrue((short)TRUE),
  314.                 vFalse((short)FALSE),
  315.                 vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
  316.         //m_wdDoc.Save();
  317.         m_wdApp.Quit(vFalse,    // SaveChanges.  
  318.                 vTrue,            // OriginalFormat.  
  319.                 vFalse            // RouteDocument.  
  320.         );
  321.         //释放内存申请资源  
  322.         bookmarks.ReleaseDispatch();
  323.         m_wdRange.ReleaseDispatch();
  324.         m_wdSel.ReleaseDispatch();
  325.         tables.ReleaseDispatch();
  326.         m_wdDoc.ReleaseDispatch();
  327.         m_wdDocs.ReleaseDispatch();
  328.         m_wdApp.ReleaseDispatch();
  329. }
  330. void WordOperate::WriteText(CString szText)
  331. {
  332.         m_wdSel.TypeText(szText);
  333. }
  334. void WordOperate::WriteNewLineText(CString szText, int nLineCount /**//* = 1 */)
  335. {
  336.         int i;
  337.         if (nLineCount <= 0)
  338.         {
  339.                 nLineCount = 0;
  340.         }
  341.         for (i = 0; i < nLineCount; i++)
  342.         {
  343.                 m_wdSel.TypeParagraph();
  344.         }
  345.         WriteText(szText);
  346. }
  347. void WordOperate::WriteEndLine(CString szText)
  348. {
  349.         m_wdRange.InsertAfter(szText);
  350. }
  351. void WordOperate::WholeStory()
  352. {
  353.         m_wdRange.WholeStory();
  354. }
  355. void WordOperate::Copy()
  356. {
  357.         m_wdSel.Copy();
  358.         //m_wdSel.CopyFormat();  
  359. }
  360. void WordOperate::TypeParagraph()
  361. {
  362.         m_wdSel.TypeParagraph();
  363. }
  364. void WordOperate::PasteAndFormat()
  365. {
  366.         m_wdSel.PasteAndFormat(0);
  367. }
  368. void WordOperate::Paste()
  369. {
  370.         m_wdSel.Paste();
  371.         //m_wdSel.PasteFormat();  
  372. }
  373. void WordOperate::TypeBackspace(int count)
  374. {
  375.         for (int i = 0; i < count; i++)
  376.                 m_wdSel.TypeBackspace();
  377. }
  378. void WordOperate::SetCBookmark(const CString& bookmarkname, const CString& value, const CString& fontname)
  379. {
  380.         if (bookmarks.Exists(bookmarkname))
  381.         {
  382.                 CBookmark0 bookmark = bookmarks.Item(&_variant_t(bookmarkname));
  383.                 if (bookmark != nullptr)
  384.                 {
  385.                         CRange0 range = bookmark.get_Range();
  386.                         range.put_Text(value);
  387.                         if (fontname != "")
  388.                         {
  389.                                 CFont0 font = range.get_Font();
  390.                                 font.put_Name(fontname);//设置字体
  391.                                 font.ReleaseDispatch();
  392.                         }
  393.                         range.ReleaseDispatch();
  394.                         range = nullptr;
  395.                         bookmark.ReleaseDispatch();
  396.                         bookmark = nullptr;
  397.                 }
  398.         }
  399. }
  400. void WordOperate::SetWordCellValue(int row, int column, int tableIndex, const CString& value, float size, const CString& fontname)
  401. {
  402.         CTable1 table = tables.Item(tableIndex);
  403.         CCell0 c1 = table.Cell(row, column);
  404.         c1.Select();
  405.         //m_wdSel = m_wdApp.get_Selection();//Selection表示输入点,即光标闪烁的那个地方
  406.         m_wdSel.TypeText(value);
  407.         CFont0 font = m_wdSel.get_Font();
  408.         if (fontname != "")
  409.         {
  410.                 font.put_Name(fontname);//设置字体
  411.         }
  412.         font.put_Size(size);
  413.         //aa.Add(covOptional);
  414.         //COleVariant vNull(_T(""));
  415.         //aa.Add(vNull);
  416.         //CRow0 row0= c1.get_Row();       
  417.         //CRange0 range=c1.get_Range();       
  418.         //range.put_Text(value);
  419.         //CFont0  font = range.get_Font();
  420.         //font.put_Name(_T("宋体"));//设置字体
  421.         //font.put_Size(14);
  422.         //range.ReleaseDispatch();
  423.         font.ReleaseDispatch();
  424.         c1.ReleaseDispatch();
  425.         table.ReleaseDispatch();
  426. }
  427. BOOL WordOperate::MergeCell(int cell1row, int cell1col, int cell2row, int cell2col, int tableIndex)
  428. {
  429.         CTable1 table = tables.Item(tableIndex);
  430.         CCell0 cell1 = table.Cell(cell1row, cell1col);
  431.         CCell0 cell2 = table.Cell(cell2row, cell2col);
  432.         cell1.Merge(cell2);
  433.         cell1.ReleaseDispatch();
  434.         cell2.ReleaseDispatch();
  435.         table.ReleaseDispatch();
  436.         return TRUE;
  437. }
  438. void WordOperate::FindWord(CString FindW, CString RelWord)
  439. {
  440. }
  441. void WordOperate::TableInsertRows(int row, int column, int tableIndex)
  442. {
  443.         CTable1 table = tables.Item(tableIndex);
  444.         CCell0 c1 = table.Cell(row, column);
  445.         c1.Select();
  446.         COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
  447.         m_wdSel.InsertRows(covOptional);
  448.         c1.ReleaseDispatch();
  449.         table.ReleaseDispatch();
  450. }
  451. void WordOperate::TableRemoveRows(int row, int column, int tableIndex)
  452. {
  453.         CTable1 table = tables.Item(tableIndex);
  454.         CCell0 c1 = table.Cell(row, column);
  455.         c1.Select();
  456.         c1.Delete(COleVariant((long)wdDeleteCellsEntireRow));
  457.         c1.ReleaseDispatch();
  458.         table.ReleaseDispatch();
  459. }
  460. void WordOperate::InsertJpg(CString strPicture)
  461. {
  462.         COleVariant   covTrue((short)TRUE),
  463.                 covFalse((short)FALSE),
  464.                 covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
  465.         CnlineShapes nLineShapes1 = m_wdSel.get_InlineShapes();
  466.         CnlineShape nLineshape1 = nLineShapes1.AddPicture(strPicture, covFalse, covTrue, covOptional);// LinkToFile False 使图片文件的独立副本
  467.         //auto old= nLineshape1.get_LockAspectRatio();
  468.         nLineshape1.put_LockAspectRatio(1);//锁定纵横比
  469.         //一页一张
  470.         //auto width = nLineshape1.get_Width();
  471.         //auto height = nLineshape1.get_Height();
  472.         auto a = nLineshape1.get_ScaleWidth();
  473.         auto b=nLineshape1.get_ScaleHeight();
  474.         //nLineshape1.put_Width(206.5*2);
  475.         //auto c = 206.5*2 / (width / height);
  476.         //nLineshape1.put_Height(c);
  477.         nLineshape1.ReleaseDispatch();
  478.         nLineShapes1.ReleaseDispatch();
  479. }
  480. void WordOperate::InsertFile(CString fileName)
  481. {
  482.         COleVariant     vFileName(fileName),
  483.                 vTrue((short)TRUE),
  484.                 vFalse((short)FALSE),
  485.                 vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR),
  486.                 vNull(_T(""));
  487.         /**//*
  488.                 void InsertFile(LPCTSTR FileName, VARIANT* Range, VARIANT* ConfirmConversions, VARIANT* Link, VARIANT* Attachment);
  489.                 */
  490.         m_wdSel.InsertFile(
  491.                 fileName,
  492.                 vNull,
  493.                 vFalse,
  494.                 vFalse,
  495.                 vFalse
  496.         );
  497. }
  498. void WordOperate::SelectMoveDown(short lineCount, short unit)//有选择操作的移动
  499. {
  500.         m_wdSel.MoveDown(COleVariant(unit), COleVariant((short)lineCount), COleVariant((short)wdExtend));
  501. }
  502. void WordOperate::NoneSelectMoveDown(short lineCount, short unit)//仅仅移动光标,不选中
  503. {
  504.         m_wdSel.MoveDown(COleVariant(unit), COleVariant((short)lineCount), COleVariant((short)wdMove));
  505. }
  506. void WordOperate::SelectMoveUp(short lineCount, short unit)//有选择操作的移动
  507. {
  508.         m_wdSel.MoveUp(COleVariant(unit), COleVariant((short)lineCount), COleVariant((short)wdExtend));
  509. }
  510. void WordOperate::NoneSelectMoveUp(short lineCount, short unit)//仅仅移动光标,不选中
  511. {
  512.         m_wdSel.MoveUp(COleVariant(unit), COleVariant((short)lineCount), COleVariant((short)wdMove));
  513. }
  514. void WordOperate::SelectMoveLeft(short charCount, short unit)//有选择操作的移动
  515. {
  516.         m_wdSel.MoveLeft(COleVariant(unit), COleVariant((short)charCount), COleVariant((short)wdExtend));
  517. }
  518. void WordOperate::NoneSelectMoveLeft(short charCount, short unit)//
  519. {
  520.         m_wdSel.MoveLeft(COleVariant(unit), COleVariant((short)charCount), COleVariant((short)wdMove));
  521. }
  522. void WordOperate::SelectMoveRight(short charCount, short unit)//有选择操作的移动
  523. {
  524.         m_wdSel.MoveRight(COleVariant(unit), COleVariant((short)charCount), COleVariant((short)wdExtend));
  525. }
  526. void WordOperate::NoneSelectMoveRight(short charCount, short unit)//
  527. {
  528.         m_wdSel.MoveRight(COleVariant(unit), COleVariant((short)charCount), COleVariant((short)wdMove));
  529. }
  530. void WordOperate::MoveToFirst()
  531. {
  532.         m_wdSel.GoTo(COleVariant((short)1), COleVariant((short)2), COleVariant((short)0), COleVariant((short)1));
  533. }
  534. void WordOperate::MoveToNextPage()
  535. {
  536.         m_wdSel.GoTo(COleVariant((short)1), COleVariant((short)2), COleVariant((short)1), COleVariant());
  537. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-27 22:02 , Processed in 0.146522 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表