使用COM打开一个excel文件并保存为.xml文件

我试着下面的代码:

<?php $workbook = "D:\b2\\test.XLS"; $sheet = "Sheet1"; #Instantiate the spreadsheet component. $ex = new COM("Excel.sheet") or Die ("Did not connect"); #Get the application name and version print "Application name:{$ex->Application->value}<BR>" ; print "Loaded version: {$ex->Application->version}<BR>"; #Open the workbook that we want to use. $wkb = $ex->application->Workbooks->Open($workbook) or Die ("Did not open"); #Create a copy of the workbook, so the original workbook will be preserved. $ex->Application->ActiveWorkbook->SaveAs("D:\b2\Ourtest.xml"); #$ex->Application->Visible = 1; #Uncomment to make Excel visible. #Optionally, save the modified workbook $ex->Application->ActiveWorkbook->SaveAs("D:\Ourtest.xml"); #Close all workbooks without questioning $ex->application->ActiveWorkbook->Close("False"); unset ($ex); ?> 

这实际上工作并创buildOurtest.xml文件。 但即时通讯字符如:

ÐÏࡱá>þÿþÿÿÿ
我已经尝试了SaveAs(“D:\ Ourtest.pdf”),它说文件已损坏或不正确的解码。 任何人都可以帮我吗?谢谢

这是因为您将其保存为Excel格式。 查看Excel文档,了解如何将其保存为XML文档 – 它可能是SaveAs或其他方法的独立参数( Export* )。

编辑:它似乎SaveAs是正确的方法来使用。 检查这里的msdn文档 。 您可能想要指定第二个参数FileFormat 。 也许将其设置为XlFileFormat.xlXMLSpreadsheet值?

问题通过使用解决

 $ex->Application->ActiveWorkbook->SaveAs("D:\Ourtest.xml",46); 

46是xlXMLSpreadsheet的值
感谢大家