阅读excel文件并输入html模板

时间:2012-07-19 14:12:07

标签: php html-parsing export-to-excel

我正在尝试使用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文件或textarea传递。 我希望用excel数据替换花括号中的文本。 excel文件中的标题与HTML模板中的值相同,但excel文件可以每次更改及其标题,excel文件中可能有更多标题,其中只有少数标题包含在HTML模板中。 我正在使用excelreader从excel文件中获取数据

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'])
}

不,我不知道如何获得替换功能的确切键。 请帮帮我。

1 个答案:

答案 0 :(得分: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;

<强> code.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>