2

ユーザーがサーバーに Excel ワークブックをアップロードできるようにする ColdFusion Web アプリケーションがあります。

ファイルがアップロードされたら、その Excel ファイル内でマクロを実行したいと思います。

どうすればそれを行うことができるかについて、誰かが考えを持っていますか??

注: Java オブジェクトも使用できます。すでに HSSF POI を使用してシートのコンテンツにアクセスしています。

4

2 に答える 2

2

POI および同様の Java ライブラリは、マクロを実行できません。マクロを実行するには、MS Excel アプリケーションが必要です。つまり、サーバーにインストールする必要があります。次に、COM、Excel.Interop などを介してアクセスします。

とはいえ、通常、セキュリティ上の理由から、サーバー上でマクロを実行することは望ましくありません。私の最初の質問は、このマクロは何をするのかということです。最終的に何を達成しようとしているのかを教えていただければ、よりシンプルで安全な代替手段があるかもしれません.

于 2012-04-13T15:00:38.373 に答える
1

私はそのようなことをする方法を見つけました:

1)次のようにサーバーにVBSスクリプトファイルを書き込みます。

    <cfset contentVBS = 
            "Dim objXL" & Chr(13) & Chr(10) &
            "Set objXL = CreateObject(" & Chr(34) & "Excel.Application" & Chr(34) & ")" & Chr(13) & Chr(10) &
            "With objXL" & Chr(13) & Chr(10) &
            "   .Workbooks.Open (" & Chr(34) & VARIABLES.Instance.filePath & VARIABLES.Instance.fileName & Chr(34) & ")" & Chr(13) & Chr(10) &
            "   .Application.Run " & Chr(34) & VARIABLES.Instance.macroName & Chr(34) & Chr(13) & Chr(10) &
            "   .Application.Quit" & Chr(13) & Chr(10) &
            "End With" & Chr(13) & Chr(10) &
            "Set objXL = Nothing" & Chr(13) & Chr(10)
    />

    <cffile
        action="write"
        charset="utf-8"
        file="#VARIABLES.Instance.filePath##VARIABLES.Instance.script_vbs_name#"
        output="#contentVBS#"
        addnewline="no"
    >

はExcelVARIABLES.Instance.filePathファイルへのパス、はExcelファイルVARIABLES.Instance.fileNameの名前、VARIABLES.Instance.macroNameは起動するマクロの名前です。

2)cscript.exeを使用してvbsファイルを実行します。

    <cfexecute name = "C:\WINDOWS\system32\cscript.exe"
        arguments = "#VARIABLES.Instance.filePath##VARIABLES.Instance.script_vbs_name#">
    </cfexecute>

VARIABLES.Instance.script_vbs_name先ほど書いたVBSスクリプトファイルの名前はどこにありますか。

注:マクロはサーバー上にファイルを生成するため、ColdFusionServerにフォルダーへの読み取り/書き込みアクセスを指定する必要がありました。

于 2012-04-13T16:04:35.043 に答える