如何将 Javascript 数组转换为 CSV 文件并从 Chrome 扩展下载?
How to convert Javascript array into CSV file and download it from Chrome Extension?
你好,我是 Chrome 扩展的新手并在 angularjs 中开发它,我正在尝试将数组转换为 csv 文件并从 Chrome 扩展下载它。
我试过
var csvData = new Blob($scope.result, { type: 'text/csv' });
var csvUrl = URL.createObjectURL(csvData);
chrome.downloads.download({ url: csvUrl });
然后我从 SO
那里得到了另一种方法
var finalVal = '';
for (var i = 0; i < $scope.result.length; i++) {
var value = $scope.result[i];
for (var j = 0; j < value.length; j++) {
var innerValue = value[j]===null?'':value[j].toString();
var result = innerValue.replace(/"/g, '""');
if (result.search(/("|,|\n)/g) >= 0)
result = '"' + result + '"';
if (j > 0)
finalVal += ',';
finalVal += result;
}
finalVal += '\n';
}
console.log(finalVal);
var download = document.getElementById('download');
download.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(finalVal));
download.setAttribute('download', 'test.csv');
但是他们都没有正常工作,我在manifest.json
中有以下权限
permissions": [
"http://*/*",
"https://*/*",
"unlimitedStorage",
"contextMenus",
"cookies",
"tabs",
"notifications",
"activeTab",
"downloads",
"background"
]
虽然第一种方法下载了一个文件,但它包含
[object Object][object Object][object Object]
我需要将我的 $scope.result 导出到 csv 文件
试试这个
//$scope.result 是 JavaScript 数组。
var csvData = new Blob(JSON.stringify($scope.result), { type: 'text/csv' });
var csvUrl = URL.createObjectURL(csvData);
chrome.downloads.download({ url: csvUrl });
您可以使用 Blob 对象和 Chrome 下载 API 来实现。这是一个例子
let data = [["x", "y"], [10, 20]];
let csvContent = data.map(row => row.join(",")).join("\n");
let csvBlob = new Blob([csvContent], { type: 'text/csv' });
let csvUrl = URL.createObjectURL(csvBlob);
chrome.downloads.download({ url: csvUrl });
你好,我是 Chrome 扩展的新手并在 angularjs 中开发它,我正在尝试将数组转换为 csv 文件并从 Chrome 扩展下载它。
我试过
var csvData = new Blob($scope.result, { type: 'text/csv' });
var csvUrl = URL.createObjectURL(csvData);
chrome.downloads.download({ url: csvUrl });
然后我从 SO
那里得到了另一种方法 var finalVal = '';
for (var i = 0; i < $scope.result.length; i++) {
var value = $scope.result[i];
for (var j = 0; j < value.length; j++) {
var innerValue = value[j]===null?'':value[j].toString();
var result = innerValue.replace(/"/g, '""');
if (result.search(/("|,|\n)/g) >= 0)
result = '"' + result + '"';
if (j > 0)
finalVal += ',';
finalVal += result;
}
finalVal += '\n';
}
console.log(finalVal);
var download = document.getElementById('download');
download.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(finalVal));
download.setAttribute('download', 'test.csv');
但是他们都没有正常工作,我在manifest.json
中有以下权限permissions": [
"http://*/*",
"https://*/*",
"unlimitedStorage",
"contextMenus",
"cookies",
"tabs",
"notifications",
"activeTab",
"downloads",
"background"
]
虽然第一种方法下载了一个文件,但它包含
[object Object][object Object][object Object]
我需要将我的 $scope.result 导出到 csv 文件
试试这个 //$scope.result 是 JavaScript 数组。
var csvData = new Blob(JSON.stringify($scope.result), { type: 'text/csv' });
var csvUrl = URL.createObjectURL(csvData);
chrome.downloads.download({ url: csvUrl });
您可以使用 Blob 对象和 Chrome 下载 API 来实现。这是一个例子
let data = [["x", "y"], [10, 20]];
let csvContent = data.map(row => row.join(",")).join("\n");
let csvBlob = new Blob([csvContent], { type: 'text/csv' });
let csvUrl = URL.createObjectURL(csvBlob);
chrome.downloads.download({ url: csvUrl });