我的编程空间,编程开发者的网络收藏夹
学习永远不晚

spring boot怎么实现自动输出word文档功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

spring boot怎么实现自动输出word文档功能

这篇文章主要介绍了spring boot怎么实现自动输出word文档功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。

spring boot实现自动输出word文档功能

本文用到Apache POI组件
组件依赖在pom.xml文件中添加

<dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi</artifactId>            <version>4.1.0</version>        </dependency>        <dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi-ooxml</artifactId>            <version>4.1.0</version>        </dependency>

首先创建相关的实体类、编写需要用到的sql查询。

import lombok.Data;// 选择题实体@Datapublic class MultiQuestion {    private Integer questionId;    private String subject;    private String section;    private String answerA;    private String answerB;    private String answerC;    private String answerD;    private String question;    private String level;    private String rightAnswer;    private String analysis; //题目解析    private Integer score; }
import lombok.Data;//填空题实体类@Datapublic class FillQuestion {    private Integer questionId;    private String subject;    private String question;    private String answer;    private Integer score;    private String level;    private String section;    private String analysis; //题目解析 }
import lombok.Data;//判断题实体类@Datapublic class JudgeQuestion {    private Integer questionId;    private String subject;    private String question;    private String answer;    private String level;    private String section;    private Integer score;    private String analysis; //题目解析}

创建好要用到的实体类之后,利用mybatis写sql查询,可以分为两种:1、配置mapper.xml文件路径,在xml文件中编写sql语句。2、直接使用注解。本文使用方法为第二种。

@Mapperpublic interface MultiQuestionMapper {        @Select("select * from multi_question where questionId in (select questionId from paper_manage where questionType = 1 and paperId = #{paperId})")    List<MultiQuestion> findByIdAndType(Integer PaperId);    @Select("select * from multi_question")    IPage<MultiQuestion> findAll(Page page);        @Select("select questionId from multi_question order by questionId desc limit 1")    MultiQuestion findOnlyQuestionId();    @Options(useGeneratedKeys = true,keyProperty = "questionId")    @Insert("insert into multi_question(subject,question,answerA,answerB,answerC,answerD,rightAnswer,analysis,section,level) " +            "values(#{subject},#{question},#{answerA},#{answerB},#{answerC},#{answerD},#{rightAnswer},#{analysis},#{section},#{level})")    int add(MultiQuestion multiQuestion);    @Select("select questionId from multi_question  where subject =#{subject} order by rand() desc limit #{pageNo}")    List<Integer> findBySubject(String subject,Integer pageNo);}
//填空题@Mapperpublic interface FillQuestionMapper {    @Select("select * from fill_question where questionId in (select questionId from paper_manage where questionType = 2 and paperId = #{paperId})")    List<FillQuestion> findByIdAndType(Integer paperId);    @Select("select * from fill_question")    IPage<FillQuestion> findAll(Page page);        @Select("select questionId from fill_question order by questionId desc limit 1")    FillQuestion findOnlyQuestionId();    @Options(useGeneratedKeys = true,keyProperty ="questionId" )    @Insert("insert into fill_question(subject,question,answer,analysis,level,section) values " +            "(#{subject,},#{question},#{answer},#{analysis},#{level},#{section})")    int add(FillQuestion fillQuestion);    @Select("select questionId from fill_question where subject = #{subject} order by rand() desc limit #{pageNo}")    List<Integer> findBySubject(String subject,Integer pageNo);}
//判断题@Mapperpublic interface JudgeQuestionMapper {    @Select("select * from judge_question where questionId in (select questionId from paper_manage where questionType = 3 and paperId = #{paperId})")    List<JudgeQuestion> findByIdAndType(Integer paperId);    @Select("select * from judge_question")    IPage<JudgeQuestion> findAll(Page page);        @Select("select questionId from judge_question order by questionId desc limit 1")    JudgeQuestion findOnlyQuestionId();    @Insert("insert into judge_question(subject,question,answer,analysis,level,section) values " +            "(#{subject},#{question},#{answer},#{analysis},#{level},#{section})")    int add(JudgeQuestion judgeQuestion);    @Select("select questionId from judge_question  where subject=#{subject}  order by rand() desc limit #{pageNo}")    List<Integer> findBySubject(String subject,Integer pageNo);}

