import * as XLSX from 'xlsx'; import { saveAs } from 'file-saver'; export const makeExcel = (projects:Array) => { const wb = XLSX.utils.book_new() wb.SheetNames.push("项目列表"); const ws_data = makeWSData(projects); const ws = XLSX.utils.aoa_to_sheet(ws_data); wb.Sheets["项目列表"] = ws const wbout = XLSX.write(wb,{bookType:'xlsx', type: 'binary'}); const d = new Date() const fileTitle = `项目故事 ${formatDate(d)}.xlsx` saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}),fileTitle); } const makeWSData = (projects:Array) =>{ console.log("projects",projects); const out = [ ['项目名称','开始日期','结束日期','省','市','区','项目类型','服务内容','项目成员'], ]; projects.forEach(p =>{ const row = [ p.title as string, p.start_date as string, p.finish_date as string, p.province as string, p.city as string, p.district as string, p.property.join(',') as string, p.services.join(',') as string, p.team.join(',') as string, ] out.push(row) }) return out } const formatDate = (date: Date) =>{ return `${date.getFullYear()}.${date.getMonth()+1}.${date.getDate()}` } const s2ab = (s: string) => { const buf = new ArrayBuffer(s.length); //convert s to arrayBuffer const view = new Uint8Array(buf); //create uint8array as viewer for (let i=0; i