<?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 勒?
回覆刪除剛剛才看到您的信,謝謝喔。已更新。
刪除