写好mapper底层查询后,需要创建service及其实现类来调用mapper底层。例如:

public interface JudgeQuestionService {    List<JudgeQuestion> findByIdAndType(Integer paperId);    IPage<JudgeQuestion> findAll(Page<JudgeQuestion> page);    JudgeQuestion findOnlyQuestionId();    int add(JudgeQuestion judgeQuestion);    List<Integer> findBySubject(String subject,Integer pageNo);}
@Servicepublic class JudgeQuestionServiceImpl implements JudgeQuestionService {    @Autowired    private JudgeQuestionMapper judgeQuestionMapper;    @Override    public List<JudgeQuestion> findByIdAndType(Integer paperId) {        return judgeQuestionMapper.findByIdAndType(paperId);    }    @Override    public IPage<JudgeQuestion> findAll(Page<JudgeQuestion> page) {        return judgeQuestionMapper.findAll(page);    }    @Override    public JudgeQuestion findOnlyQuestionId() {        return judgeQuestionMapper.findOnlyQuestionId();    }    @Override    public int add(JudgeQuestion judgeQuestion) {        return judgeQuestionMapper.add(judgeQuestion);    }    @Override    public List<Integer> findBySubject(String subject, Integer pageNo) {        return judgeQuestionMapper.findBySubject(subject,pageNo);    }}

最后将输出文件方法写在controller层:

