使用 JSZip 将 CSV 文件添加到 zip 文件后更改
CSV file changed after adding it to zip file using JSZip
我有一个网站可以生成数据,然后将这些数据下载为 CSV 文件。数据最初位于一个数组中,然后我将其转换为 CSV 文件,如下所示:
var csvData = [['array', 'that'], ['contains', 'csv'], ['data']];
var csv = "";
csvData.forEach(function(row) {
csv += row.join(',');
csv += "\n";
});
var csvFile = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
使用
下载后打开文件时看起来与预期一致
window.location.href = csvFile;
我正在尝试使用 JSZip 在 zip 文件中下载多个 CSV。我有一个循环执行与上述代码类似的代码,但我没有下载每个文件,而是将其添加到一个 zip 文件中。
var zip = new JSZip();
for(int i = 0; i < 10; i++) {
var csvData = generateDataArray();
var csv = "";
csvData.forEach(function(row) {
csv += row.join(',');
csv += "\n";
});
var csvFile = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
zip.file(`${i}.csv`, csvFile);
}
zip.generateAsync({type:"base64"})
.then(function(content) {
window.location.href = "data:application/zip;base64," + content;
});
我的问题是 zip 文件中的 CSV 文件写入不正确。所有数据只写在第一行。
这是文件应有的样子以及在 zip 之外下载时的样子
这是文件下载成 zip 文件后的样子
如有任何帮助,我将不胜感激。
我通过执行以下操作解决了问题:
而不是使用
var csv = "";
csvData.forEach(function(row) {
csv += row.join(',');
csv += "\n";
});
var csvFile = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
我用过这个:
var csvFile = csvData.map(e => e.join(",")).join("\n");
然后我使用以下方法将其添加到 zip 文件中:
zip.file(`${i}.csv`, csvFile);
它运行完美,但我仍然不知道为什么。如果有人能解释一下两者之间的区别,我会很高兴。
我有一个网站可以生成数据,然后将这些数据下载为 CSV 文件。数据最初位于一个数组中,然后我将其转换为 CSV 文件,如下所示:
var csvData = [['array', 'that'], ['contains', 'csv'], ['data']];
var csv = "";
csvData.forEach(function(row) {
csv += row.join(',');
csv += "\n";
});
var csvFile = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
使用
下载后打开文件时看起来与预期一致window.location.href = csvFile;
我正在尝试使用 JSZip 在 zip 文件中下载多个 CSV。我有一个循环执行与上述代码类似的代码,但我没有下载每个文件,而是将其添加到一个 zip 文件中。
var zip = new JSZip();
for(int i = 0; i < 10; i++) {
var csvData = generateDataArray();
var csv = "";
csvData.forEach(function(row) {
csv += row.join(',');
csv += "\n";
});
var csvFile = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
zip.file(`${i}.csv`, csvFile);
}
zip.generateAsync({type:"base64"})
.then(function(content) {
window.location.href = "data:application/zip;base64," + content;
});
我的问题是 zip 文件中的 CSV 文件写入不正确。所有数据只写在第一行。
这是文件应有的样子以及在 zip 之外下载时的样子
这是文件下载成 zip 文件后的样子
如有任何帮助,我将不胜感激。
我通过执行以下操作解决了问题:
而不是使用
var csv = "";
csvData.forEach(function(row) {
csv += row.join(',');
csv += "\n";
});
var csvFile = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
我用过这个:
var csvFile = csvData.map(e => e.join(",")).join("\n");
然后我使用以下方法将其添加到 zip 文件中:
zip.file(`${i}.csv`, csvFile);
它运行完美,但我仍然不知道为什么。如果有人能解释一下两者之间的区别,我会很高兴。