Php 如何从excel文件中检测格式化字符?
我正在创建一个小脚本,将数据从xlsx文件导入数据库。我正在使用PHPExcel库读取数据。问题是,它似乎没有办法将字符转换为等效的html标记。这背后的原因是,我将把保存的数据拉到一个已经有html标记的页面中。因此,我能想到的解决方法之一是解析阅读器从每个单元格中提取的文本,并将每个字符转换为其html标记等价物。以下是xlsx单元格中的文本示例: 增加频繁头痛风险的促成因素:Php 如何从excel文件中检测格式化字符?,php,phpexcel,xlsx,Php,Phpexcel,Xlsx,我正在创建一个小脚本,将数据从xlsx文件导入数据库。我正在使用PHPExcel库读取数据。问题是,它似乎没有办法将字符转换为等效的html标记。这背后的原因是,我将把保存的数据拉到一个已经有html标记的页面中。因此,我能想到的解决方法之一是解析阅读器从每个单元格中提取的文本,并将每个字符转换为其html标记等价物。以下是xlsx单元格中的文本示例: 增加频繁头痛风险的促成因素: 焦虑 萧条 睡眠障碍 肥胖 打鼾 过量使用咖啡因 过度使用止痛药 头部和颈部经常拉伤 眼睛问题 吸烟 酒精摄入量
- 焦虑
- 萧条
- 睡眠障碍
- 肥胖
- 打鼾
- 过量使用咖啡因
- 过度使用止痛药
- 头部和颈部经常拉伤
- 眼睛问题
- 吸烟
- 酒精摄入量
- 使用违禁药物
<?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之前去掉引号:
$value = $cell->getValue();
$value = trim($value, '"');
$value = htmlentities($value);
$value = nl2br($value);
htmlentities会将子弹渲染为&bull;因此,您将获得一个表示项目符号的视觉图示符,而不是ul/ol列表。应与以下内容一起使用:
如果字符串在双引号中,您可能希望在应用htmlentities之前去掉引号:
$value = $cell->getValue();
$value = trim($value, '"');
$value = htmlentities($value);
$value = nl2br($value);
htmlentities会将子弹渲染为&bull;因此,您将得到一个表示项目符号的可视图示符,而不是ul/ol列表。该单元格上的getValue()结果是什么。。。ie,实际的文本内容是什么?@Mark Baker:它只是一个没有格式的纯文本。或者,如果它是格式化的,那么肯定不是HTML。文本挤在一起;没有间距,没有断线,但是圆形的子弹被渲染了。我没有主意,我必须看一看。。。确实是文本返回了一个dnot而不是richtext对象?@Mark Baker:如果我查看源代码,它只是一个双引号中的字符串。你能提供一个电子表格的屏幕截图或一个获取副本的链接吗?该单元格上getValue()的结果是什么。。。ie,实际的文本内容是什么?@Mark Baker:它只是一个没有格式的纯文本。或者,如果它是格式化的,那么肯定不是HTML。文本挤在一起;没有间距,没有断线,但是圆形的子弹被渲染了。我没有主意,我必须看一看。。。这肯定是文本被返回了一个dnota richtext对象?@Mark Baker:如果我查看源代码,它只是一个双引号中的字符串。你能提供一个电子表格的屏幕截图或一个获取副本的链接吗?