• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > vc++如何操作不同版本word文件呀

vc++如何操作不同版本word文件呀

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了vc++哪个版本好用,vc++最新版本,vc++2015版本,微软vc++2015版本,多版本vc++运行库等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: vc++如何操作不同版本word文件呀
描述:

下面是合并word文件的参数,只能合并word2003文件,如果用户使用的是word2000,程序需要怎么修改?请大家帮忙看看~~
网上搜了一些信息,好像意思是说下面的Word.Application要带上版本号:Word.Application.11或Word.Application.9,但也有的说不必要~~
if(!wordApp.CreateDispatch("Word.Application",NULL)){}
还有,word2003对应的open函数有16个参数,但是word2000只有12个参数。如果是这样该怎么办?
还有,像这样的函数调用接口有没有相关的文档,大家是怎么会用的?
还请高手为我解决一下!多谢!
// Word.cpp : Defines the initialization routines for the DLL.
//
#include "stdafx.h"
#include "Word.h"
#include "msword.h" 
#include "stdlib.h"
#include "string.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
char* jstringToWindows( JNIEnv *env, jstring jstr );
/////////////////////////////////////////////////////////////////////////////
// CWordApp
BEGIN_MESSAGE_MAP(CWordApp, CWinApp)
//{{AFX_MSG_MAP(CWordApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
//    DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWordApp construction
CWordApp::CWordApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/*
六个参数的word合并
char *f1,char *f2,char *f3,char *f4, char *f5 是要合并的五个word文件的路径
char *f6  是合并后生成的新word的存放路径
*/
void addWord(char *f1,char *f2,char *f3,char *f4, char *f5, char *f6)
{
if(CoInitialize(NULL) != S_OK)   
{   
// AfxMessageBox("初始化COM支持库失败!");   
return ;
}
_Application   wordApp;
Documents   docs;
_Document   doc1;
_Document   doc2;
_Document   doc3;
_Document   doc4;
_Document   doc5;
_Document   doc6;
Range   aRange;
COleVariant   vTrue((short)TRUE),   
vFalse((short)FALSE),   
vOpt((long)DISP_E_PARAMNOTFOUND,   VT_ERROR);   
if(!wordApp.CreateDispatch("Word.Application",NULL))
{
}
wordApp.SetVisible(FALSE);
// CString version = wordApp.GetVersion();
// AfxMessageBox(version);
docs=wordApp.GetDocuments();
CString str1 = f1;
CString str2 = f2;
CString str3 = f3;
CString str4 = f4;
CString str5 = f5;
CString str6 = f6;
doc1=docs.Open(COleVariant(str1),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
doc6=docs.Add(vOpt,vOpt,vOpt,vOpt);
aRange=doc1.Range(vOpt,vOpt);
aRange.Copy();
aRange=doc6.Range(vOpt,vOpt);
aRange.Paste();
doc1.Close(vOpt,vOpt,vOpt);
doc2=docs.Open(COleVariant(str2),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
aRange=doc2.Range(vOpt,vOpt);
aRange.Copy();
aRange=doc6.Range(vOpt,vOpt);
aRange.SetStart(aRange.GetEnd());
aRange.Paste();
doc2.Close(vOpt,vOpt,vOpt);
doc3=docs.Open(COleVariant(str3),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
aRange=doc3.Range(vOpt,vOpt);
aRange.Copy();
aRange=doc6.Range(vOpt,vOpt);
aRange.SetStart(aRange.GetEnd());
aRange.Paste();
doc3.Close(vOpt,vOpt,vOpt);
doc4=docs.Open(COleVariant(str4),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
aRange=doc4.Range(vOpt,vOpt);
aRange.Copy();
aRange=doc6.Range(vOpt,vOpt);
aRange.SetStart(aRange.GetEnd());
aRange.Paste();
doc4.Close(vOpt,vOpt,vOpt);
doc5=docs.Open(COleVariant(str5),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
aRange=doc5.Range(vOpt,vOpt);
aRange.Copy();
aRange=doc6.Range(vOpt,vOpt);
aRange.SetStart(aRange.GetEnd());
aRange.Paste();
doc5.Close(vOpt,vOpt,vOpt);
doc6.SaveAs(COleVariant(str6),vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
doc6.Close(vOpt,vOpt,vOpt);
wordApp.Quit(vOpt,vOpt,vOpt);
CoUninitialize(); 
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CWordApp object
CWordApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CWordApp initialization
BOOL CWordApp::InitInstance()
{
// Register all OLE server (factories) as running.  This enables the
//  OLE libraries to create objects from other applications.
COleObjectFactory::RegisterAll();
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// Special entry points required for inproc servers
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return AfxDllGetClassObject(rclsid, riid, ppv);
}
STDAPI DllCanUnloadNow(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return AfxDllCanUnloadNow();
}
// by exporting DllRegisterServer, you can use regsvr.exe
STDAPI DllRegisterServer(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
COleObjectFactory::UpdateRegistryAll();
return S_OK;
}
//六个参数的word合并的JNI接口
JNIEXPORT void JNICALL Java_actions_Word_addWord(JNIEnv *env, jobject obj, jstring file1, jstring file2, jstring file3, jstring file4, jstring file5, jstring file6)
{
char *f1;
char *f2;
char *f3;
char *f4;
char *f5;
char *f6;
f1 = jstringToWindows(env,file1);
f2 = jstringToWindows(env,file2);
f3 = jstringToWindows(env,file3);
f4 = jstringToWindows(env,file4);
f5 = jstringToWindows(env,file5);
f6 = jstringToWindows(env,file6);
addWord(f1,f2,f3,f4,f5,f6);
}
char* jstringToWindows(JNIEnv  *env, jstring jstr)
{
  int length = (env)->GetStringLength(jstr );
  const jchar* jcstr = (env)->GetStringChars(jstr,&nb

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • VC++60如何获取Excel的版本?
  • vc++如何操作不同版本word文件呀

相关文章

  • 2017-06-04 [散分贴]弱弱问一句,alt项目如果用exe方式的话,怎么注册
  • 2017-06-04 在MFC开发的ActiveX控件中,ActiveX控件与其属性页是怎么传递消息的?高手请进!!
  • 2017-06-04 有关mschart修改字体问题
  • 2017-06-04 有关wave文件的问题
  • 2017-06-04 求教如何在mfcactivex里面添加wmi?
  • 2017-06-05 多线程入门问题
  • 2017-06-05 如何等待循环创建的好几个线程结束
  • 2017-06-05 vector不能使用自定义类VC++60
  • 2017-06-04 有没有人能发给我一个简单的NtService程序?初学请教
  • 2017-06-05 请问如何向UI线程发送消息阿?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 这种环境下需要互斥访问吗?
    • 为什么工作线程只能向主界面线程发送一次消息呢????????//
    • ATL编写的Excel的ComAddIn如何实现Excel的用户自定义函数(UDF)?
    • 一个COM用regsvr32进行注册时,报“找不到指定模块错”,可是用dependcywalker看到的每一个dll在系统中都有,这是怎么回事?
    • 有什么方法可以取得使用指定服务的Application
    • 在控制台程序中,能否捕捉到进程异常退出?如果能,请问怎么捕捉?
    • 关于dll中设定hook的方式,为什么这种方式不能安装hook???高手请进
    • 那位有侯杰的windows多线程程序设计这本书的电子版??
    • 如何用AsynchronousPluggableProtocol异步可插入协议替换系统http协议的处理--用于网页监控
    • 新手请教VB控件添加后无法运行问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有