word下载--前端Vue后端springboot

前端调用:

<template>
  <div>
    <el-button type="primary" @click="reportDownload()">打印报告</el-button>
  </div>
</template>

<script>
import axios from "axios";

export default {

  data() {
    return {
      vulnId: ''
    }
  },
  methods: {
    // 报告打印
    reportDownload() {
      axios.get('http://127.0.0.1:9090/Report/ReportDownloadDocx',  {
        params: {
          vulnId: this.vulnId
        },
        responseType: 'blob'
      }).then(res =>  {

        var filename=res.headers['filename'];
        let blob = new Blob([res.data], {type: `application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8`});
        let objectUrl = URL.createObjectURL(blob);
        let link = document.createElement("a");
        //const fileName = res.headers["content-disposition"].match(/filename=(\S*).docx/)[1];
        //let fname=decodeURIComponent(fileName)+'.docx'
        let fname=decodeURIComponent(filename);
        link.href = objectUrl;
        link.setAttribute("download", fname);
        document.body.appendChild(link);
        link.click();
      });
    }
  }
}
</script>

后端接口:使用poi生成文档

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.springframework.stereotype.Service;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.*;
import java.net.URLEncoder;
import java.time.LocalDate;

@RestController
@RequestMapping("/Report")
public class ReportController {


    @GetMapping("ReportDownloadDocx")
    public void ReportDownloadDocx(Integer vulnId, HttpServletRequest req, HttpServletResponse response) throws IOException {
   
        XWPFDocument doc = new XWPFDocument();// 创建Word文件
        XWPFParagraph topic = doc.createParagraph();// 新建段落
        topic.setAlignment(ParagraphAlignment.CENTER);
        XWPFRun c1 = topic.createRun();
        c1.setText("漏洞报告");
        c1.setColor("000000");
        c1.setFontSize(12);
        c1.addCarriageReturn();

        LocalDate date = LocalDate.now();
        String fileName = vulnId+"-"+ date;

        response.setHeader("Content-Disposition", "attachment;filename=" +URLEncoder.encode(fileName+".docx", "UTF-8"));
        response.setHeader("filename",URLEncoder.encode(fileName+".docx", "UTF-8"));
        response.setHeader("Access-Control-Expose-Headers", "filename");
        response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
        //刷新缓冲
        response.flushBuffer();
        OutputStream outputStream = response.getOutputStream();
        //workbook将Excel写入到response的输出流中,供页面下载该Excel文件
        doc.write(outputStream);
        outputStream.flush();
        outputStream.close();
    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lllllLiangjia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值