zoukankan      html  css  js  c++  java
  • vc++ 调用Word 实现转换格式

    此前VB做过这程序,只是格式不一样。之前是做Word->Html

    现在是Word->Txt 。

    不熟悉VC 弄得我比较磨蹭。

    HandleWord.h
    #pragma once

    class HandleWord
    {
    public:
        HandleWord(
    void);
        HandleWord(
    const char* fileName);
        
    ~HandleWord(void);

    private:
        
    const char* FileName;
    public:
        
    void TransFormToTxt();
    };

    .cpp

     这其中SaveAs的变量与VB较之复杂。其参数COleVariant 也弄晕了我。--->Union类型 可变类型。

    #include "stdafx.h"
    #include 
    "HandleWord.h"

    #include 
    "msword.h"

    HandleWord::HandleWord()
    {

    }

    HandleWord::HandleWord(
    const char* fileName)
    {
        FileName
    =fileName;
    }

    HandleWord::
    ~HandleWord()
    {

    }

    void HandleWord::TransFormToTxt()
    {
        
        _Application WordApp;
        CoInitialize(NULL);
        
    if(!WordApp.CreateDispatch("Word.Application",NULL))
        {
            
    //AfxMessageBox("创建Word服务失败!");
            exit(1);
            
    return;
        }
        
        WordApp.SetVisible(TRUE);
        
        
        COleVariant vTrue((
    short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

        Documents docs
    =WordApp.GetDocuments();
        docs.Open(COleVariant(FileName),
            vFalse,vFalse,vFalse,COleVariant(
    ""),COleVariant(""),
            vFalse,COleVariant(
    ""),COleVariant(""),
            COleVariant((
    short)0),COleVariant("UTF-8")
            ,vTrue,vFalse,COleVariant((
    short)0),vFalse,
            COleVariant(
    ""));


        _Document active_doc; 
        active_doc 
    = WordApp.GetActiveDocument();

        active_doc.SaveAs(COleVariant(
    "D:\\12.txt"), 
            COleVariant((
    short)2),
            vFalse, COleVariant(
    ""),vFalse, COleVariant(""),
            vFalse,vTrue,vFalse,vFalse,vFalse,COleVariant(
    "936"),//COleVariant(L"UTF-8")
            vFalse,vFalse,COleVariant((short)0),vFalse);

        
        WordApp.Quit(vOpt, vOpt, vOpt);
        
    }

    其中的msword.hmsword.cpp 根据不同Word版本似乎不同。这个可以下载。

     解释下:

    active_doc.SaveAs(COleVariant("D:\\12.txt"), 
            COleVariant((
    short)2),....
    COleVariant((short)2) 是类型,需要自己看msdn ,不过最好还是按照msdn弄个Enum,或者弄个#define txt 2 也好点。

    COleVariant("936")是Encoding。(技巧的确如vckbase所言,用宏录制,看其VB代码,再翻译成VC)

    其余参数msdn之。

  • 相关阅读:
    vue比较模板来跟新数据
    iframe自适应高度
    springmvc接口ios网络请求
    spring mvc实现接口参数统一更改
    spring mvc实现自定义注解
    基于redis集群实现的分布式锁,可用于秒杀,定时器。
    java使用javax.mail进行免费的邮件发送
    前端图片压缩上传(纯js的质量压缩,非长宽压缩)
    java项目中的路径获取,request
    阿里云(腾讯云类似)服务器控制台配置开放所有的端口
  • 原文地址:https://www.cnblogs.com/no7dw/p/2051590.html
Copyright © 2011-2022 走看看