欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java生成word文檔的示例詳解

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

目標(biāo)

依賴

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

模版

實體

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

代碼

 @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ù)坐標(biāo)
        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);
        // 指定下載的文件名--設(shè)置響應(yīng)頭
        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)文章

  • 談?wù)凧ava類型中ParameterizedType,GenericArrayType,TypeVariabl,WildcardType

    談?wù)凧ava類型中ParameterizedType,GenericArrayType,TypeVariabl,Wild

    這篇文章主要介紹Java類型中ParameterizedType,GenericArrayType,TypeVariabl,WildcardType的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • springboot支持https請求的實現(xiàn)

    springboot支持https請求的實現(xiàn)

    本文主要介紹了springboot支持https請求的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • java實現(xiàn)動態(tài)驗證碼

    java實現(xiàn)動態(tài)驗證碼

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)動態(tài)驗證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Java實例講解反射機制是怎么一回事

    Java實例講解反射機制是怎么一回事

    Java的反射(reflection)機制是指在程序的運行狀態(tài)中,可以構(gòu)造任意一個類的對象,可以了解任意一個對象所屬的類,可以了解任意一個類的成員變量和方法,可以調(diào)用任意一個對象的屬性和方法
    2022-03-03
  • Servlet+JavaBean+JSP打造Java Web注冊與登錄功能

    Servlet+JavaBean+JSP打造Java Web注冊與登錄功能

    比作MVC的話,控制器部分采用Servlet來實現(xiàn),模型部分采用JavaBean來實現(xiàn),而大部分的視圖采用Jsp頁面來實現(xiàn),接下來我們就來詳細(xì)看看如何用Servlet+JavaBean+JSP打造Java Web注冊與登錄功能
    2016-05-05
  • SpringBoot入坑筆記之spring-boot-starter-web 配置文件的使用

    SpringBoot入坑筆記之spring-boot-starter-web 配置文件的使用

    本篇向小伙伴介紹springboot配置文件的配置,已經(jīng)全局配置參數(shù)如何使用的。需要的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-01-01
  • Java大文件分片上傳超詳細(xì)教程(minio版)

    Java大文件分片上傳超詳細(xì)教程(minio版)

    Minio是一個開源的分布式對象存儲系統(tǒng),它允許用戶在存儲服務(wù)上存儲和檢索數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Java大文件分片上傳(minio版)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • Mybatis通過Spring完成代理類注入的流程分析

    Mybatis通過Spring完成代理類注入的流程分析

    這篇文章主要介紹了Mybatis通過Spring完成代理類注入的流程分析,本文通過實例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • ConstraintValidator類如何實現(xiàn)自定義注解校驗前端傳參

    ConstraintValidator類如何實現(xiàn)自定義注解校驗前端傳參

    這篇文章主要介紹了ConstraintValidator類實現(xiàn)自定義注解校驗前端傳參的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 44條Java代碼優(yōu)化建議

    44條Java代碼優(yōu)化建議

    代碼優(yōu)化的最重要的作用應(yīng)該是:避免未知的錯誤。因此,在寫代碼的時候,從源頭開始注意各種細(xì)節(jié),權(quán)衡并使用最優(yōu)的選擇,將會很大程度上避免出現(xiàn)未知的錯誤,從長遠(yuǎn)看也極大的降低了工作量
    2018-03-03

最新評論