📄 transfer.cpp
字号:
#include <vcl.h>
#include <OleServer.hpp>
#include <windows.h>
#include "com_sun_edu_JavatoWord.h"
#include <utilcls.h>
#include <comobj.hpp>
#include <iostream.h>
#include <vcl\word_2k.h>
#pragma hdrstop
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
JNIEXPORT void JNICALL Java_com_sun_edu_JavatoWord_NativeToWord
(JNIEnv *env, jobject obj, jobjectArray context, jint count)
{
//读入样板档
TOpenDialog* templatefile = new TOpenDialog(NULL) ;
templatefile->Title = "请选择样板档" ;
templatefile->Filter = "Word files (*.doc)|*.doc" ;
AnsiString filename ;
if(templatefile->Execute())
{
filename = templatefile->FileName ;
}
//检查样板档是否存在
if(!FileExists(filename))
{
ShowMessage("您所输入的档案并不存在,请重新输入") ;
delete templatefile ;
return ;
}
delete templatefile ;
CoInitialize(NULL) ;
try
{
Variant Wordobj ;
Variant Docsobj ;
//产生Word物件
Wordobj = CreateOleObject("Word.Application") ;
cout << "建立Word物件成功" <<endl ;
Wordobj.OlePropertySet("Visible",true) ;
//开启user所指定的样版档
Docsobj = Wordobj.OlePropertyGet("Documents") ;
Docsobj.OleFunction("Open",filename) ;
Variant ActDoc ;
Variant Selection ;
Variant Find ;
Variant Replacement ;
//取得目前作用的document
ActDoc = Wordobj.OlePropertyGet("ActiveDocument") ;
//取得Selection.Find.Replacement物件
Selection = Wordobj.OlePropertyGet("Selection") ;
Find = Selection.OlePropertyGet("Find") ;
Replacement = Find.OlePropertyGet("Replacement") ;
//执行所有来自Java程式中,所请求的取代动作
for(int i = 0 ; i < count ; i++)
{
//取出context的内容
jstring jsdata = (jstring)(*env).GetObjectArrayElement(context,i) ;
wchar_t* csdata = (wchar_t*)(*env).GetStringChars(jsdata,NULL) ;
int size = (*env).GetStringLength(jsdata) ;
WideString wtmp = WideString(csdata,size) ;
int start = wtmp.Pos(":") ;
WideString text = wtmp.SubString(1,start-1) ;
text = "@" + text ;
WideString rtext = wtmp.SubString(start+1,wtmp.Length() - start) ;
//开始取代动作
Find.OleFunction("ClearFormatting") ;
Replacement.OleFunction("ClearFormatting") ;
/* 要取代的字串 取而代之的字串*/
Find.OleFunction("Execute",text,true,false,false,false,false,true,wdFindContinue,false,rtext,wdReplaceAll) ;
}
}catch(Exception& e)
{
ShowMessage(e.Message) ;
CoUninitialize() ;
return ;
}
CoUninitialize() ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -