Objective:使用 PHP 调用 vbs 将 xls/xlsx 文件转换为 csv。
问题:如何将源文件路径和目标文件路径传递给将 xls/xlsx 转换为 csv 并在 PHP Web 应用程序中运行该 vbs 的 vbs?
详细信息:我有一个工作 vbs,它采用源文件路径和目标文件路径,并将源文件路径中的 xls/xlsx 转换为 csv。我可以从 Windows cmd 行执行它,它完全符合我的要求。我也可以把执行命令放到一个bat文件中,运行bat文件也可以达到同样的效果。但是,当我在 PHP 中使用 exec()/shell_exec()/system() 执行相同的命令时,不会创建 csv。(如果我尝试使用 system() 从 PHP 运行 bat,bat 文件的内容会显示在页面上,实际上,echo Conversion complete!打印“echo Conversion complete! Conversion complete。”)我还没有看到任何内容错误呢。
注意:我知道 PHPExcel,我不想使用它。
excelToCsv.vbs
On Error Resume Next
if WScript.Arguments.Count < 2 Then WScript.Echo "Please specify the source and the destination files. Usage: ExcelToCsv <xls/xlsx source file> <csv destination file>"
Wscript.Quit
End If
csv_format = 6
Set objFSO = CreateObject("Scripting.FileSystemObject")
src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0))
dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item(1))
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file)
oBook.SaveAs dest_file, csv_format
oBook.Close False
oExcel.Quit
batConverter.bat
excelToCsv.vbs conversionTestSourceMS2003.xls batTest.csv
echo Conversion Complete!
索引.phtml
<?php
system("cmd /c batConvert.bat")
?>
注意:以上所有文件(连同conversionTestSourceMS2003.xls)都在同一个目录中。我还没有实现任何传递参数的方法(因为即使它都是硬编码的,我也无法让它工作......)
设置: PHP5、Zend 框架、WAMP、Windows 7(本地主机)。