求助!!!C++怎么对word的文档操作?

DW_three 2012-12-12 09:37:44
RT
因为word文档中的内容直接复制粘贴到记事本的时候,文档的格式会丢失。
而一个一个的另存为txt格式的文本文本文档又很麻烦,所以我想写一个类,实现读入word文档中的内容,然后将其转换为txt格式的文本文档,C++能做到吗,如果可以,那么C++要怎样样读入word文档中的内容呢?
...全文
211 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
DW_three 2012-12-15
  • 打赏
  • 举报
回复
引用 3 楼 ForestDB 的回复:
直接录个save as txt宏 然后编辑下该宏(本质就是VBA了) 这样会不会更方便点?
呃,其实我写这个类,是老师布置的大作业,所以。。。 话说你说的这个宏可以说的详细点不?我是初学的菜鸟。
DW_three 2012-12-15
  • 打赏
  • 举报
回复
引用 2 楼 ljhtdcq 的回复:
貌似有个word操作的DLL,你可以在程序中调用
怎么调用?我是个菜鸟,可以说得详细点不?
DW_three 2012-12-15
  • 打赏
  • 举报
回复
引用 1 楼 Binzo 的回复:
C O M
是个什么东西?
aleyuan 2012-12-12
  • 打赏
  • 举报
回复
我只会用com
ForestDB 2012-12-12
  • 打赏
  • 举报
回复
直接录个save as txt宏 然后编辑下该宏(本质就是VBA了) 这样会不会更方便点?
Tiger-3D 2012-12-12
  • 打赏
  • 举报
回复
貌似有个word操作的DLL,你可以在程序中调用
Binzo 2012-12-12
  • 打赏
  • 举报
回复
C O M
Ailoverer 2012-12-12
  • 打赏
  • 举报
回复
用的com 具体可以在网上搜索 比较多
赵4老师 2012-12-12
  • 打赏
  • 举报
回复
1.在VC中新建一控制台程序,选支持MFC(当然,你也可以不选择支持MFC的,不过会很麻烦) 2.按CTRL+W调出MFC ClassWizard,Add Class->From a type library,选择你的word的类型库 (例如我的是word2003,安装在e盘,我的路径是"e:\edittools\microsoft office\office11\msword.olb"), 选择完毕后,在弹出的窗口中选择要让classwizard生成的包装类,在本例中要用到 _Application, Documents, _Document, Range 这四个类,选中他们后按OK 3.进入你的main函数所在的cpp文件,加入头文件引用 #include "msword.h" //引用刚才classwizard生成的idispatch包装类 4.加入代码 ……
// console_word.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "console_word.h"
#include "msword.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// The one and only application object

CWinApp theApp;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    int nRetCode = 0;

    // initialize MFC and print and error on failure
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    {
        // TODO: change error code to suit your needs
        printf(_T("Fatal Error: MFC initialization failed!\n"));
        nRetCode = 1;
    }
    else
    {
        // TODO: code your application's behavior here.
        if  (CoInitialize(NULL)  !=  S_OK)
        {
            AfxMessageBox("初始化COM支持库失败!");
            return  -1;
        }

        _Application  wordApp;
        Documents     docs;
        _Document     doc;
        Range         aRange;
        COleVariant   vTrue((short)TRUE), vFalse((short)FALSE), vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
        CString       txt;

        wordApp.CreateDispatch("Word.Application",NULL);
        wordApp.SetVisible(FALSE);
            docs=wordApp.GetDocuments();
                doc=docs.Open(COleVariant("c:\\new\\测试.doc"),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
                    aRange=doc.Range(vOpt,vOpt);
                        txt=aRange.GetText();
                        AfxMessageBox(txt);//这里GetText得到的就是word文件的纯文本了,你可以将其写到txt文件中
                        printf("[%s]\n",txt.GetBuffer(txt.GetLength()));//里面的换行不是\r\n而是\r,所以需要输出重定向到文本文件看结果。
                    aRange.ReleaseDispatch();
                doc.Close(vOpt,vOpt,vOpt);
                doc.ReleaseDispatch();
            docs.ReleaseDispatch();
        wordApp.Quit(vOpt,vOpt,vOpt);
        wordApp.ReleaseDispatch();

        CoUninitialize();
    }

    return nRetCode;
}


65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