2011.
12.
04
23:02:43
「PHP、PHPExcelでExcel出力(テンプレート読み込み)」で
ちょっとフライングしてしまいましたが、
今度はExcel読み込みのお話です。
と言う訳でサンプルφ(--)
<?php
//ライブラリ読み込み
require_once './Classes/PHPExcel.php';
require_once './Classes/PHPExcel/IOFactory.php';
//Excel読み込み
$filepath = "i.xls";
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$book = $objReader->load($filepath);
//シート設定
$book->setActiveSheetIndex(0);
$sheet = $book->getActiveSheet();
// セルから値を取得
for($i = 0; $i < 5; $i++){
for($j = 1; $j < 5; $j++){
$objCell = $sheet->getCellByColumnAndRow($i, $j); //col,rowの並び
$str = _getText($objCell);
print "$i - $j : $str<br />\n";
}
}
/**
* 指定したセルの文字列を取得する
*
* 色づけされたセルなどは cell->getValue()で文字列のみが取得できない
* また、複数の配列に文字列データが分割されてしまうので、その部分も連結して返す
*
*
* @param $objCell Cellオブジェクト
*/
function _getText($objCell = null)
{
if (is_null($objCell)) {
return false;
}
$txtCell = "";
//まずはgetValue()を実行
$valueCell = $objCell->getValue();
if (is_object($valueCell)) {
//オブジェクトが返ってきたら、リッチテキスト要素を取得
$rtfCell = $valueCell->getRichTextElements();
//配列で返ってくるので、そこからさらに文字列を抽出
$txtParts = array();
foreach ($rtfCell as $v) {
$txtParts[] = $v->getText();
}
//連結する
$txtCell = implode("", $txtParts);
} else {
if (!empty($valueCell)) {
$txtCell = $valueCell;
}
}
return $txtCell;
}
?>
Excel読み込んでA1からE4までを表示するサンプルです。
「_getText()」に関してはこちらの記事を丸パクr・・参考にさせていただきました。
書式設定されたセルの文字列は、getValue()メソッドでは上手く取得できないのだそーな。
ちょっとフライングしてしまいましたが、
今度はExcel読み込みのお話です。
と言う訳でサンプルφ(--)
<?php
//ライブラリ読み込み
require_once './Classes/PHPExcel.php';
require_once './Classes/PHPExcel/IOFactory.php';
//Excel読み込み
$filepath = "i.xls";
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$book = $objReader->load($filepath);
//シート設定
$book->setActiveSheetIndex(0);
$sheet = $book->getActiveSheet();
// セルから値を取得
for($i = 0; $i < 5; $i++){
for($j = 1; $j < 5; $j++){
$objCell = $sheet->getCellByColumnAndRow($i, $j); //col,rowの並び
$str = _getText($objCell);
print "$i - $j : $str<br />\n";
}
}
/**
* 指定したセルの文字列を取得する
*
* 色づけされたセルなどは cell->getValue()で文字列のみが取得できない
* また、複数の配列に文字列データが分割されてしまうので、その部分も連結して返す
*
*
* @param
*/
function _getText($objCell = null)
{
if (is_null($objCell)) {
return false;
}
$txtCell = "";
//まずはgetValue()を実行
$valueCell = $objCell->getValue();
if (is_object($valueCell)) {
//オブジェクトが返ってきたら、リッチテキスト要素を取得
$rtfCell = $valueCell->getRichTextElements();
//配列で返ってくるので、そこからさらに文字列を抽出
$txtParts = array();
foreach ($rtfCell as $v) {
$txtParts[] = $v->getText();
}
//連結する
$txtCell = implode("", $txtParts);
} else {
if (!empty($valueCell)) {
$txtCell = $valueCell;
}
}
return $txtCell;
}
?>
Excel読み込んでA1からE4までを表示するサンプルです。
「_getText()」に関してはこちらの記事を丸パクr・・参考にさせていただきました。
書式設定されたセルの文字列は、getValue()メソッドでは上手く取得できないのだそーな。