Откройте файл Excel с помощью COM и сохраните его как XML-файл - PullRequest
0 голосов
/ 25 марта 2010

Я пытаюсь следующий код:

<?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. Но я получаю символы вроде:

ÐÏà¡ ± á> þÿ þÿÿÿ
Я попытался с SaveAs ("D: \ Ourtest.pdf"), и он говорит, что файл был поврежден или неправильно декодирован. Может кто-нибудь помочь мне, пожалуйста? Спасибо

Ответы [ 2 ]

1 голос
/ 26 марта 2010

Проблема решена с помощью

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

46 - это значение для xlXMLSpreadsheet
Спасибо всем

1 голос
/ 25 марта 2010

Это потому, что вы сохраняете его в формате Excel. Обратитесь к документации Excel, чтобы узнать, как сохранить ее как документ XML - это может быть отдельный параметр для SaveAs или другой метод (Export*).

РЕДАКТИРОВАТЬ: Кажется, SaveAs является правильным методом для использования. Проверьте документацию msdn здесь . Вы, вероятно, хотите указать второй параметр FileFormat. Может быть, установить его на значение XlFileFormat.xlXMLSpreadsheet?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...