我一直在尝试用simplexlsxgen(PHP)生成excel工作表并下载
这也是我的Github文档
我需要什么
1.我的javascript中有一个JSON数组,我必须通过javascript AJAX 将其传递到PHP文件,在此生成Excel工作表并将其下载到本地磁盘
我试过的示例代码
在我的index.php文件中
<html>
<body>
<a href="export.php">Export to Excel Sheet</a>
</body>
</html>
我的export.php文件中
<?php
include ("SimpleXLSXGen.php");
$books = [
['Monday', 'App', 'Lynley Dodd', 'Mallinson Rendel', 'NZ'],
['', 'Pos', 'Lynley Dodd', 'Mallinson Rendel', 'NZ']
];
$xlsx = Shuchkin\SimpleXLSXGen::fromArray( $books );
$xlsx->mergeCells('A3:A5');
$xlsx->mergeCells('A6:A8');
$xlsx->mergeCells('A9:A11');
$xlsx->mergeCells('A12:A14');
$xlsx->mergeCells('A15:A17');
$xlsx->mergeCells('A18:A20');
$xlsx->mergeCells('A21:A23');
$xlsx->mergeCells('A24:A26');
$xlsx->mergeCells('C1:L1');
$xlsx->saveAs('books.xlsx');
$xlsx->downloadAs('books.xlsx');
?>
结论
1.如果我使用上面的代码,数组将转换为Excel工作表并成功下载。
问题
我的javascript文件中有数组,所以我必须使用 AJAX javascript将数组从我的Javascript传递到我的PHP文件。
$.ajax({
url: 'export.php',
data: {
books:books
},
type: 'POST',
success: function(response) {
}
});
1.但如果我只是像这样传递数据,Excel工作表不会下载。
我试过的替代代码
在我的index.php文件中
<html lang="en">
<head>
<title>JS array to Excel</title>
</head>
<script>
function array2excel() {
var books = [
["ISBN", "title", "author", "publisher", "ctry"],
[618260307, "The Hobbit", "J. R. R. Tolkien", "Houghton Mifflin", "USA"],
[908606664, "Slinky Malinki", "Lynley Dodd", "Mallinson Rendel", "NZ"]
];
var json = JSON.stringify(books);
var request = new XMLHttpRequest();
request.onload = function () {
if (this.status === 200) {
var file = new Blob([this.response], {type: this.getResponseHeader('Content-Type')});
var fileURL = URL.createObjectURL(file);
var filename = "", m;
var disposition = this.getResponseHeader('Content-Disposition');
if (disposition && (m = /"([^"]+)"/.exec(disposition)) !== null) {
filename = m[1];
}
var a = document.createElement("a");
if (typeof a.download === 'undefined') {
window.location = fileURL;
} else {
a.href = fileURL;
a.download = filename;
document.body.appendChild(a);
a.click();
}
} else {
alert("Error: " + this.status + " " + this.statusText);
}
}
request.open('POST', "array2excel.php");
request.responseType = "blob";
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.send("array2excel=" + encodeURIComponent(json));
}
</script>
<body>
<input type="button" onclick="array2excel()" value="array2excel" />
</body>
</html>
在我的array2excel.php文件中
<?php // array2excel.php
if (isset($_POST['array2excel'])) {
require __DIR__.'/simplexlsxgen/src/SimpleXLSXGen.php';
$data = json_decode($_POST['array2excel'], false);
\Shuchkin\SimpleXLSXGen::fromArray($data)->downloadAs('file.xlsx');
return;
}
?>
Alternative代码问题
1.文件正在下载,但文件已损坏,并已下载为HTML文件,而不是Excel工作表文件。
我需要什么
1.我需要通过我的JSON数组,这是在我的javascript到export/array2excel.php文件使用javascript AJAX 使用的post方法
1.欢迎提出任何替代方案。
1条答案
按热度按时间w41d8nur1#
如果你得到一个html文件(当调用simpleXLSXGen时,那么你有一个语法错误或运行时错误(文件找不到,权限被拒绝...,所需的文件找不到等)。尝试分别测试生成器和程序的其余部分。