目的: PHP を使用して、xls/xlsx ファイルを csv に変換する vbs を呼び出します。
質問: xls/xlsx を csv に変換する vbs にソース ファイル パスと宛先ファイル パスを渡し、その vbs を PHP Web アプリケーションで実行するにはどうすればよいですか?
詳細:ソース ファイル パスと宛先ファイル パスを受け取り、ソース ファイル パスの xls/xlsx を csv に変換する作業中の vbs があります。Windows のコマンドラインから実行でき、やりたいことを正確に実行します。実行コマンドをbatファイルに入れてbatファイルを実行することで、同じ結果を得ることもできます。ただし、PHP で exec()/shell_exec()/system() を使用して同じコマンドを実行すると、csv が作成されません。(system() を使用して PHP からバットを実行しようとすると、バット ファイルの内容がページに表示されます。実際、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!
index.phtml
<?php
system("cmd /c batConvert.bat")
?>
注:上記のファイルはすべて (conversionTestSourceMS2003.xls と共に) 同じディレクトリにあります。パラメータを渡す方法を実装していません(すべてハードコードされていても動作させることができないため...)
セットアップ: PHP5、Zend Framework、WAMP、Windows 7 (localhost)。