sheet.js插件安装

  1. npm install xlsx

转换方法

file 可以是本地上传的 excel文件,或者是后台返回的文件流;

  1. import XLSX from 'xlsx'
  2. function ExcelToHtml(file) {
  3. return new Promise((resolve, reject) => {
  4. let reader = new FileReader(file)
  5. reader.onload = async function (e) {
  6. let data = e.target.result
  7. const wb = XLSX.read(data, { type: 'binary' })
  8. const res = []
  9. wb.SheetNames.forEach((name) => {
  10. res.push({
  11. name,
  12. sheet: XLSX.utils.sheet_to_html(wb.Sheets[sheetName]),
  13. })
  14. })
  15. return resolve(res)
  16. }).catch(err => {
  17. return reject(err)
  18. })
  19. }

注意事项

当存在空sheet时,sheet_to_html转换错误

image.png
image.png
当读取到空sheet时,该 sheet 不存在 !ref 属性,执行decode_range 方法中的参数 rangeundefined,而 undefined 是没有 indexof 方法,所以代码执行报错。

  1. // 修改xlsx.js源码
  2. function decode_range(range) {
  3. +++ if (typeof range === 'undefined') {
  4. +++ return false
  5. +++ }
  6. }
  7. function sheet_to_html(ws, opts) {
  8. // ...
  9. +++ if (!ws['!ref']) {
  10. +++ return ''
  11. +++ }
  12. // ...
  13. }