PHPExcel は Excel ファイルを読み取ります
?????? 前回のブログ投稿では PHPExcel によってエクスポートされた Excel ファイルの概要を説明しましたが、次は Excel の読み取りについての概要を示します。 (データ量がそれほど大きくない場合は、この方法で Web を使用して直接読み取ることができます。データ量が非常に大きい場合は、Web でアップロード機能のみを実行し、読み取りと処理を実行することをお勧めします) PHPExcel はまだ比較的時間がかかります (メモリ)
?
コード例:
?
//首先导入PHPExcel require_once 'PHPExcel.php'; $filePath = "test.xlsx"; //建立reader对象 $PHPReader = new PHPExcel_Reader_Excel2007(); if(!$PHPReader->canRead($filePath)){ $PHPReader = new PHPExcel_Reader_Excel5(); if(!$PHPReader->canRead($filePath)){ echo 'no Excel'; return ; } } //建立excel对象,此时你即可以通过excel对象读取文件,也可以通过它写入文件 $PHPExcel = $PHPReader->load($filePath); /**读取excel文件中的第一个工作表*/ $currentSheet = $PHPExcel->getSheet(0); /**取得最大的列号*/ $allColumn = $currentSheet->getHighestColumn(); /**取得一共有多少行*/ $allRow = $currentSheet->getHighestRow(); //循环读取每个单元格的内容。注意行从1开始,列从A开始 for($rowIndex=1;$rowIndex<=$allRow;$rowIndex++){ for($colIndex='A';$colIndex<=$allColumn;$colIndex++){ $addr = $colIndex.$rowIndex; $cell = $currentSheet->getCell($addr)->getValue(); if($cell instanceof PHPExcel_RichText) //富文本转换字符串 $cell = $cell->__toString(); echo $cell; } }
?
?? ?ここで説明が必要なのは、上記コメントの「リッチテキスト変換文字列」です。
???PHPExcel は、セル内のコンテンツが When 2 つのフォントを使用すると、読み取られるのはリッチ テキスト オブジェクトです:
例: セルに次の内容があります: 「Test 1<」 🎜> "、前半の「テスト」フォントは宋朝、後半の「1」フォントは Calibri 現時点では ???$cell = $sheet->getCell($addr)->getValue();
セルの値を取得します。そして次のように出力します:
?
このようなセルのテキスト内容を直接読み取ることができないことがわかります。 (注: ここでのリッチ テキストは私自身の翻訳です。正しいかどうかはわかりません)。
さらに、セルを読み取る関数は次のとおりです:
//列は 0 から始まり、行は 1 から始まります
$currentSheet ->
PHPExcel_RichText Object(
[_richTextElements:private] => Array
(
[0] => PHPExcel_RichText_TextElement Object ([_text:private] => 测试)
[1] => PHPExcel_RichText_Run Object
(
[_font:private] => PHPExcel_Style_Font Object
(
[_name:private] => Calibri
[_size:private] => 11
[_bold:private] =>
[_italic:private] =>
[_superScript:private] =>
[_subScript:private] =>
[_underline:private] => none
[_strikethrough:private] =>
[_color:private] => PHPExcel_Style_Color Object
(
[_argb:private] => FF000000
[_isSupervisor:private] =>
[_parent:private] =>
[_parentPropertyName:private] =>
)
[_parentPropertyName:private] =>
[_isSupervisor:private] =>
[_parent:private] =>
[colorIndex] => 8
)
[_text:private] => 1
)
)
)