Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从excel文件中检测格式化字符?_Php_Phpexcel_Xlsx - Fatal编程技术网

Php 如何从excel文件中检测格式化字符?

Php 如何从excel文件中检测格式化字符?,php,phpexcel,xlsx,Php,Phpexcel,Xlsx,我正在创建一个小脚本,将数据从xlsx文件导入数据库。我正在使用PHPExcel库读取数据。问题是,它似乎没有办法将字符转换为等效的html标记。这背后的原因是,我将把保存的数据拉到一个已经有html标记的页面中。因此,我能想到的解决方法之一是解析阅读器从每个单元格中提取的文本,并将每个字符转换为其html标记等价物。以下是xlsx单元格中的文本示例: 增加频繁头痛风险的促成因素: 焦虑 萧条 睡眠障碍 肥胖 打鼾 过量使用咖啡因 过度使用止痛药 头部和颈部经常拉伤 眼睛问题 吸烟 酒精摄入量

我正在创建一个小脚本,将数据从xlsx文件导入数据库。我正在使用PHPExcel库读取数据。问题是,它似乎没有办法将字符转换为等效的html标记。这背后的原因是,我将把保存的数据拉到一个已经有html标记的页面中。因此,我能想到的解决方法之一是解析阅读器从每个单元格中提取的文本,并将每个字符转换为其html标记等价物。以下是xlsx单元格中的文本示例:

增加频繁头痛风险的促成因素:

  • 焦虑
  • 萧条
  • 睡眠障碍
  • 肥胖
  • 打鼾
  • 过量使用咖啡因
  • 过度使用止痛药
  • 头部和颈部经常拉伤
  • 眼睛问题
  • 吸烟
  • 酒精摄入量
  • 使用违禁药物
在保存到db之前,我想将圆形的项目符号和换行符转换为它们等效的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之前去掉引号:

$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:如果我查看源代码,它只是一个双引号中的字符串。你能提供一个电子表格的屏幕截图或一个获取副本的链接吗?