word和excel合并为压缩为.zip文件导出

1.使用docxtemplater实现word文件
https://www.jianshu.com/p/8d4da1bcaa0c

2.使用xlsx实现excel文件
https://www.jianshu.com/p/f01ebe817bd9
3.使用jszip 插件打包为压缩包

import JSZip from 'jszip';
import { saveAs } from 'file-saver';

// 生成Word文档
function generateWordDocument() {
//……
  // 生成一个代表docxtemplater对象的zip文件(不是一个真实的文件,而是在内存中的表示)
  const output= doc.getZip().generate({
    type: "blob",
    mimeType:
      "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
  });

    return output;
}

// 生成Excel文件
function generateExcelFile() {
  // 生成Excel文件的代码逻辑
 //……
  // 生成excel的配置项
        const wopts = {
            // 要生成的文件类型
            bookType: 'xlsx',
            // // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
            bookSST: false,
            type: 'binary'
        }
        const wbout = XLSX.write(workbook, wopts)
        // 将字符串转ArrayBuffer
        function s2ab (s) {
            const buf = new ArrayBuffer(s.length)
            const view = new Uint8Array(buf)
            for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xff
            return buf
        }
        const blob = new Blob([s2ab(wbout)], {
            type: 'application/octet-stream'
        })
return blob
}

// 打包为压缩文件并下载
function downloadReport() {
  const zip = new JSZip();

  // 生成Word文档并添加到压缩包中
  const wordDocument = generateWordDocument();
  zip.file('report.docx', wordDocument);

  // 生成Excel文件并添加到压缩包中
  const excelFile = generateExcelFile();
  zip.file('appendix.xlsx', excelFile);

  // 生成压缩包并下载
  zip.generateAsync({ type: 'blob' })
    .then(function(content) {
      saveAs(content, 'report.zip');
    });
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容