用原生js写过多个excel合并成一个表,然后一键导出
时间: 2023-10-02 17:12:35 浏览: 169
通过js导出excel
5星 · 资源好评率100%
可以使用js-xlsx库来读取和合并多个excel文件,并使用FileSaver.js库将合并后的表格导出为Excel文件。
以下是一个简单的示例:
首先,将这两个库引入到你的HTML文件中:
```html
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.16.9/xlsx.full.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js"></script>
```
然后,创建一个函数来读取和合并多个excel文件:
```javascript
function mergeExcels(files) {
var wb = null;
files.forEach(function(file) {
var reader = new FileReader();
reader.readAsBinaryString(file);
reader.onload = function(e) {
var data = e.target.result;
var tmp = XLSX.read(data, { type: 'binary' });
if (wb === null) {
wb = tmp;
} else {
wb.SheetNames.push.apply(wb.SheetNames, tmp.SheetNames);
wb.Sheets = Object.assign(wb.Sheets, tmp.Sheets);
}
};
});
setTimeout(function() {
var mergedData = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
saveAs(new Blob([s2ab(mergedData)], { type: 'application/octet-stream' }), 'merged.xlsx');
}, 1000);
}
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i = 0; i < s.length; i++) {
view[i] = s.charCodeAt(i) & 0xff;
}
return buf;
}
```
这个函数接受一个包含多个excel文件的数组作为输入。它使用FileReader API读取每个文件,并使用js-xlsx库将它们合并到一个工作簿中。最后,它使用FileSaver.js库将合并后的表格保存为Excel文件。
最后,创建一个input元素,允许用户选择多个excel文件,并在选择文件后调用mergeExcels函数:
```html
<input type="file" id="fileInput" multiple>
<script>
document.getElementById('fileInput').addEventListener('change', function(e) {
mergeExcels(e.target.files);
});
</script>
```
这样,当用户选择多个excel文件后,它们将被合并为一个工作簿,并导出为一个Excel文件。
阅读全文