2012-04-17 26 views
0

我有一個文件「import.php」,其中html數據寫在表格標籤下。現在我想解析這些數據並將這些數據保存在Excel表格中。格式爲下述和第一TR包含標題,然後將數據表格數據解析和保存excel表格中的表格數據使用php

<html> 
    <body> 
    <table> 
    <tr> 
    <th>Name</th> 
    <th>Email</th> 
    <th>Addr</th> 
    <th>City</th> 
    </tr> 

    <tr> 
    <td>Jack</td> 
    <td>[email protected]</td> 
    <td>xyz Road</td> 
    <td>LOS ANGELES</td> 
    </tr> 

    <tr> 
    <td>Sam</td> 
    <td>[email protected]</td> 
    <td>pr Road</td> 
    <td>TUSTIN</td> 
    </tr> 
    </table> 
    </body> 
    </html> 
+0

你在哪裏遇到問題?解析數據?或將它保存爲Excel? – 2012-04-17 06:43:49

+0

將數據保存在Excel工作表中:( – swapnesh 2012-04-17 06:45:40

+1

)您是否已經解析了HTML?解析的產物是什麼?您有數組嗎?JSON對象?您知道excel的結構一般嗎?這兩個鏈接將幫助您: http://bit.ly/2Ltpr,http://bit.ly/a8lS74 – Adi 2012-04-17 07:19:06

回答

1

也許你曾經在這個更好看:http://phpexcel.codeplex.com/

這:http://www.easyxls.com/

另一個竅門是將數據保存爲CSV文件:http://www.homeandlearn.co.uk/php/php10p6.html

UPDATE:

有一個用於保存數據沒有更簡單的方法直接轉換爲Excel文件,但保存爲CSV。試試這個代碼:

<?php 
$data = array(array("firstname" => "Mary", "lastname" => "Johnson", "age" => 25), 
    array("firstname" => "Amanda", "lastname" => "Miller", "age" => 18), 
    array("firstname" => "James", "lastname" => "Brown", "age" => 31), 
    array("firstname" => "Patricia", "lastname" => "Williams", "age" => 7), 
    array("firstname" => "Michael", "lastname" => "Davis", "age" => 43), 
    array("firstname" => "Sarah", "lastname" => "Miller", "age" => 24), 
    array("firstname" => "Patrick", "lastname" => "Miller", "age" => 27)); 

    # filename for download 
    $filename = "website_data_" . date('Ymd') . ".xls"; 
    header("Content-Disposition: attachment; filename=\"$filename\""); 
    header("Content-Type: application/vnd.ms-excel"); 
    $flag = false; 
    foreach($data as $row) 
    { 
     if(!$flag) 
     { # display field/column names as first row echo 
      implode("\t", array_keys($row)) . "\r\n"; $flag = true; 
     } 
     array_walk($row, 'cleanData'); 
     print implode("\t", array_values($row)) . "\r\n"; 
    } 


    function cleanData(&$str) 
    { 
     $str = preg_replace("/\t/", "\\t", $str); 
     $str = preg_replace("/\r?\n/", "\\n", $str); 
     if(strstr($str, '"')) 
      $str = '"' . str_replace('"', '""', $str) . '"'; 
    } 
?> 

至於從HTML標記的值形式的分離,你可以從import.php讀你的HTML代碼,刪除所有不必要的標籤,把一個分隔符,以每或標籤的結束和然後將您的值放入單維數組中:

<?php 
$htmldata = ""; 
$htmldata .= "<html>"; 
$htmldata .= "<body>"; 
$htmldata .= "<tr>"; 
$htmldata .= "<th>header1</th>"; 
$htmldata .= "<th>header2</th>"; 
$htmldata .= "<th>header3</th>"; 
$htmldata .= "<th>header4</th>"; 
$htmldata .= "</tr>"; 
$htmldata .= "<tr>"; 
$htmldata .= "<td>data1</td>"; 
$htmldata .= "<td>data2</td>"; 
$htmldata .= "<td>data3</td>"; 
$htmldata .= "<td>data4</td>"; 
$htmldata .= "</tr>"; 
$htmldata .= "</body>"; 
$htmldata .= "</html>"; 

//Remove the unecessary tags like <html>, </html>, <body>, </body>, <th>, </th>, <td>, </td> 
$searchfor = array("<html>", "</html>", "<body>", "</body>", "<tr>", "</tr>", "<th>", "</th>", "<td>", "</td>"); 
$replacewith = array("", "", "", "", "", "", "", "**SEPERATOR**", "", "**SEPERATOR**"); // Replace </th> & </td> with **SEPERATOR** text 
$htmldata = str_replace($searchfor, $replacewith, $htmldata); 

$values = explode("**SEPERATOR**", $htmldata); ; 
print_r($values); 

?> 

數組$ value的前4個值包含您的標題值。希望它有幫助...

+0

我不想要使用沉重的phpExcel類..我需要一些腳本,如果你有任何 – swapnesh 2012-04-17 08:43:35