我正在使用PHPExcel在MySQL DB和Excel 2007工作表之间传输数据。它适用于大多数情况,但我遇到了一个问题。
DB中的某些字段包含HTML数据。我需要尽可能地保留Excel单元格中的格式。我可以理解,Excel允许在单元格内部进行以下格式化(PHPExcel_RichText
类支持所有这些):新行[这些可用于跟踪<p></p>
块],字体名称,大小,颜色,粗体,斜体,下划线,删除线,下标,上标。假设这些已足够,所以我们可以忽略其他HTML格式。
将HTML数据转换为Excel Rich Text的最佳(最简单,最快)方法是什么?反之亦然?
我想到的一个解决方案是创建一个将遍历HTML的函数[使用DOMDocument
左右],在块元素之后放置\n
,为{创建PHPExcel_RichText_Run
个对象{1}},<b>
等,并忽略所有其他元素。我觉得这会非常“昂贵”,特别是在处理嵌套结构时,例如<i>
有没有更好的方法,有或没有<b>some <i>formatted<i> text</b>
?
还有一个想法:我注意到在以 XML Spreadsheet 2003 格式导出时,XML中会出现以下内容:
PHPExcel
这是正常的HTML4。我的意思是Excel 似乎可以理解纯HTML。所以也许有一些方法可以将HTML直接传递给Excel而不将其转换为<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>
个对象......(尽管请注意,如果我能够导出为.xlsx格式,那将是最好的)
答案 0 :(得分:1)
HTML to Rich-Text Runs是来自明年的PHPExcel开发路线图:但是,计划的方法是使用DOMDocument来解析标记。
我们为PHPExcel本身采用的任何解决方案都必须使用RichText Runs来提供一致性。虽然MS Excel本身可以处理Excel的直接导入,并且(正如您在Excel 2003提供的SpreadSheetML xml格式中所述),但这与其他不同的Excel格式(BIFF和OfficeOpenXML)不一致。