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

Java使用get請求接收List集合數(shù)據(json)并導出報表問題

 更新時間:2023年11月30日 14:43:02   作者:醉夢年華  
這篇文章主要介紹了Java使用get請求接收List集合數(shù)據(json)并導出報表問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

前言

最近看了一下項目模塊,發(fā)現(xiàn)前同事寫的文件導出的功能很便捷(EasyExcel)。

研究了一下發(fā)現(xiàn)這個功能需求以后變更的可能很大(需求只是導出了一個空模板,沒有數(shù)據),所以預想著給這個功能完善一下,把數(shù)據也跟著導出來(畢竟客戶很可能要這么干)。

當前實現(xiàn)效果如下:

在這里插入圖片描述

在這里插入圖片描述

很明顯,之前導出的只是一個空模板,為了用戶可以便捷更改信息再上傳

話不多說,開始正題

一、實現(xiàn)分析

1、想導出的數(shù)據只是物品明細,數(shù)據量不大、信息相對不算私密,且用戶使用頻繁。所以使用get請求 

2、get請求如何接收list集合數(shù)據參數(shù)呢,將List集合對象轉換為json字符串接收,通過后臺解析即可。(推薦)

3、也可以用@Requestbody注解接收對象,但感覺這樣可能不符合規(guī)范,畢竟@Requestbody多用于post請求(后臺能接到,但這種傳遞方式前臺可能不太方便)

二、Maven依賴(基于EasyExcel實現(xiàn))

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>easyexcel</artifactId>
      <version>3.0.5</version>
    </dependency>
    
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.28</version>
    </dependency>

三、后臺代碼

測試類:

@RestController
@RequestMapping("excel/test")
public class excelTest {

    @GetMapping("fileTest")
    public void downloadTemplate(@RequestParam String json, HttpServletResponse response) {
        String fileName = "測試導出模板";
        String sheetName = "測試導出模板";
        
        // 將json字符串轉換為List集合對象
        List<GoodsDetailExcelEntity> list = JSONArray.parseArray(json, GoodsDetailExcelEntity.class);

        try {
            // 自定義的Excel工具類
            ExcelUtil.writeExcel(response, list, fileName, sheetName, GoodsDetailExcelEntity.class);
        } catch (Exception e) {
            System.out.println(e.getCause());
        }
    }

}

GoodsDetailExcelEntity類

@Data
public class GoodsDetailExcelEntity {

    @ExcelProperty(value = "物資", index = 0)
    private String goods;

    @ExcelProperty(value = "規(guī)格", index = 1)
    private String specs;

    @ExcelProperty(value = "單位", index = 2)
    private String unit;

    @ExcelProperty(value = "單價", index = 3)
    private BigDecimal price;

    @ExcelProperty(value = "數(shù)量", index = 4)
    private Integer number;

    @ExcelProperty(value = "金額", index = 5)
    private BigDecimal money;

    @ExcelProperty(value = "施工部位", index = 6)
    private String constructPosition;

    @ExcelProperty(value = "備注", index = 7)
    private String memo;
}

ExcelUtil類,設置導出的excel樣式

    /**
     * 導出
     * @param response
     * @param data
     * @param fileName
     * @param sheetName
     * @param clazz
     * @throws Exception
     */
    public static void writeExcel(HttpServletResponse response, List<? extends Object> data, String fileName, String sheetName, Class clazz) throws Exception {
        //表頭樣式
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        //設置表頭居中對齊
        headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
        //內容樣式
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        //設置內容靠左對齊
        contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
        HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
        EasyExcel.write(getOutputStream(fileName, response), clazz).excelType(ExcelTypeEnum.XLSX).sheet(sheetName).registerWriteHandler(horizontalCellStyleStrategy).doWrite(data);
    }

    private static OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception {
        fileName = URLEncoder.encode(fileName, "UTF-8");
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf8");
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
        response.addHeader("Access-Control-Expose-Headers", "Content-disposition");

        return response.getOutputStream();
    }

}

四、使用PostMan測試

注意:因為是用get請求 所以{}和[]在postman中會被認為是特殊字符從而轉義

