天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 32|回复: 0

c++ 读写Word

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 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. }
    复制代码

     

     

     

     

    c++ 读写Word
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-1 10:26 , Processed in 0.179495 second(s), 25 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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