Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP HTML表格作为Excel.xls文件_Php_Html_Excel - Fatal编程技术网

PHP HTML表格作为Excel.xls文件

PHP HTML表格作为Excel.xls文件,php,html,excel,Php,Html,Excel,我有一些PHP脚本,可以创建一个表并将其保存为和xls文件。所有的工作都很完美,编辑工作表中的信息。但是几天前,当我打开其中一个文件,编辑单元格数据并尝试保存时,Microsoft Excel尝试将文件保存为HTML,即使文件扩展名是xls $table = "<!DOCTYPE html> <html> <head> <style> </style> </head> <

我有一些PHP脚本,可以创建一个表并将其保存为和
xls
文件。所有的工作都很完美,编辑工作表中的信息。但是几天前,当我打开其中一个文件,编辑单元格数据并尝试保存时,Microsoft Excel尝试将文件保存为HTML,即使文件扩展名是
xls

$table = "<!DOCTYPE html>
    <html>
    <head>
    <style>
    </style>
    </head>
    <body>
    <table>
        Some table rows with table data
    </table>
    </body>
    </html>";
$table=”
包含表数据的某些表行
";
我使用
fopen
fwrite
fclose
$table
变量保存在一个文件中,然后下载该文件

我也尝试过直接下载文件,而且每次编辑时,Excel都会尝试将其保存为HTML


我一直在寻找解决办法,但没有任何帮助。你知道如何解决这个问题吗?

有几种方法可以将HTML表导出到xls或xlsx

第一个,回显右标题下的内容。这将在excel中生成大量警告,但xls将可读:

<?php
$excel_file="output.xls";
$table = "<!DOCTYPE html>
    <html>
    <head>
    <style>
    </style>
    </head>
    <body>
    <table>
        <tr><td>Some </td><td>table</td> <td>rows</td> <td>with</td> <td>table</td> <td>data</td></tr>
    </table>
    </body>
    </html>";
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=".$excel_file."");
echo $table;
?>

第二个更平滑一些,使用现有的库,比如PhpSpreadsheet。您可以在他们的github页面上找到非常简洁的基本示例:

第三个,使用来自的JS代码段。在这里,您可以看到一个基本示例:

<!DOCTYPE html>
<html>
<head>
<title>SheetJS JS-XLSX In-Browser HTML Table Export Demo</title>
<meta charset="utf-8" />
</head>
<body>
<![if gt IE 9]>
<script type="text/javascript" src="//unpkg.com/xlsx/dist/shim.min.js"></script>
<script type="text/javascript" src="//unpkg.com/xlsx/dist/xlsx.full.min.js"></script>

<script type="text/javascript" src="//unpkg.com/blob.js@1.0.1/Blob.js"></script>
<script type="text/javascript" src="//unpkg.com/file-saver@1.3.3/FileSaver.js"></script>
<![endif]>
<script>
function doit(type, fn, dl) {
    var elt = document.getElementById('data-table');
    var wb = XLSX.utils.table_to_book(elt, {sheet:"Sheet JS"});
    return dl ?
        XLSX.write(wb, {bookType:type, bookSST:true, type: 'base64'}) :
        XLSX.writeFile(wb, fn || ('SheetJSTableExport.' + (type || 'xlsx')));
}
</script>
<div id="container">
<table id="data-table">
<tr><td>Sample1</td><td>Sample2</td><td>Sample3</td></tr>
<tr><td>Sample4</td><td>Sample5</td><td>Sample6</td></tr>
<tr><td>Sample7</td><td>Sample8</td><td>Sample9</td></tr>
</table>

</div>
<table>
<tr>
<td>
<p id="xportxlsx" class="xport"><input type="submit" value="Export to XLSX!" onclick="doit('xlsx');"></p>
</td></tr>
</table>

</body>
</html>

浏览器HTML表格导出演示中的SheetJS JS-XLSX
函数doit(类型、fn、dl){
var elt=document.getElementById('data-table');
var wb=XLSX.utils.table_to_book(elt,{sheet:“sheet JS”});
返回dl?
write(wb,{bookType:type,bookst:true,type:'base64'}):
writeFile(wb,fn | |('SheetJSTableExport.+(键入| |'XLSX'));
}
样本1样本2样本3
样本4样本5样本6
样本7样本8样本9

还有很多其他的方法,还有更多的库支持这个功能。最后,根据您的需要,您可以简单地创建CSV文件,而不是xls文件