Java Word导出

EasyWord导出

1、Maven依赖包

  <dependency>
            <groupId>com.sushengren</groupId>
            <artifactId>easyword</artifactId>
            <version>1.1.3</version>
  </dependency>

2、实体类字段绑定

此处是在实体类的字段上写上注解,注解里面的value就是在模板文件里的绑定关系
{name}绑定模板

@WordProperty("名字")
private String name;

@WordProperty("地址")
private String address;

@WordProperty("phone")
private String phone;

@WordProperty("信息")
@ApiModelProperty("信息")
@TableField(exist = false)
List<AttDeviceDemobilizeRecordEntity> recordEntities;





上面list的内容
  @WordProperty("序号")
    @TableField(exist = false)
    @ApiModelProperty(value = "导出排序",hidden = true)
    private Integer idSeq;

    @ApiModelProperty("关联id")
    @TableField(value = "demobilize_id")
    private int demobilizeId;

3、 代码实现

package com.test.controller;

import cn.afterturn.easypoi.word.WordExportUtil;
import com.alibaba.fastjson.JSON;

import com.sushengren.easyword.EasyWord;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
@Api(tags = "导出")
@RequestMapping("/word")
public class WordController {

    @Autowired
    TestService testService;

    @ApiOperation("导出")
    @PostMapping("/download")
    public void download(HttpServletResponse response, Integer id) throws IOException {
         
        if (id == null) {
            return;
        }
        try {

Entity data = Service.getDemobById(id);
            //设置浏览器导出word格式文件
            response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
            response.setCharacterEncoding("utf-8");
            //这里注意要拼接docx后缀,导出什么就拼接什么后缀,不然上测试会报请求错误,格式无法处理错误
            //Invalid content disposition format
            String fileName = "测试.docx";
            response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
            response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");

            Entity data = testService.getById(id);
 

            //以流的形式 获取resources下目中录模板文件
            InputStream file = new ClassPathResource("templates/动复原导出.docx").getInputStream();
            // XWPFDocument word = WordExportUtil.exportWord07(templateFile.getPath(),params);
            EasyWord.of(file).doWrite(data).toOutputStream(response.getOutputStream());

        } catch (Exception e) {
            // 重置response
            response.reset();
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            Map<String, String> map = new HashMap<>(16);
            map.put("status", "failure");
            map.put("message", "下载文件失败" + e.getMessage());
            response.getWriter().println(JSON.toJSONString(map));
        }
    }

}

4、word模板,导出的多条需要选中多的那个表格,并且添加书签,不然只能导出一条记录。(选择书签时不可以把最上面的书签选中,不然一起循环)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EasyJWeb综述 EasyJWeb是基于java技术,用于企业级Java Web应用程序快速开发的MVC框架。框架设计构思来源于国内众多项目实践,框架的设计及实现借鉴当前主要流行的开源Web框架,如Rails、Struts、JSF、Tapestry等,吸取其优点及精华,是一个完全由来自的中国开源爱好者开发,文档及注释全部为中文的开源框架。 EasyJWeb由主要由四个部分组成: 1、核心MVC。EasyJWeb的核心是一个基于模板技术实现的MVC框架;他能让我们用非常简洁的代码写基于Java的Web应用。 2、容器及通用业务逻辑封装。作为一个旨在让基于Java的Web应用程序开发变得直接、快速、简易的框架,EasyJWeb提供了一个IoC容器,并对企业级应用中的一些通用业务逻辑(如分页、查询、DAO等)进行了抽象及封装,提供了一套可以直接操作、应用企业资源的组件及API。 3、代码生成引擎及工具。仅仅依靠一个灵活、简易的MVC核心引擎还不能最大限度的提高开发速度,因此EasyJWeb还提供了一个灵活、易用的代码生成引擎及工具,通过使用代码生成引擎,可以快速完成基于JavaEE平台的企业级应用程序生成。如数据库添删改查(CRUD)代码生成、自动页面模版生成、自动配置文件管理等。 4、EasyJWeb插件体系,项目中的各种实用功能的扩展,可以灵活地通过基于插件的形式安装到EasyJWeb中,提供各种针对性的功能。如ajax实用插件、代码生成插件等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值