@RequestMapping("/exam/exportWord")    public void exportWord(int examCode, HttpServletResponse response) throws FileNotFoundException{    //由于题目应于考试信息对应 所以需要先查出考试信息后根据pageId来查找对应的组卷信息        ExamManage res = examManageService.findById(examCode);        int paperId = res.getPaperId();        List<MultiQuestion> multiQuestionRes = multiQuestionService.findByIdAndType(paperId);   //选择题题库 1        List<FillQuestion> fillQuestionsRes = fillQuestionService.findByIdAndType(paperId);     //填空题题库 2        List<JudgeQuestion> judgeQuestionRes = judgeQuestionService.findByIdAndType(paperId);        //响应到客户端        XWPFDocument document= new XWPFDocument();        //分页        XWPFParagraph firstParagraph = document.createParagraph();        //格式化段落        firstParagraph.getStyleID();        XWPFRun run = firstParagraph.createRun();        int i = 1;        run.setText("一、选择题" + "\r\n"); //换行        for (MultiQuestion multiQuestion : multiQuestionRes) {            String str = multiQuestion.getQuestion();            String str1 = multiQuestion.getAnswerA();            String str2 = multiQuestion.getAnswerB();            String str3 = multiQuestion.getAnswerC();            String str4 = multiQuestion.getAnswerD();            run.setText(i + ". " + str + "\r\n");            run.setText("A. " + str1 + "\r\n");            run.setText("B. " + str2 + "\r\n");            run.setText("C. " + str3 + "\r\n");            run.setText("D. " + str4 + "\r\n");            i++;        }        run.setText("二、填空题" + "\r\n");        for (FillQuestion fillQuestion : fillQuestionsRes) {            String str = fillQuestion.getQuestion();            run.setText(i + ". " + str + "\r\n");            i++;        }        run.setText("三、判断题" + "\r\n");        for (JudgeQuestion judgeQuestion : judgeQuestionRes) {            String str = judgeQuestion.getQuestion();            run.setText(i + ". " + str + "\r\n");            i++;        }        document.createTOC();        try {            //设置相应头            this.setResponseHeader(response, res.getSource() + "试卷.doc");            //输出流            OutputStream os = response.getOutputStream();            document.write(os);            os.flush();            os.close();        } catch (Exception e) {            e.printStackTrace();        }    }        private void setResponseHeader(HttpServletResponse response, String fileName) {        try {            try {                fileName = URLEncoder.encode(fileName, "UTF-8");            } catch (UnsupportedEncodingException e) {                e.printStackTrace();            }            response.setContentType("application/octet-stream;charset=UTF-8");            response.setHeader("Content-Disposition", "attachment;filename="+ fileName);            //遵守缓存规定            response.addHeader("Pargam", "no-cache");            response.addHeader("Cache-Control", "no-cache");        } catch (Exception ex) {            ex.printStackTrace();        }    }

效果:

spring boot怎么实现自动输出word文档功能

感谢你能够认真阅读完这篇文章,希望小编分享的“spring boot怎么实现自动输出word文档功能”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

spring boot怎么实现自动输出word文档功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

spring boot怎么实现自动输出word文档功能

这篇文章主要介绍了spring boot怎么实现自动输出word文档功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。springboot是什么springboot一种全新的
2023-06-14

怎么用C#实现合并Word文档功能

本文小编为大家详细介绍“怎么用C#实现合并Word文档功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用C#实现合并Word文档功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。程序环境本次测试时,在程序
2023-07-04

Spring Boot项目怎么实现Excel导入与导出功能

本文小编为大家详细介绍“Spring Boot项目怎么实现Excel导入与导出功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring Boot项目怎么实现Excel导入与导出功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入
2023-07-02

怎么利用spring boot+WebSocket实现后台主动消息推送功能

这篇文章主要讲解了“怎么利用spring boot+WebSocket实现后台主动消息推送功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用spring boot+WebSocket
2023-06-30

Winform怎么用分页控件实现导出PDF文档功能

本篇内容主要讲解“Winform怎么用分页控件实现导出PDF文档功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Winform怎么用分页控件实现导出PDF文档功能”吧!1、PDF的导出插件使用
2023-07-05

使用Spring注解怎么实现Bean自动装配功能

这篇文章将为大家详细讲解有关使用Spring注解怎么实现Bean自动装配功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。使用须知:1.导入约束:context约束2.配置注解的支持: co
2023-06-14

Android怎么实现自动文本框提示功能

这篇文章主要介绍Android怎么实现自动文本框提示功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下activity_main.xml布局2023-05-30

spring cloud config和bus组件怎么实现自动刷新功能

本篇内容主要讲解“spring cloud config和bus组件怎么实现自动刷新功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spring cloud config和bus组件怎么实现自
2023-06-25

css怎么实现文字过长自动隐藏功能

这篇文章给大家分享的是有关css怎么实现文字过长自动隐藏功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。单行overflow: hidden;text-overflow: ellipsis;white-spac
2023-06-08

Android中怎么实现文本内容自动朗读功能

Android中怎么实现文本内容自动朗读功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android提供了自动朗读支持。自动朗读支持可以对指定文本内容进行朗读,从而发生声音
2023-05-30

Android中怎么仿instagram实现文字自动排版功能

这篇文章主要介绍“Android中怎么仿instagram实现文字自动排版功能”,在日常操作中,相信很多人在Android中怎么仿instagram实现文字自动排版功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
2023-06-04

Python/MySQL怎么实现Excel文件自动处理数据功能

今天小编给大家分享一下Python/MySQL怎么实现Excel文件自动处理数据功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一
2023-07-05

怎么用BAT脚本实现自动上传文件到ftp服务器的功能

这篇文章主要讲解了“怎么用BAT脚本实现自动上传文件到ftp服务器的功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用BAT脚本实现自动上传文件到ftp服务器的功能”吧!代码如下:@E
2023-06-08

怎么使用Android实现打开手机淘宝并自动识别淘宝口令弹出商品信息功能

小编给大家分享一下怎么使用Android实现打开手机淘宝并自动识别淘宝口令弹出商品信息功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.首先我们需要后台帮助我
2023-05-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录