正如标题所说,我目前有一个从 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 文件。提前致谢。
最佳答案
尝试在没有库的情况下手动尝试执行此操作将是一项艰巨的任务。虽然 OpenXML 文件的核心是基于 XML 的,但它们也被捆绑/压缩。
我建议看一下 SheetJS。 https://sheetjs.com/
您可以将 CSV 作为输入,然后立即将其写回 XSLX。
关于JavaScript - 将 CSV 转换为 XLSX(最好不使用库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37401510/