0

我想将 HTML 表格导出到 Excel。

我查看了使用 jQuery 插件将 HTML 表导出为 CSV 和 Excel 的各种客户端选项,但这些选项并不好,因为 IE 不支持它们,此外在所有浏览器中都会发出警告消息。同样对于较大的 Excel 文件,客户端导出也不是最佳选择。

我在使用 PHP 时也查看了 PHPExcel,但似乎没有任何原生支持将 HTML 表导出到 Excel。考虑到我有根据数据库输入修改的自定义表,我无法将数据库对象直接打印到 PHPExcel。

我正在使用带有 MVC 方法的 Yii 框架。

所以我真正想要的是能够将我的 HTML 表格导出到 Excel。关于如何做到这一点的任何想法?我真的需要这个帮助。

4

3 回答 3

0

您是否考虑将其导出为 CSV?

Excel 可以导入 CSV 并制作数据表格(ofc 没有边框和其他装饰)。

我制作了一个用于构建电子表格的 PHP 类,也许它可以帮助你:

<?php

class Spreadsheet {

    private $grid = array();

    public function setCell(/*int*/ $x, /*int*/ $y, /*mixed*/ $value) {
        for($yy=0; $yy<=$y; $yy++) {
            if(!isset($this->grid[$yy])) {
                $this->grid[$yy] = array();
            }
        }

        for($xx=0; $xx<=$x; $xx++) {
            if(!isset($this->grid[$y][$xx])) {
                $this->grid[$y][$xx] = null;
            }
        }

        $this->grid[$y][$x] = $value;
    }

    // final command executed, including "exit".
    public function sendAsCsv(/*string*/ $filename) {
        header('Content-type: text/csv; charset=utf-8');
        header('Content-Language: en');
        header('Content-Disposition: attachment; filename="' . $filename . '"');
        header("Pragma: no-cache");
        header("Expires: 0");

        ob_end_clean();

        $outputBuffer = fopen("php://output", 'w');

        $this->appendToFile($outputBuffer);

        fclose($outputBuffer);
        exit;
    }

    public function appendToFile(/*resource*/ $fileHandle) {
        foreach($this->grid as $val) {
            fputcsv($fileHandle, $val);
        }
    }
}
于 2013-07-30T13:54:21.090 回答
0

您可以尝试使用 SQL Reporting Services。它有点重,但您可以将 HTML 表格创建为报告。使用 Reporting Services,您可以将报告呈现为 Excel 文档(或 PDF 或图像等)。

我发现这是将一致的输出写入此类文档的最简单方法。

我没有尝试过从 PHP 调用 Reporting Services,但我确信它可以完成。

MS的Brian Swan有一篇博客文章对此进行了解释-

http://blogs.msdn.com/b/brian_swan/archive/2010/09/23/rendering-sql-server-reports-as-excel-documents-with-php.aspx

虽然我自己没有尝试过,所以我不能保证它,但可能对起点有所帮助。

于 2013-07-30T13:51:36.810 回答
0

你可以试试这个插件,它也支持 IE - tableExport.js

HTML:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="src/jquery.table2excel.js"></script>
<body>
<tr class="noExl">
  <th>#</th>
  <th>Column heading</th>
  <th>Column heading</th>
  <th>Column heading</th>
</tr>
</body>

jQuery:

$("button").click(function(){
  $("#table2excel").table2excel({
    // exclude CSS class
    exclude: ".noExl",
    name: "Excel Document Name"
  });
});

插件下载: http ://www.jqueryscript.net/table/Export-Html-Table-To-Excel-Spreadsheet-using-jQuery-table2excel.html

于 2015-11-23T08:52:12.217 回答