{%7B
}%7D
[%5B
]%5D

不區(qū)分大小寫

因為是導出文件,所以選擇downLoad

接收到json格式的數(shù)據了,接下來就可以為所欲為了

程序跑完彈出窗口下載頁面(在瀏覽器下載)

生成的帶數(shù)據的Excel文件

總結

Excel樣式還是差點意思,大家可以自行設置哈。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • mybatisPlus實現(xiàn)倒序拼接字符串

    mybatisPlus實現(xiàn)倒序拼接字符串

    這篇文章主要介紹了mybatisPlus實現(xiàn)倒序拼接字符串方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • springboot集成gzip和zip數(shù)據壓縮傳輸(適用大數(shù)據信息傳輸)

    springboot集成gzip和zip數(shù)據壓縮傳輸(適用大數(shù)據信息傳輸)

    ?在大數(shù)據量的傳輸中,壓縮數(shù)據后進行傳輸可以一定程度的解決速度問題,本文主要介紹了springboot集成gzip和zip數(shù)據壓縮傳輸,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Spring?Boot集成Elasticsearch全過程

    Spring?Boot集成Elasticsearch全過程

    這篇文章主要介紹了Spring?Boot集成Elasticsearch全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • 詳解Java中的八種單例創(chuàng)建方式

    詳解Java中的八種單例創(chuàng)建方式

    單例設計模式,就是采取一定的方法保證在整個的軟件系統(tǒng)中,對某個類只能存在一個對象實例,并且該類只提供一個取得其對象實例的方法。本文將詳細介紹Java中單例的八種創(chuàng)建方式,需要的可以參考一下
    2022-02-02
  • 使用Guava?Cache原理及最佳實踐

    使用Guava?Cache原理及最佳實踐

    文章介紹了GuavaCache,這是一種支持高并發(fā)的本地緩存,它支持多種回收策略,如基于容量、時間和引用的回收,并提供了自動加載、定時刷新和顯式清除緩存的功能,文章還討論了GuavaCache的適用場景和使用方法,并通過代碼示例和源碼分析,幫助讀者更好地理解和使用GuavaCache
    2025-02-02
  • Java用 Rhino/Nashorn 代替第三方 JSON 轉換庫

    Java用 Rhino/Nashorn 代替第三方 JSON 轉換庫

    本篇文章主要介紹了Java用 Rhino/Nashorn 代替第三方 JSON 轉換庫,非常具有實用價值,需要的朋友可以參考下
    2017-05-05
  • Java中mapstruct mapper轉換器部分字段轉換無效的解決方案

    Java中mapstruct mapper轉換器部分字段轉換無效的解決方案

    在SpringBoot2.1.5項目中,使用MapStruct1.3.0.Final進行實體類字段映射時遇到問題,下面就來具體介紹一下,感興趣的可以了解一下
    2025-10-10
  • java與js代碼互調示例代碼

    java與js代碼互調示例代碼

    用到java和js方法互調,在用HTML5做跨平臺應用開發(fā)時經常會用到,在這里分享一些自己在實際開發(fā)過程中的用法,希望對初學者有所幫助
    2013-07-07
  • Java?Valhalla?Project項目介紹

    Java?Valhalla?Project項目介紹

    這篇文章主要介紹了Java?Valhalla?Project項目介紹,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Java如何獲取真實請求IP

    Java如何獲取真實請求IP

    這篇文章主要介紹了Java如何獲取真實請求IP問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論

万荣县| 开封市| 武威市| 彝良县| 太仓市| 汝州市| 高淳县| 江都市| 如皋市| 竹北市| 上思县| 如东县| 唐山市| 南京市| 白水县| 平凉市| 南平市| 林甸县| 庄浪县| 界首市| 白河县| 革吉县| 垫江县| 石家庄市| 富平县| 肥西县| 谢通门县| 来安县| 咸丰县| 昌都县| 双江| 拉萨市| 松原市| 夏邑县| 鄂伦春自治旗| 大安市| 青阳县| 鄄城县| 望都县| 交口县| 四平市|