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

问题描述:

我正在创建一个从xlsx文件导入数据到db的小脚本。我正在使用PHPExcel库来读取数据。问题在于它似乎没有办法将字符转换为等效的html标签。这背后的原因是,我将把已保存的数据拉到已经有html标签的页面中。所以我能想到解决这个问题的一种方法是解析读者从每个单元中获取的文本,并将每个字符转换为与其相应的html标记。这里的文字从XLSX细胞样本:如何从excel文件中检测格式化字符?

贡献增加经常头痛的危险因素:

  • 焦虑
  • 萧条
  • 睡眠紊乱
  • 肥胖
  • 打鼾
  • 过度使用咖啡因
  • 过量使用止痛药的
  • 的头部和颈部经常应变
  • 眼部问题
  • 吸烟
  • 酒精摄入
  • 使用违禁药物

我想转换在保存到数据库之前,圆形的子弹和换行符将放入相应的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> 
+0

该单元格上的getValue()的结果是什么......即,实际的文本内容是什么? – 2012-03-29 12:38:03

+0

@Mark Ba​​ker:这只是一个纯文本,没有任何格式。或者如果它被格式化,它肯定不是HTML。文本挤在一起;没有间距,没有换行符,但圆形子弹被渲染。 – jilseego 2012-03-29 12:48:43

+0

我没有想法,我不得不看看......这绝对是文本返回一个不支持richtext对象? – 2012-03-29 14:08:44

htmlentities应该做的伎俩与nl2br一起:

$value = $cell->getValue(); 
$value = htmlentities($value); 
$value = nl2br($value); 

如果字符串是双引号,你可能想摆脱报价在应用之前:

$value = $cell->getValue(); 
$value = trim($value, '"'); 
$value = htmlentities($value); 
$value = nl2br($value); 

htmlentities将使子弹成为&公牛;所以你会得到一个代表子弹的可视化字形,而不是一个ul/ol列表。