我正在尝试使用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'])
}
不,我不知道如何获得替换功能的确切键。 请帮帮我。
答案 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>