【问题标题】:PHPExcel: HTML to Excel, writing remove the CSS in excel filePHPExcel:HTML 到 Excel,写入删除 excel 文件中的 CSS
【发布时间】:2015-02-07 09:13:39
【问题描述】:

我想导出(强制下载)HTML(带 CSS)到 EXCEL 表,现在我使用 PHPExcel 库来执行此操作,它生成 excel 文件但删除 CSS(使用内联 html 标签),可以任何人都指导我,如何将 CSS 保存在 Excel 工作表中。

我正在使用这段代码,但我也想保留css并强制下载

//html
$html = "<table> 
<thead> <tr> <td colspan='2'> <h1> Main Heading </h1> <td> </tr> </thead>
<tbody>
<tr> 
  <th style='background:#ccc; color:red; font-size:15px'> Name <th> 
  <th style='background:#ccc; color:red; font-size:15px'> Class <th> 
</tr> 
<tr> 
  <td style='background:#fff; color:green; font-size:13px'> Jhon <th> 
  <td style='background:#fff; color:gree; font-size:13px'> 9th <th> 
</tr> 
</tbody>

</table>";

// Put the html into a temporary file
$tmpfile = time().'.html';
file_put_contents($tmpfile, $html);

// Read the contents of the file into PHPExcel Reader class
$reader = new PHPExcel_Reader_HTML; 
$content = $reader->load($tmpfile);  

// Pass to writer and output as needed
$objWriter = PHPExcel_IOFactory::createWriter($content, 'Excel2007');
$objWriter->save('excelfile.xlsx');

// Delete temporary file
unlink($tmpfile);

【问题讨论】:

    标签: phpexcel phpexcelreader


    【解决方案1】:

    目前您无法从 HTML 标记中读取样式,除非您重写 PHPExcel 的 HTML Reader 来处理样式;它根本不支持。如果您是从 HTML 构建电子表格,也许您应该重新考虑直接从一个新的 PHPExcel 对象构建它,这样您就可以访问 PHPExcel 的所有功能。

    要发送到浏览器,请使用适当的标题发送到php://output,如Examples/01simple-download-xlsx.php 所示,并在标题为Redirect output to a client’s web browser 的开发人员文档部分中描述

    【讨论】:

    • 嗨,@Mark 为你的这句话,“除非你重写 PHPExcel 的 HTML 阅读器来处理样式;”你能给我链接或代码,它处理所有带有 css 等的 HTML 吗?跨度>
    • 开源之美:它是 HTML 阅读器文件....它被称为 HTML.php,您可以在 Classes/PHPExcel/Reader 文件夹中找到它......它不处理任何不过 CSS 只是基本的 HTML 元素、表格和表格单元格的行跨度/列跨度属性
    • 所以意思是,我必须为 CSS 编写新代码?正确的 ?如果是的话,你能给我一个简单的例子,它可以帮助我从 HTML 中读取 css,然后把它放到 excel 中?
    • 如果我能给你一个例子,那是因为我自己已经编写了那个代码,在这种情况下它已经是 PHPExcel 的一部分......但你可以看看这个pull request 努力从html中读取样式信息
    • 没看懂 pull request 代码,其实我是初学者,能否请您详细说明一下或一些工作示例?
    猜你喜欢
    • 2013-10-14
    • 2019-03-23
    • 2021-01-17
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多