如何使用javascript存储Excel文件
How to store Excel file using javascript
我一直在尝试使用Javascript存储Excel文件,但我无法让它在所有浏览器上运行。我使用的第一个技术是BASE64与数据URL相结合。这在Chrome和Firefox中工作正常,但IE en Safari不适用于这种技术。
newlink = document.createElement('a');
newlink.setAttribute('href', 'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,' + response.data);
newlink.setAttribute('download', 'test.xlsx');
newlink.click();
我也尝试了Blob的东西,但这似乎不能与PDF,Excel和MS Word等二进制文件正常工作。
var report = response;
var str = atob(report.data);
var blob = new Blob([str], { type: report.type});
saveAs(blob, 'report.csv');
这适用于CSV文件,但是当我对Excel或Word执行相同的操作时,文件已损坏。
我正在使用 AngularJS 进行 REST 调用并通过标头使用令牌身份验证,因此简单地使用 URL 并执行 window.open(url( 是行不通的,因为您将无权执行该请求。我尝试了$resource和$http但两者都有相同的结果。REST API 的工作原理是,当我公开 URL (无需身份验证(并直接使用浏览器转到 URL 时,它会正确下载文件,我可以打开它。因此,当我创建 Blob 时,看起来出了点问题。
有人知道如何解决这个问题吗?
这是我
目前使用的:
arr 是要转换为 CSV 的数组。为我开发了IE/Chrome。
exportToCsv("export.csv",arr);
function exportToCsv(filename, rows) {
var processRow = function (row) {
var finalVal = '';
for (var j = 0; j < row.length; j++) {
var innerValue = row[j] === null ? '' : row[j].toString();
if (row[j] instanceof Date) {
innerValue = row[j].toLocaleString();
};
var result = innerValue.replace(/"/g, '""');
if (result.search(/("|,|'n)/g) >= 0)
result = '"' + result + '"';
if (j > 0)
finalVal += ',';
finalVal += result;
}
return finalVal + ''n';
};
var csvFile = '';
for (var i = 0; i < rows.length; i++) {
csvFile += processRow(rows[i]);
}
var blob = new Blob([csvFile], { type: 'text/csv;charset=utf-8;' });
if (navigator.msSaveBlob) { // IE 10+
navigator.msSaveBlob(blob, filename);
} else {
var link = document.createElement("a");
if (link.download !== undefined) { // feature detection
// Browsers that support HTML5 download attribute
var url = URL.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("download", filename);
link.style = "visibility:hidden";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
}
相关文章:
- 将HTML表格导出到excel时,无法将数据加载到excel文件中
- 将JQuery Handontable保存到服务器上的excel文件中
- 生成的excel文件url
- CSV、PDF、Excel文件在dataTables的导出扩展中作为blob下载
- 使用JavaScript调用Excel文件
- 将JSON数据格式化为excel文件
- 如何使用 javascript 创建和编辑 excel 文件
- Javascript JSON 到 Excel 文件下载
- 使用node.js读取Excel文件
- 通过javascript用java处理excel文件
- 从javascript打开excel文件并传递参数
- Apache poi XSSF创建Excel文件-Create返回格式或文件扩展名无效的空文件
- 如何使用SheetJS从外部链接解析Excel文件(AmazonS3)
- 如何使用html中的javascript代码解析Excel文件
- 导出时如何重命名excel文件
- 如何在java web应用程序中捕获关闭打开的excel文件的事件
- 创建/下载一个带有chrome扩展名的excel文件
- 我想将任何xml文件导出到excel文件(xls或制表符分隔)
- 通过javascript保存带有当前日期和时间的excel文件
- 验证excel文件上传