0

Excelデータで説明ビルダーを作成しようとしています。HTML テンプレートで事前定義された値を使用したいのですが、事前定義された値が表示されている場所に Excel の値を配置したいと考えています。

<table>
  <tr>
     <td>ISBN</td>
     <td>{ISBN}</td>
  </tr>
  <tr>
     <td>Publisher</td>
     <td>{Publisher}</td>
  </tr>
  <tr>
     <td>Year</td>
     <td>{Year}</td>
  </tr>
  <tr>
     <td>About Book</td>
     <td>{AboutBook}</td>
  </tr>
</table>

HTML テンプレートは、物理 HTML ファイルまたはテキストエリアから渡すことができます。中括弧内のテキストをExcelデータに置き換えたい。Excel ファイルの見出しは HTML テンプレートの値と同じですが、Excel ファイルは毎回変更することができ、その見出しも変更できます。Excel ファイルにはさらに多くの見出しがあり、HTML テンプレートに含まれるものはごくわずかです。私はエクセルリーダーを使用してエクセルファイルからデータを取得しています

for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
    $xlshead[$j] = trim($data->sheets[0]['cells'][1][$j]);
}

foreach($xlshead as $hkey=>$hval) {
        $row[$hkey] = trim($hval);
    }

これで、配列 $row キーの列番号と配列 $row 値の見出しを取得しました

私は使っている

for ($j = 1; $j <= $data->sheets[0]['numRows']-1; $j++) {
       str_replace(array_valyes($row),$data->sheets[0]['cells'][$j+1][array_$keys($row)],$_POST['strhtmltemplate'])
}

いいえ、置換機能で正確なキーを取得する方法がわかりません。私を助けてください。

4

1 に答える 1

1

これが私のプロジェクトのために行った完全なコードです

$data = new Spreadsheet_Excel_Reader();
$filename = $_SESSION['filename'];
$data->read(ROOT.$filename);

$xlshead = array();

for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
    $xlshead[$j] = trim($data->sheets[0]['cells'][1][$j]);
}

$TotalRecord = $data->sheets[0]['numRows']-1;
$row = array();

foreach($xlshead as $hkey=>$hval) {
    $row['<?php echo $data->sheets[0][\'cells\'][$j+1]['.$hkey.']; ?>'] = "{".trim($hval)."}";
}

function _loadFile($filename)
{
    $contents = '';
    if ( file_exists($filename ) )
    {
        ob_start();
        require_once $filename;
        $contents = ob_get_contents();
        ob_end_clean();
    }
    return $contents;
}

$datafile = session_id();
$writedata = "";

$writedata .= str_replace(array_values($row),array_keys($row),$_SESSION['template']);

$myFile = $datafile.".php";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $writedata);
fclose($fh);

$showdata = _loadFile("code.php");
$_SESSION['finaldata'] = $showdata;

コード.php

require_once 'Excel/reader.php';

$datafile = session_id();

if(isset($_SESSION['filename'])) {
    $data = new Spreadsheet_Excel_Reader();
    $filename = $_SESSION['filename'];
    $data->read(ROOT.$filename);

    for ($j = 1; $j <= $data->sheets[0]['numRows']-1; $j++) {
        include($datafile.".php");
        echo '--br--';
    }
}

最後にファイルをExcelにエクスポートします

<?php
session_start();
$filename ="Downloaded.xls";
header('Content-type: application/ms-excel');
header('Content-Disposition: attachment; filename='.$filename);

$dataarr = explode("--br--",$_SESSION['finaldata']);

?>
<table>
<?php 

$dataarr = explode("--br--",$_SESSION['finaldata']);

foreach($dataarr as $res) {
    echo "<tr><td>".htmlentities($res)."</td></tr>";
}
?>
</table>
于 2012-07-20T07:26:50.453 に答える