Intereting Posts
как активировать динамическое расширение SOAP, CURL, OPENSSL? Content-type, не изменяющийся с помощью CURLOPT_HTTPHEADERS Может кто-нибудь помочь мне отправить почту в PHP? Функция вызова Codeigniter в контроллере без index.php PHP soapClient для PayPal SetExpressCheckout Ошибка аутентификации Возможно ли, используя PHPUnit mock objects, ожидать вызова магического метода __call ()? Размер загрузки PHP и его влияние на размер сообщения и ограничение памяти Отражает ли идея идеи частных методов, потому что частные методы могут быть доступны за пределами класса? Можете ли вы отключить () много переменных сразу в PHP? PHP объемный ввод foreach PHP + MySQL: разница между буферизированными и небуферизованными запросами \ r \ n не работает, но \ r \ n \ r \ n работает рассчитать количество дней недели в диапазоне дат Слияние двух изображений с прозрачными пленками в PHP Вызов Perl-скрипта из PHP и передача в переменных, а также использование имени переменной perl-скрипта

Преобразование 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).