将HTML转换为Excel Rich Text,反之亦然

时间:2012-01-28 10:54:15

标签: php phpexcel

我正在使用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格式,那将是最好的)

1 个答案:

答案 0 :(得分:1)

HTML to Rich-Text Runs是来自明年的PHPExcel开发路线图:但是,计划的方法是使用DOMDocument来解析标记。

我们为PHPExcel本身采用的任何解决方案都必须使用RichText Runs来提供一致性。虽然MS Excel本身可以处理Excel的直接导入,并且(正如您在Excel 2003提供的SpreadSheetML xml格式中所述),但这与其他不同的Excel格式(BIFF和OfficeOpenXML)不一致。