我正在创建一个小脚本,将数据从xlsx文件导入数据库。我正在使用PHPExcel库来读取数据。问题是,它似乎没有办法将字符转换为等效的html标记。这背后的原因是,我将把保存的数据拉到一个已经有html标记的页面中。因此,我可以想到的一种解决方法是解析阅读器从每个单元格中提取的文本,并将每个字符转换为其等效的html标记。以下是xlsx单元格中的文本示例:
增加频繁头痛风险的因素:
- 焦虑
- 抑郁症
- 睡眠障碍
- 肥胖
- 打鼾
- 过量使用咖啡因
- 过量使用止痛药
- 头部和颈部经常拉伤
- 眼睛问题
- 吸烟
- 酒精摄入量
- 违禁药物的使用
在保存到数据库之前,我想将循环项目符号和换行符转换为等效的html标记。我该如何做到这一点?
编辑:这是代码:
<?php
include 'PHPExcel.php';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
//$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("test.xlsx");
$objWorksheet = $objPHPExcel->getActiveSheet();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
echo '<table>' . "n";
foreach ($objWorksheet->getRowIterator() as $row) {
echo '<tr>' . "n";
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false); // This loops all cells,
// even if it is not set.
// By default, only cells
// that are set will be
// iterated.
foreach ($cellIterator as $cell) {
echo '<td>' . $cell->getValue() . '</td>' . "n";
}
echo '</tr>' . "n";
}
echo '</table>' . "n";
?>
</body>
</html>
htmlentities应该与nl2br:一起使用
$value = $cell->getValue();
$value = htmlentities($value);
$value = nl2br($value);
如果字符串位于双引号中,您可能希望在应用htmlentities之前去掉引号:
$value = $cell->getValue();
$value = trim($value, '"');
$value = htmlentities($value);
$value = nl2br($value);
htmlentities会将子弹渲染为&公牛因此,您将获得表示项目符号的视觉字形,而不是ul/ol列表。