document.location不生成文件
我正在尝试生成Excel文件,并在用户单击button时在浏览器中下载。
var vFullExportContent = getExcelXmlNew(includeHidden, fullPageStore);
这用XML生成Excel文件数据。
我想使用Base64进行编码,并使用下面的代码行使用document.location下载文件。 而当我有我的Excellogging超过1000行时,这不会生成一个文件。 低于1000行是可以的。
document.location='data:application/vnd.ms-excel;base64,' + Base64.encode(vFullExportContent);
而且我也validation了我所有的(3259行)数据的任何编码问题,没有观察到任何东西。 那就是我在应用程序中应用filter来检索低于千分之一的独特行,并且所有三次报告下载。
非常感谢帮助。
现在你不再需要Base64了。 相反,您可以将您的XML包装在Blob中,并为用户提供一个Object URL来下载它。
首先,blob是二进制数据块,而不是JavaScript文本,因此我们将您的文本转换为Uint8Array(您可能需要在浏览器中填充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进行垃圾回收。