使用COM打开excel文件并将其另存为.xml文件

时间:2010-03-25 08:02:41

标签: php xml excel com

我正在尝试以下代码:

<?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);

    ?> 

这实际上可以工作并创建Ourtest.xml文件。但我得到的字符如下:

ÐÏࡱá&gt; þÿþÿÿÿ
我尝试使用SaveAs(“D:\ Ourtest.pdf”),它说该文件已损坏或未正确解码。 有人可以帮帮我吗?谢谢

2 个答案:

答案 0 :(得分:1)

这是因为您将其另存为Excel格式。查看Excel文档以了解如何将其另存为XML文档 - 它可能是SaveAs的单独参数,也可能是另一种方法(Export*)。

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

答案 1 :(得分:1)

使用

解决了问题
$ex->Application->ActiveWorkbook->SaveAs("D:\Ourtest.xml",46); 

46是 xlXMLSpreadsheet 的值 谢谢大家