最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java生成word文檔的示例詳解

 更新時間:2022年12月13日 14:32:10   作者:步爾斯特  
這篇文章主要為大家詳細介紹了如何利用Java語言生成word文檔,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的小伙伴可以參考一下

目標

依賴

<!--  poi工具類-->
    <dependency>
        <groupId>com.deepoove</groupId>
        <artifactId>poi-tl</artifactId>
        <version>1.12.0</version>
    </dependency>

模版

實體

實體類需要和模版內(nèi)的動態(tài)字段對應

代碼

 @GetMapping(value = "/all")
    @SneakyThrows
    public void table(All all, HttpServletResponse response) {

        /* 假數(shù)據(jù) */
        all.setCode("2022-12-ABC");
        all.setBuyer("步爾斯特航天有限公司");
        String[][] strings = new String[100][5];
        for (int i = 0; i < 100; i++) {
            strings[i] = new String[]{i + "", "黃金", "100", "人民幣", "125"};
        }
        all.setTableArray(strings);

        // 模版路徑
        String wordPath = "/Users/issavior/java/java/seckill-redis/test/src/main/resources/";
        String modelName = "all.docx";

        String c = "購買方(Buyer): \n" +
                "名稱(Name):" + all.getBuyer() + "\n" +
                "地址(Address):杭州市余杭區(qū)大東路100號\n" +
                "電話(Tel.):021-20855588\n" +
                "\n" +
                "銷售方(Seller):\n" +
                "名稱(Name):杭州火箭制造有限公司\n" +
                "地址(Address):杭州市余杭區(qū)大東路919號\n" +
                "電話(Tel.):021-20855553\n" +
                "開戶行(Bank):中國農(nóng)業(yè)銀行杭州支行\(zhòng)n" +
                "賬號(Account No.):033270-00873333567";

        // 手繪表格
        // 表頭
        RowRenderData row0 = Rows.of(c, "", "", "", "").textBold().create();
        RowRenderData row1 = Rows.of("序號", "名稱", "數(shù)量", "貨幣", "價格").center().create();

        int length = 0;
        if (all.getTableArray() != null) {
            length = all.getTableArray().length;
        }
        // 表格數(shù)據(jù) 加上2行表頭 再加上最后一行總價
        RowRenderData[] rowRenderData = new RowRenderData[length + 3];
        rowRenderData[0] = row0;
        rowRenderData[1] = row1;
        // 計算價錢
        BigDecimal totalPrice = new BigDecimal("0");
        for (int i = 0; i < length; i++) {
            rowRenderData[i + 2] = Rows.of(all.getTableArray()[i]).center().create();
            String s = all.getTableArray()[i][4];
            BigDecimal bigDecimal = new BigDecimal(s);
            totalPrice = totalPrice.add(bigDecimal);
        }

        RowRenderData row4 = Rows.of("總價:" + totalPrice, "", "", "小寫", totalPrice.toString()).center().create();
        rowRenderData[rowRenderData.length - 1] = row4;
        // 表格合并,根據(jù)坐標
        MergeCellRule rule = MergeCellRule.builder().map(MergeCellRule.Grid.of(0, 0), MergeCellRule.Grid.of(0, 4)).
//                map(MergeCellRule.Grid.of(0, 1), MergeCellRule.Grid.of(1, 1)).
//                map(MergeCellRule.Grid.of(0, 2), MergeCellRule.Grid.of(0, 3)).
//                map(MergeCellRule.Grid.of(0, 4), MergeCellRule.Grid.of(1, 4)).
                map(MergeCellRule.Grid.of(rowRenderData.length - 1, 0), MergeCellRule.Grid.of(rowRenderData.length - 1, 2)).
                build();

        TableRenderData table = Tables.of(rowRenderData).mergeRule(rule).create();
        // 數(shù)據(jù)封裝
        all.setTableRenderData(table);
        // 傳入模板模板地址+信息數(shù)據(jù)
        XWPFTemplate template = XWPFTemplate.compile(wordPath + modelName).render(all);
        // 指定下載的文件名--設置響應頭
        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("發(fā)票.docx", "UTF-8"));
        response.setContentType("application/vnd.ms-excel;charset=UTF-8");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        try {
            OutputStream out = response.getOutputStream();
            BufferedOutputStream bos = new BufferedOutputStream(out);
            template.write(out);
            bos.flush();
            out.flush();
            template.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

到此這篇關(guān)于Java生成word文檔的示例詳解的文章就介紹到這了,更多相關(guān)Java生成word文檔內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring中@PostConstruct的實現(xiàn)方法

    Spring中@PostConstruct的實現(xiàn)方法

    大多數(shù)java程序員都使用過@PostConstruct注解,它的作用就是在Bean初始化完成后執(zhí)行,相當于我們常說的init()方法,但是我們看@PostConstruct只有單單的一個注解,它到底是如何實現(xiàn)在Bean初始化完成后就被調(diào)用的呢,本文將詳細給大家介紹一下
    2023-06-06
  • SpringbootJPA分頁 PageRequest過時的替代方法

    SpringbootJPA分頁 PageRequest過時的替代方法

    這篇文章主要介紹了SpringbootJPA分頁 PageRequest過時的替代方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring源碼解析 Bean的實例化

    Spring源碼解析 Bean的實例化

    這篇文章主要介紹了Spring源碼解析 Bean的實例化,文章圍繞主題展開詳細的內(nèi)容介紹沒具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • IDEA快速搭建jsp項目的圖文教程

    IDEA快速搭建jsp項目的圖文教程

    這篇文章主要介紹了IDEA快速搭建jsp項目的圖文教程,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • SpringBoot實現(xiàn)全局異常的封裝和統(tǒng)一處理

    SpringBoot實現(xiàn)全局異常的封裝和統(tǒng)一處理

    在Spring Boot應用中,全局異常的處理是一個非常重要的方面,本文主要為大家詳細介紹了如何在Spring Boot中進行全局異常的封裝和統(tǒng)一處理,需要的可以參考下
    2023-12-12
  • RocketMQ NameServer 核心源碼解析

    RocketMQ NameServer 核心源碼解析

    這篇文章主要為大家介紹了RocketMQ NameServer 核心源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Java使用dom4j解析xml、讀取xml文件圖文教程

    Java使用dom4j解析xml、讀取xml文件圖文教程

    這篇文章主要給大家介紹了關(guān)于Java使用dom4j解析xml、讀取xml文件的相關(guān)資料,包括創(chuàng)建SAXReader對象、讀取并解析XML文件、獲取Document對象、獲取根元素和子元素、獲取屬性和內(nèi)容等操作,還提供了配置Dom4j?jar包的步驟,需要的朋友可以參考下
    2025-02-02
  • 關(guān)于bigDecimal類的精度保留方法

    關(guān)于bigDecimal類的精度保留方法

    這篇文章主要介紹了關(guān)于bigDecimal類的精度保留方法,計算機存儲的浮點數(shù)受存儲bit位數(shù)影響,只能保證一定范圍內(nèi)精準,超過bit范圍的只能取近似值,Java使用java.math.BigDecimal專門處理小數(shù)精度,需要的朋友可以參考下
    2023-07-07
  • SpringCache的基本使用方法

    SpringCache的基本使用方法

    Spring?Cache利用了AOP,實現(xiàn)了基于注解的緩存功能,并且進行了合理的抽象,業(yè)務代碼不用關(guān)心底層是使用了什么緩存框架,只需要簡單地加一個注解,就能實現(xiàn)緩存功能了,本文介紹SpringCache的基本使用方法,感興趣的朋友一起看看吧
    2024-01-01
  • java多線程編程之使用thread類創(chuàng)建線程

    java多線程編程之使用thread類創(chuàng)建線程

    在Java中創(chuàng)建線程有兩種方法:使用Thread類和使用Runnable接口。在使用Runnable接口時需要建立一個Thread實例
    2014-01-01

最新評論

沂南县| 塘沽区| 上栗县| 枞阳县| 黄浦区| 京山县| 比如县| 临城县| 兴宁市| 隆昌县| 沧源| 卫辉市| 大新县| 吴川市| 湖南省| 汝城县| 上杭县| 咸丰县| 永修县| 长岛县| 中牟县| 和林格尔县| 唐海县| 灵武市| 韩城市| 蒙自县| 疏勒县| 同心县| 鄂州市| 怀仁县| 保亭| 元谋县| 武鸣县| 葫芦岛市| 临沂市| 锡林浩特市| 曲沃县| 大化| 合作市| 荥经县| 武安市|