プロジェクト

全般

プロフィール

dispexcel.php

ゆんぞ(管理者), 2016-02-28 05:22

 
1
<?php
2

    
3
include_once(dirname(__FILE__) . '/Classes/PHPExcel.php');
4
include_once(dirname(__FILE__) . '/Classes/PHPExcel/IOFactory.php');
5

    
6
function DispExcel($SpreadSheet, $DispType='list'){
7
  $xlsReader = PHPExcel_IOFactory::createReader('Excel2007');
8
  
9
  $index = array();
10
  $data  = array( array() );
11
  
12
  // ファイル読み込み
13
  $xlsObject = $xlsReader->load($SpreadSheet['fname']);
14
  
15
  // 指定のシート
16
  $xlsObject->setActiveSheetIndex($SpreadSheet['sheetIndex']);
17
  $xlsSheet = $xlsObject->getActiveSheet();
18
  
19
  // 最初の行を読み、$index[$col] に入れる
20
  for ($colMax='A'; ;$colMax++){
21
    $cell = $xlsSheet->getCell($colMax . '1')->getValue();
22
    if (($colMax != 'A') && (! $cell)) {break ;}
23
    $index[$colMax] = $cell;
24
  }
25
  
26
  // 2行目以降を読み、$data[row][col]に入れる
27
  $rowMax = 2;
28
  for ($rowMax=2; ;$rowMax++){
29
    $cell = $xlsSheet->getCell('A' . $rowMax)->getValue();  // 該当行の一番左のセル
30
    $line = $cell;
31
    for ($col='A'; $col < $colMax; $col++){
32
      $cell = $xlsSheet->getCell($col . $rowMax)->getCalculatedValue();
33
      $data[$rowMax][$col] = preg_replace('/\r?\n/', "<br>\n", $cell);
34
      $line .= $cell;
35
    }
36
    if (! $line) { break; };
37
  }
38

    
39
  // リスト形式で表示
40
  if ($DispType == 'list'){
41
    // 各参加者へのリンク
42
    echo '<ul>';
43
    for ($row = 2; $row < $rowMax; $row++){
44
      echo '<li><a href="#' , $row , '">' , $data[$row]['A'] , "</a> さん\n";
45
    }
46
    echo '</ul>';
47
    
48
    // $data[row][0] を <h3> に入れ、あとは <dl><dd>に入れる。
49
    for ($row = 2; $row < $rowMax; $row++){
50
      echo '<a name="' , $row , '"></a><h3>' , $data[$row]['A'] , " さん</h3>\n";
51
      echo '<table>' , "\n";
52
      for ($col='B'; $col < $colMax; $col++){
53
        if (! $data[$row][$col]){ continue; }
54
        echo ' <tr><td align="left" valign="top" style="padding:2px 4px;"><b>', $index[$col] , "</b></td>\n";
55
        echo ' <td style="padding:2px 6px;">', $data[$row][$col], "</td></tr>\n";
56
      }
57
      echo "</table>\n";
58
    }
59
  }
60
  // テーブルとして出力
61
  else if ($DispType == 'sheet'){
62
    echo '<table  border="1">' , "\n<tr>\n";
63
    for ($col='A'; $col < $colMax; $col++){
64
      echo ' <th> ' , $index[$col] , " </th>\n";
65
    }
66
    echo "</tr>\n";
67
    
68
    for ($row = 2; $row < $rowMax; $row++){
69
      echo "<tr>\n";
70
      for ($col='A'; $col < $colMax; $col++){
71
        echo ' <td> ', $data[$row][$col] , " </td>\n";
72
      }
73
      echo "</tr>";
74
    }
75
    echo "</table>\n";
76
  }
77
}
78
?>