發佈日期:
分類:
如何使用PHP‧讀取Microsoft Excel 2003檔案中內容‧並用表格顯示出來
01. 在網上找到了一堆例子,按需要加以更改後,在這裡來分享一下。要求當然不單是讀取Excel檔案中內容,而且讀取檔案必須是最新版本的,再加上可以排序各欄位。02. 為方便取得最新的版本,故放置的Excel檔案,會以日期命名如:10-01-asset_list.xls、10-03-asset_list.xls、10-05-asset_list.xls,故如需要最新的檔案,則只需用glob命令,拿最後一組讀出資料便可。
foreach (glob("data\\*.*") as $filename) { } echo '<p class="content_text">Reading file from: '.$filename.'</p>';
03. 為方便用戶閱讀資料,這裡已設置了,所有Excel檔案中欄位排序選擇,分別是擁有者(Owner)、資產描述(Description)、數量(Quantity)、類別(Type)、備註欄(Remark)。
echo '<p class="menu_text">Sorting by:</p>'; echo '<p>'; echo '<span class="selection_text"><a href="asset_list.php?id=owner" target="_self">Owner</a></span>'; echo '<span class="selection_text"><a href="asset_list.php?id=descrption" target="_self">Descrption</a></span>'; echo '<span class="selection_text"><a href="asset_list.php?id=quantity" target="_self">Quantity</a></span>'; echo '<span class="selection_text"><a href="asset_list.php?id=type" target="_self">Type</a></span>'; echo '<span class="selection_text"><a href="asset_list.php?id=remark" target="_self">Remark</a></span>'; echo '</p>';
04.開始執行讀取Excel檔案。
require_once 'Excel/reader.php'; $data = new Spreadsheet_Excel_Reader(); $data->setOutputEncoding('CP950'); $data->read($filename); error_reporting(E_ALL ^ E_NOTICE);
05. Excel檔案中,第1欄假設為目錄名稱,故只取一次。
echo '<table border="1">'; echo '<tr class="table_menu">'; echo '<td>'; echo '</td>'; echo '<td>'; echo $data->sheets[0]['cells'][1][1]; echo '</td>'; echo '<td>'; echo $data->sheets[0]['cells'][1][2]; echo '</td>'; echo '<td>'; echo $data->sheets[0]['cells'][1][3]; echo '</td>'; echo '<td>'; echo $data->sheets[0]['cells'][1][4]; echo '</td>'; echo '<td>'; echo $data->sheets[0]['cells'][1][5]; echo '</td>'; echo '</tr>';
06. 從第2欄位置開始讀取資料,放入一陣列內。
$i = 0; for ($j = 1; $j <= $data->sheets[0]['numRows']; $j++) { if ($data->sheets[0]['cells'][$j+1][1] == NULL) { break; } else { $content[owner][$i] = $data->sheets[0]['cells'][$j+1][1]; $content[descrption][$i] = $data->sheets[0]['cells'][$j+1][2]; $content[qty][$i] = $data->sheets[0]['cells'][$j+1][3]; $content[type][$i] = $data->sheets[0]['cells'][$j+1][4]; $content[remark][$i] = $data->sheets[0]['cells'][$j+1][5]; $i++; } }
07. 根據用戶不同選擇,把陣列內資料作不同方式排序。
$id=$_GET[id]; switch ($id) { case 'owner': array_multisort($content[owner],$content[descrption],$content[qty],$content[type],$content[remark]); break; case 'descrption': array_multisort($content[descrption],$content[owner],$content[qty],$content[type],$content[remark]); break; case 'quantity': array_multisort($content[qty],$content[owner],$content[descrption],$content[type],$content[remark]); break; case 'type': array_multisort($content[type],$content[owner],$content[descrption],$content[qty],$content[remark]); break; case 'remark': array_multisort($content[remark],$content[owner],$content[descrption],$content[qty],$content[type]); break; }
08. 將排序後資料,以表格方式顯示出來。
for ($j = 0; $j < $i; $j++) { echo '<tr class="table_text">'; echo '<td>'; echo $j+1; echo '</td>'; echo '<td>'; echo $content[owner][$j]; echo '</td>'; echo '<td>'; echo $content[descrption][$j]; echo '</td>'; echo '<td>'; echo $content[qty][$j]; echo '</td>'; echo '<td>'; echo $content[type][$j]; echo '</td>'; echo '<td>'; echo $content[remark][$j]; echo '</td>'; echo '</tr>'; }
發佈留言