Конвертировать HTML в Excel Rich Text и наоборот - PullRequest
1 голос
/ 28 января 2012

Я использую PHPExcel для передачи данных между таблицами MySQL DB и Excel 2007.Это хорошо работает в большинстве ситуаций, но я столкнулся с одной проблемой.

Некоторые поля в БД содержат данные HTML.Мне нужно максимально сохранить форматирование в ячейках Excel.Как я мог понять, Excel допускает следующее форматирование внутри ячеек (класс PHPExcel_RichText поддерживает все это): новые строки [они могут использоваться для отслеживания <p></p> блоков], имя шрифта, размер, цвет, полужирный шрифт, курсив,подчеркивание, зачеркивание, нижний индекс, верхний индекс.Предположим, этого достаточно, поэтому мы можем игнорировать другое форматирование HTML.

Каков наилучший (самый простой и быстрый) способ преобразования данных HTML в Excel Rich Text и наоборот?

Единственное решение, которое я имею в виду, - это создать функцию, которая будет проходить через HTML [используя DOMDocument или около того], ставить \n после элементов блока, создавать PHPExcel_RichText_Run объекты для <b>,<i> и т. Д. И игнорируйте все остальные элементы.Я чувствую, что это будет довольно «дорого», особенно когда речь идет о вложенных структурах, таких как <b>some <i>formatted<i> text</b>

Есть ли лучший способ сделать это, с PHPExcel или без него?

Еще одна идея: я заметил, что при экспорте в формате XML Spreadsheet 2003 внутри XML появляется следующее:

<ss:Data ss:Type="String"
  xmlns="http://www.w3.org/TR/REC-html40"><Font html:Color="#000000">this is </Font><B><Font
    html:Color="#000000">some </Font><I><Font html:Color="#000000">formatted</Font></I><Font
    html:Color="#000000"> text</Font></B></ss:Data>

, что является обычным HTML4.Я имею в виду, что Excel может понимать простой HTML.Так что, возможно, есть какой-то способ передать HTML напрямую в Excel, не преобразовывая его в PHPExcel_RichText объекты ... (хотя обратите внимание, что было бы лучше, если бы я смог экспортировать в формат .xlsx)

1 Ответ

1 голос
/ 30 января 2012

HTML в Rich-Text Runs включен в план развития PHPExcel на предстоящий год: однако, запланированный метод состоял в том, чтобы использовать DOMDocument для анализа разметки.

Любое решение, которое мы принимаем для самого PHPExcel, должно будет использовать RichText Runs для обеспечения согласованности.Хотя сам MS Excel может обрабатывать прямой импорт Excel и (как вы отметили в формате SpreadSheetML xml, предлагаемого в Excel 2003), это не согласуется с другими различными форматами Excel (BIFF и OfficeOpenXML).

...