将HTML表导出到Excel - 选项?

时间:2013-07-30 13:17:38

标签: html excel export

我想将HTML表格导出到Excel。

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

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

我正在使用Yii框架和MVC方法。

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

3 个答案:

答案 0 :(得分: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

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

答案 1 :(得分: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);
        }
    }
}

答案 2 :(得分: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