<?php //引入一個檔案即可 require_once 'PHPExcel_1.8.0/Classes/PHPExcel/IOFactory.php'; //檔案路徑 $inputFileName = 'example.xlsx'; //檔案類型 (不是副檔名,而是 Excel5, Excel2007, CSV, Excel2003XML 這種字串) $inputFileType = PHPExcel_IOFactory::identify($inputFileName); /** Create a new Reader of the type that has been identified **/ $objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Load $inputFileName to a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName); $sheetCount = $objPHPExcel->getSheetCount(); $sheetNames = $objPHPExcel->getSheetNames(); $sheet = $objPHPExcel->getActiveSheet(0); //讀取第一個工作表(編號從 0 開始) $colString = $sheet->getHighestColumn(); //最大欄位的英文代號 $highestColumns = PHPExcel_Cell::columnIndexFromString($colString); //最大欄位的數字編號。A=0, B=1, C=2.... $highestRows = $sheet->getHighestRow(); //最高行數。從1開始 for($s = 0; $s<$sheetCount; $s++){ $objPHPExcel->setActiveSheetIndex($s); $sheet = $objPHPExcel->getActiveSheet(); $colString = $sheet->getHighestColumn(); //最大欄位的英文代號 $highestColumns = PHPExcel_Cell::columnIndexFromString($colString); //最大欄位的數字編號。A=0, B=1, C=2.... $highestRows = $sheet->getHighestRow(); //最高行數。從1開始 $SheetName = $sheetNames[$s]; $excelData[$s]['SheetName'] = $SheetName; //欄位標題 $v = null; for ($c = 0; $c < $highestColumns; $c++) { // 0 = A欄 $v = trim($sheet->getCellByColumnAndRow($c, 1)->getValue()); if(!empty($v)){ $excelData[$s]['Titles'][] = $v; } } //資料 $startRowNum = 2; //資料列從第2行開始。可自訂 for ($r = $startRowNum; $r <= $highestRows; $r++) { // $r = 行數 $i = $r-$startRowNum; // $i = 第1維陣列索引 for ($c = 0; $c < 2; $c++) { //$c = 第2維陣列 = 欄位編號 $v = trim($sheet->getCellByColumnAndRow($c, $r)->getValue()); if(!empty($v)){ $excelData[$s]['Data'][$i][$c] = $v; } } } } echo "<pre>",print_r($excelData,1),"</pre>"; //寫入檔案 $filename = $SheetName . ".txt"; //檔案名稱 $fp = @fopen("$filename","w+"); //開啟檔案,要是沒有檔案將建立一份 foreach($excelData[$s]['Data'] as $row){ $str = '"' . $row[0] . '"' . ':"' . $row[1] . '"' . "\r\n"; fputs($fp, $str); } fclose($fp); //關閉檔案對讀取 Excel 檔來說,以上這些資料應該就很夠用了。
另外還有一個 toArray 的功能可以把整個表格內容讀到陣列。
$sheetData = $sheet->toArray(null, true, true, true); echo "", print_r($sheetData , 1), ""; exit;
要匯出的話,請參考 PHPExcel - 匯出 Excel檔
1. $highestColumns 是英文代號,應該沒辦法用 < 來運算。 2. $row 未定義,應該是 $r ?
回覆刪除謝謝您的提醒,已修正一些內容。現在 $highestColumns 是數字編號
回覆刪除你的 $highestRows 勒?
回覆刪除剛剛才看到您的信,謝謝喔。已更新。
刪除