如标题所述,我当前有一个从SharePoint列表数据创建的CSV文件,为了将此信息显示为电子表格,我想将其转换为Excel XLSX文件。 我更喜欢不依赖第三方库来实现这个目标。 起初,我开始使用ActiveX对象尝试重新创建和/或保存CSV为XLSX,但由于除IE之外的其他浏览器无法使用它,因此存在限制。 我在考虑使用Blob来进行转换? 这就是我卡住的地方。
function createCsv(data) {
var result = "";
if (data == null || data.length == 0) {
return;
}
var columnDelimiter = ',';
var lineDelimiter = '\n';
var keys = Object.keys(data[0]);
// spreadsheet header
result += keys.join(columnDelimiter);
result += lineDelimiter;
// spreadsheet data
data.forEach(function (obj) {
var count = 0;
keys.forEach(function (key) {
if (count > 0) {
result += columnDelimiter;
}
result += obj[key];
count++;
});
result += lineDelimiter;
});
return result;
}
function downloadCsv(csv) {
if (csv == null) {
return;
}
var filename = "test.csv";
csv = "data:text/csv;charset=utf-8," + csv;
var data = encodeURI(csv);
console.log(data);
var link = document.getElementById('csv');
link.setAttribute('href', data);
link.setAttribute('download', filename);
console.log(link);
//displayCsv(csv);
}
function displayCsv() {
// using test csv here
var message = "data:text/csv;charset=utf-8, yo, hey, lol";
//var fileType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
var fileType = "application/msexcel";
var csvFile = new Blob([message], {type: fileType});
var csvUrl = URL.createObjectURL(csvFile);
console.log(csvFile);
console.log(csvUrl);
}
CSV文件可以通过电子表格(下载并在Excel中打开)使用,但我需要一种在网页上将其作为电子表格而不是文本显示的方法,这就是我要转换它的原因。由于我正在SharePoint中使用它,因此可以使用Excel Web部件来显示XLSX文件-但不能像这样打开CSV文件。提前致谢。
iframes
,但问题是浏览器会自动下载我设置为iframe
的src
的链接,而不是显示它。只有当类型设置为 text/plain 时,它才会按预期显示 CSV。 - LaLaLottie