close

最近因為工作上的需要每天必須以人工整合大量的CSV文件,由於這些routine的工作十分的繁複無聊,所以就找了一下看看在PHP有沒有辦法操作EXCEL的方法(人家就是習慣寫PHP嘛....),目前常見與Excel相關的問題主要有兩種,一種是如何透過PHP產生excel檔案,另一種是除了產生之外還要能夠進一步操作檔案,下面是網路上常見的解決方式:

  1. 1.產生Excel檔案:利用tab分隔將資料轉為xls格式輸出
    • 直接建立excel檔案
    • 輸出給Browser下載

  2. 這個方法是目前PHP的程式中最為常見的方法,主要是將資料讀出後,利用標準的I/O輸出成以Tab分隔的格式,接著看是要存成檔案或者是要轉成html header讓使用者下載。
    <?
    $fp fopen("excel.xls""w");
    $content="Col1 \tCol2 \tCol3\n";
    $content.="Col4 \tCol5 \tCol6\n";
    fputs($fp, $content);
    fclose($fp);
    ?>
    <?
    header("Content-type:application/vnd.ms-excel");
    header("Content-Disposition:filename=excel.xls");
    $content="Col1 \tCol2 \tCol3\n";
    $content.="Col4 \tCol5 \tCol6\n";
    echo $content;
    ?>

    上面兩者皆會輸出一個excel.xls的excel檔案,裡面包含兩列資料,分別是"Col1"、"Col2"、"Col3"與"Col4"、"Col5"、"Col6",個人覺得此種方法與CSV檔案的用法大同小異,是目前最常見的使用方法。

  3. 2.操作EXCEL
  4. 由於第一種方法太過陽春,僅能一次寫入一個xls檔案且無法針對xls做任何的修改,更別說是操作其他的Worksheets,所以我們可以透過PEAR這個外掛元件或者使用COM物件來幫助我們操作Excel檔案,這類方法的功能比較齊全,可以對現有的Excel檔案做許多的操作,PEAR的缺點是要另外安裝PEAR套件才能利用PHP對Excel文件進行操作,也因為如此所以我都是用COM物件來操作Excel,使用COM物件時只要知道Excel的Object Model就可以進行操作,一個簡單操作的範例如下:
    <?php
      $xls = new COM
    ("Excel.sheet") or die("Did not connect");
      $xlsFile = "C:\\tmp\\byPhp.xls"
    ;
      $workbook = $xls->Application->Workbooks->Open
    ($xlsFile);
             or die
    ("Failed to Open Workbook");
      $xls->Application->Visible = 1;
     
      $worksheet = $workbook->Worksheets
    ("Sheet1");
      $worksheet->activate;
      $worksheet->Cells
    (1, 1)->value = 100;
      $worksheet->Cells(2, 1)->value = 20;
      $worksheet->Cells
    (3, 1)->formula = "=A1 + A2";
      print "100 + 20 = " . $worksheet->Cells(3, 1)->value;
      $workbook->Saved = 0;
      $xls->Application->Quit
    (); 
      unset($xls
    );
    ?>

    更詳細的內容可以參考這個網址
  5. 3.xml格式及其他:
  6. 當然現在的Office也支援xml格式的檔案,因此我們也可以使用xml格式來儲存我們的資料或者是使用PHP Excel Reader來讀取現有的xsl檔案
arrow
arrow
    全站熱搜

    nsysumis94 發表在 痞客邦 留言(4) 人氣()