Как определить форматирование символов из файла Excel? - PullRequest
1 голос
/ 29 марта 2012

Я создаю небольшой скрипт, который импортирует данные из файла 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>

1 Ответ

1 голос
/ 10 июня 2012

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 отобразит пулю как & bull; так что вы получите визуальный глиф, представляющий маркер, а не список ul / ol.

...