我想将HTML表格导出到Excel。
我查看了各种客户端选项,使用jQuery插件将HTML表格导出为CSV和Excel,但这些选项并不好,因为它们在IE中不受支持,此外在所有浏览器中都会显示警告消息。此外,对于较大的Excel文件,客户端导出不是最佳的。
我也看过PHPExcel,因为我正在使用PHP,但似乎没有任何原生支持将HTML表格导出到Excel。考虑到我有基于数据库输入修改的自定义表,我无法直接将数据库对象打印到PHPExcel。
我正在使用Yii框架和MVC方法。
所以我真正想要的是能够将我的HTML表格导出到Excel。有关如何做到这一点的任何想法?我真的需要帮助。
答案 0 :(得分:0)
您可以尝试使用SQL Reporting Services。它有点重,但你可以创建HTML表作为报告。然后,您可以使用Reporting Services将报表呈现为Excel文档(或PDF或图像等)。
我发现这是获得类似文档的一致输出的最简单方法。
我没有尝试过从PHP调用Reporting Services,但我确信它可以完成。
MS的Brian Swan撰写的一篇博客文章解释了它 -
我自己并没有尝试过,所以我不能保证它,但可能对起点有帮助。
答案 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"
});
});