⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transfer.cpp

📁 java深度历险的随书源代码
💻 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 + -