我正在尝试生成Excel文件,并在用户单击按钮时在浏览器中下载。
var vFullExportContent = getExcelXmlNew(includeHidden, fullPageStore);
这使用XML生成了Excel文件数据。
我希望使用Base64对其进行编码,并使用下面的代码行使用document.location下载文件。当我的excel记录超过1000行时,这不会生成文件。低于1000行就可以了。
document.location='data:application/vnd.ms-excel;base64,' + Base64.encode(vFullExportContent);
我还验证了所有编码问题的所有(3259行)数据,没有观察到任何内容。这就是我在应用程序中应用过滤器以检索低于千位的唯一行,并且所有三次都报告下载。
非常感谢帮助。
答案 0 :(得分:1)
现在你不再需要Base64了。相反,您可以将XML包装在Blob中,并为用户提供Object URL以下载它。
首先,blob是二进制数据块,而不是JavaScript文本,因此我们将您的文本转换为Uint8Array(您可能需要在浏览器中polyfill TextEncoder):
var encoder = new TextEncoder('utf8')
var blob = new Blob(encoder.encode(vFullExportContent), {type: "application/xml"})
接下来,生成URL(它将是引用Blob的短URL,而不是数据的表示):
var url = URL.createObjectURL(blob)
并显示指向该链接的链接(如果必须,则使用window.location)。
用户下载文件后,请不要忘记调用URL.revokeObjectURL(blob)
,以便可以对blob进行垃圾回收。