gpt4 book ai didi

javascript - 通过 Javascript 在 Excel 中打开 HTML 页面

转载 作者:行者123 更新时间:2023-11-29 22:16:35 25 4
gpt4 key购买 nike

我们有以 HTML 格式生成的报告,我们的用户经常在 Excel 中打开这些报告,我们通过使用内容类型来提供足够简单的服务。然而,我们最近遇到了一个错误的弹出窗口:其中一些报告使用大量 Javascript 进行动态分组/排序,并且用户希望将此“完成”版本的报告下载到 Excel 中。我有一个有效的 Javascript 函数:

var uri = 'data:application/vnd.ms-excel;base64,';
var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">';
template += '<head></head>';
template += '<body><table>{table}</table></body></html>';
var base64 = function(s) {
return window.btoa(unescape(encodeURIComponent(s)));
};
var format = function(s, c) {
return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; });
};
var ctx = {worksheet: name || 'Worksheet', table: daBody};
window.location.href = uri + base64(format(template, ctx));

我发现 IE 不支持 window.btoa,所以我解决了这个问题,但现在在尝试在 Excel 中打开数据时出现以下错误:

The data area passed to a system call is too small.

我相信,尽管有消息,这是由 URI 中的 base64 字符串太长引起的(我过去看到 IE 不接受极长的 URL,并且相信这是连接的)。

那么,有人可以在 IE 中使用替代方法吗?

最佳答案

找到了一种有效的方法:

  1. 使用 jQuery 创建表单,收集页面的所有 HTML(之后Javascript 完成)并将其发布到我的服务器
  2. 在我的服务器上,我创建了一个接受表单 post 并返回它的函数返回类型为“application/msexcel”
  3. 添加脚本以在报告页面的 window.load 上运行此 Javascript

它很 hacky,但它在所有浏览器中都像冠军一样工作

关于javascript - 通过 Javascript 在 Excel 中打开 HTML 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14839882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com