Intereting Posts
PHP PDO MySQL прокручиваемый курсор не работает Запрос POST для php mysql с использованием запросов python PHP Загрузить файл, ограничить максимальную скорость и рассчитать скорость загрузки Внедрение передового опыта PHP Event-Listener Symfony 2.0 шаг за шагом требуется учебник Преобразование данных формы HTML в файл PDF с использованием PHP Сообщение: неопределенная переменная: data – CodeIgniter Отправлять сообщения FCM с серверной части на устройство Android Ошибка Google OAuth2 – отсутствует необходимый параметр: grant_type при обновлении Как запустить PHP-код, когда пользователь нажимает на ссылку? Facebook деактивирует мое приложение Что такое «<<<» в PHP? API-интерфейс Facebook Graph: публикация для автономного пользователя с помощью идентификатора пользователя Facebook и access_token MySQL: Как установить начальное значение поля автоматического увеличения? При использовании Kohana DB, как избежать дублирования кода при необходимости подсчета для разбивки на страницы?

Преобразование HTML в Excel Rich Text и наоборот

Я использую 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 или без 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)

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

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