IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Java 实现数据库导出Word -> 正文阅读

[开发测试]Java 实现数据库导出Word

1、导入依赖

        <!--使用POI读取文件-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>

        <!--text-->
        <dependency>
            <groupId>org.eclipse.birt.runtime.3_7_1</groupId>
            <artifactId>com.lowagie.text</artifactId>
            <version>2.1.7</version>
        </dependency>

2、设计所需要导出数据的表结构

?3、编写对应表的实体类

我这里ProBaseEntity是公司框架的接口,可以不需要继承

/**
 * TbHkhb:航空航班表
 * @author zyw
 * @since 2022-03-18 10:31:24
 */
@Data
@ApiModel(value="航空航班表,对应表tb_hkhb",description="适用于新增和修改页面传参")
public class TbHkhb  extends ProBaseEntity<TbHkhb>  {

    private static final long serialVersionUID = 1L;
    /**
     * 主键ID
     */
    @ApiModelProperty(value="id")
    private String id;
    /**
     * 航班时间
     */
    @ApiModelProperty(value="航班时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private java.util.Date hbsj;
    /**
     * 出发地点
     */
    @ApiModelProperty(value="出发地点")
    private String cfdd;
    /**
     * 终点站
     */
    @ApiModelProperty(value="终点站")
    private String zdz;
    /**
     * 航班号
     */
    @ApiModelProperty(value="航班号")
    private String hbh;
    /**
     * 航空公司
     */
    @ApiModelProperty(value="航空公司")
    private String hkgs;
    /**
     * 乘客数量
     */
    @ApiModelProperty(value="乘客数量")
    private String cksl;
    /**
     * 座位数量
     */
    @ApiModelProperty(value="座位数量")
    private String zwsl;


}

4、编写导出word的业务逻辑

  1.  创建word文档 步骤:
     1,建立文档
     2,创建一个书写器
     3,打开文档
     4,向文档中写入数据
     5,关闭文档

这里参数

public String createDocument(String path)

?path是指所需要导出的文件路径,可以在前段让用户选择想要导出的位置

    /**
     * 创建word文档 步骤:
     * 1,建立文档
     * 2,创建一个书写器
     * 3,打开文档
     * 4,向文档中写入数据
     * 5,关闭文档
     */
    /**
     * @方法名称: createDocument
     * @实现功能: 导出航空航班表Word文件 TODO: 方法入参根据页面对象设置
     * @return  java.lang.String
     * @create by zyw at 2022-03-22 14:46:31
     **/
    public String createDocument(String path) {
        // 创建word文档,并设置纸张的大小
        Document document = new Document(PageSize.A4);
        try {
            RtfWriter2.getInstance(document,
                    new FileOutputStream(path+"/航班数据采集表.doc"));

            document.open();

            //设置合同头

            Paragraph ph = new Paragraph();
            Font f = new Font();

            Paragraph p = new Paragraph("航班数据采集表",
                    new Font(Font.NORMAL, 18, Font.BOLDITALIC, new Color(0, 0, 0)));
            p.setAlignment(1);
            document.add(p);
            ph.setFont(f);

            // 设置中文字体
            BaseFont bfFont =
                    BaseFont.createFont("STSongStd-Light",
                            "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            Font chinaFont = new Font();
            /*
             * 创建表格
             */
            Table table = new Table(7);
            table.setBorderWidth(1);
            table.setBorderColor(Color.BLACK);
            table.setPadding(0);
            table.setSpacing(0);

            // 表格的主体
            table.addCell("航班时间");
            table.addCell("出发地点");
            table.addCell("终点站");
            table.addCell("航班号");
            table.addCell("航空公司");
            table.addCell("乘客数量");
            table.addCell("座位数量");

            TbHkhb tbHkhb = new TbHkhb();
            List<TbHkhb> list = dao.findList(tbHkhb);

            for (int i = 0; i < list.size(); i++) {
                table.addCell(new Paragraph(simpleDateFormat.format(list.get(i).getHbsj())));
                table.addCell(new Paragraph(list.get(i).getCfdd()));
                table.addCell(new Paragraph(list.get(i).getZdz()));
                table.addCell(new Paragraph(list.get(i).getHbh()));
                table.addCell(new Paragraph(list.get(i).getHkgs()));
                table.addCell(new Paragraph(list.get(i).getCksl()));
                table.addCell(new Paragraph(list.get(i).getZwsl()));
            }

            document.add(table);
            document.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            try {
                throw new Exception("另一个程序正在使用此文件,进程无法访问。");
            } catch (Exception ex) {
                ex.printStackTrace();
                return "另一个程序正在使用此文件,进程无法访问。";
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (com.itextpdf.text.DocumentException e) {
            e.printStackTrace();
        }
        return "Word文件生成成功...";
    }

5、编写调用接口的控制层

    /**
     * @方法名称: createDocument
     * @实现功能: 导出航空航班表Word文件 TODO: 方法入参根据页面对象设置
     * @return  java.lang.String
     * @create by zyw at 2022-03-22 14:49:31
     **/
    @ApiOperation(value="导出值班值守表Word文件",notes="返回Word文件",response = String.class)
    @PostMapping(value = "/createDocument")
    public String createDocument(@RequestParam @ApiParam(name="path",value="导出路径",required=true)String path){
        try {
            return buildResultStr(buildSuccessResultData(service.createDocument(path)));
        }catch (RuntimeException e){
            logError(log, e);
            return buildResultStr(buildErrorResultData(e));
        }
    }

6、效果图

数据库:

?导出后的Word文档:

?

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:55:28  更:2022-03-30 18:58:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:37:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码