import Excel from 'exceljs'
export function exportExcelWithTotal(sheetName, columns, title, conditional, headerArr, data, totalRow, numFmts, merge) {
  var workbook = new Excel.Workbook()
  var sheet = workbook.addWorksheet(sheetName)
  sheet.columns = columns
  const maxColCode = String.fromCharCode(64 + columns.length)
  // 处理标题
  sheet.mergeCells(`A1:${maxColCode}2`)
  sheet.getCell('A1').value = title
  sheet.getCell('A1').alignment = { vertical: 'middle', horizontal: 'center' }
  sheet.getCell('A1').font = { name: 'SimSun', family: 4, size: 13, bold: true }
  sheet.mergeCells(`A3:${maxColCode}3`)
  sheet.getCell('A3').value = conditional
  sheet.getCell('A3').alignment = { vertical: 'middle', horizontal: 'right' }
  // 列头
  sheet.getRow(4).values = headerArr
  sheet.getRow(4).font = { name: 'SimSun', family: 4, size: 11, bold: true }
  sheet.getRow(4).alignment = { vertical: 'middle', horizontal: 'left' }

  sheet.addRows(data)
  numFmts.forEach(element => {
    sheet.getColumn(element.colIndex).numFmt = element.format
  })
  sheet.addRow(totalRow)
  sheet.getRow(data.length + 5).font = { name: 'SimSun', family: 4, size: 11, bold: true }
  if (merge) {
    sheet.mergeCells(merge)
  }
  sheet.eachRow((row, number) => {
    if (number > 3) {
      row.eachCell(cell => {
        cell.alignment = { vertical: 'center', horizontal: 'left' }
        cell.border = {
          top: { style: 'thin' },
          left: { style: 'thin' },
          bottom: { style: 'thin' },
          right: { style: 'thin' }
        }
      })
    }
  })

  workbook.xlsx
    .writeBuffer({
      base64: true
    })
    .then(function(xls64) {
      var data = new Blob([xls64], {
        type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
      })
      if ('msSaveOrOpenBlob' in navigator) {
        window.navigator.msSaveOrOpenBlob(data, `${sheetName} ${title}.xlsx`)
      } else {
        var a = document.createElement('a')
        var url = URL.createObjectURL(data)
        a.href = url
        a.download = `${sheetName} ${title}.xlsx`
        document.body.appendChild(a)
        a.click()
        setTimeout(function() {
          document.body.removeChild(a)
          window.URL.revokeObjectURL(url)
        }, 0)
      }
    })
}
