从ColdFusion服务器执行Excelmacros
我有一个ColdFusion Web应用程序,它允许用户在服务器上上载Excel工作簿。
一旦文件被上传,我想在Excel文件中执行一个macros。
任何人都有一个想法,我怎么可以做到这一点?
注意:我也可以使用Java对象,我已经使用HSSF POI来访问表格的内容。
POI和类似的java库,不能运行macros。 运行macros需要MS Excel应用程序,这意味着它必须安装在服务器上。 然后通过COM,Excel.Interop等访问。
也就是说,出于安全原因,您通常不希望在服务器上执行macros。 所以我的第一个问题是这个macros是做什么的? 如果你能告诉我们你最终想达到什么目的,也许有更简单和更安全的select。
我find了一个办法做这样的事情:
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" >
其中VARIABLES.Instance.filePath
是我的Excel文件的path, VARIABLES.Instance.fileName
是我的Excel文件的名称,而VARIABLES.Instance.macroName
是我想要启动的macros的名称。
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脚本文件的名称。
注意:macros在服务器上生成一个文件,所以我需要指定ColdFusion Server对文件夹的读/写权限。
- Java的Apache POI java.lang.IllegalArgumentException:位置21504超过文件的末尾
- 使用Apache POI在Excel中使用千位分隔符格式化数字
- NoClassDefFoundError在Android应用程序中使用Apache poi和MS Excel插入图像时
- 重新定义命名的Excel范围,然后使用Apache POI保存
- 当使用POI读取.xlsx文件时,出现错误“Zip File is closed”
- Java:excel到Apache Poi的csvdate转换问题
- 如何删除Java中的Excel工作表的内容?
- Clojure代理追加到excel文件
- 无法在XSSFCell Apache POI中设置自定义颜色