国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JAVA excel導出 一對多合并

這篇具有很好參考價值的文章主要介紹了JAVA excel導出 一對多合并。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

JAVA excel導出 一對多合并

需求

最近需要實現(xiàn)一個導出的功能,一對多的數(shù)據(jù) ,需要將部分字段所在列進行多行合并,像下面這樣
java導出excel列合并,excel,java
一開始按照以往的寫法,使用了阿里巴巴的easyExcel框架。因為查看easyExel官方文檔,easyExcel是可以通過簡單的方法實現(xiàn)合并的

  1. 在實體類上加上這個注解@ContentLoopMerge,并使用參數(shù)定義合并參數(shù), 如@ContentLoopMerge(eachRow = 2)代表每隔兩行合并單元格
  2. 再在業(yè)務類中創(chuàng)建merge策略即可實現(xiàn)

具體實現(xiàn)情況如下官方示例

@Getter
@Setter
@EqualsAndHashCode
// 將第6-7行的2-3列合并成一個單元格
// @OnceAbsoluteMerge(firstRowIndex = 5, lastRowIndex = 6, firstColumnIndex = 1, lastColumnIndex = 2)
public class DemoMergeData {
    // 這一列 每隔2行 合并單元格
    @ContentLoopMerge(eachRow = 2)
    @ExcelProperty("字符串標題")
    private String string;
    @ExcelProperty("日期標題")
    private Date date;
    @ExcelProperty("數(shù)字標題")
    private Double doubleData;
}
   /**
     * 合并單元格
     * <p>
     * 1. 創(chuàng)建excel對應的實體對象 參照{@link DemoData} {@link DemoMergeData}
     * <p>
     * 2. 創(chuàng)建一個merge策略 并注冊
     * <p>
     * 3. 直接寫即可
     *
     * @since 2.2.0-beta1
     */
    @Test
    public void mergeWrite() {
        // 方法1 注解
        String fileName = TestFileUtil.getPath() + "mergeWrite" + System.currentTimeMillis() + ".xlsx";
        // 在DemoStyleData里面加上ContentLoopMerge注解
        // 這里 需要指定寫用哪個class去寫,然后寫到第一個sheet,名字為模板 然后文件流會自動關閉
        EasyExcel.write(fileName, DemoMergeData.class).sheet("模板").doWrite(data());

        // 方法2 自定義合并單元格策略
        fileName = TestFileUtil.getPath() + "mergeWrite" + System.currentTimeMillis() + ".xlsx";
        // 每隔2行會合并 把eachColumn 設置成 3 也就是我們數(shù)據(jù)的長度,所以就第一列會合并。當然其他合并策略也可以自己寫
        LoopMergeStrategy loopMergeStrategy = new LoopMergeStrategy(2, 0);
        // 這里 需要指定寫用哪個class去寫,然后寫到第一個sheet,名字為模板 然后文件流會自動關閉
        EasyExcel.write(fileName, DemoData.class).registerWriteHandler(loopMergeStrategy).sheet("模板").doWrite(data());
    }

這種方法有缺點:

合并的單元格數(shù)是固定的。而真實的數(shù)據(jù)是動態(tài)變化的 ,不一定有多少,可能數(shù)量少于設定的值出現(xiàn)空行,也可能數(shù)量超過設定的值 出現(xiàn)不夠的情況
簡單來說 就是這樣 有點丑
java導出excel列合并,excel,java

然后我搜索一下,發(fā)現(xiàn)easyExcel可以實現(xiàn)去掉空行,但是好像比較麻煩 我想早點下班

于是我轉戰(zhàn)了另外一個技術棧 easypoi ,看到這個,我就想到了我之前用過 poi,當時因為發(fā)現(xiàn)了使用更為簡單的easyExcel,就沒再使用poi。通過今天這個需求 ,發(fā)現(xiàn)居然有easypoi,easypoi是在poi基礎上進行了深度的封裝,操作起來非常簡單。
關鍵是 ! 對于我這次一對多導出數(shù)據(jù),easypoi很簡單的就能實現(xiàn)

下面是具體實現(xiàn)方法!

實體類

就是我們平時開發(fā)常見的一對多格式

@Data
public class BaseDTO {

    @Excel(needMerge = true,name = "序號",width = 5)
    private Integer num;

    @Excel(needMerge = true,name = "企業(yè)名稱",width = 30)
    private String companyName;

    @Excel(needMerge = true,name = "企業(yè)類型",width = 18)
    private String type;

    @ExcelCollection(name = "短板指標評分標準")
    private List<ScoreRange> scoreRange;

}

@Data
public class ScoreRange {

    @Excel(name = "評分區(qū)間名稱", width = 60)
    private String scoreRangeName;

    @Excel(name = "分值", width = 10)
    private String scoreRangeValue;

}

業(yè)務類

    public void downloadAnalysisList(HttpServletResponse response) throws Exception {
       String date = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH時mm分ss秒"));
       String fileName = "企業(yè)_" + date;
       //需要導出的數(shù)據(jù),若返回結果不是上述實體BaseDTO,需要做個映射
	   List<BaseDTO> list= getData();
	   ExcelUtils.exportExcel(fileName+".xlsx", response, CultivationAnalysisRateChangeExportDTO.class, result, fileName);
}

導出工具類

隨便百度一下 有很多!

public class ExcelUtils {

    public static void exportExcel(String fileName, HttpServletResponse response, Class<?> pojoClass, List<?> list, String title) {
        ExportParams params = new ExportParams();
        params.setSheetName(title);
        Workbook workbook = ExcelExportUtil.exportExcel(params, pojoClass, list);
        downLoadExcel(fileName, response, workbook);
    }

    public static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {

            fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
            response.setCharacterEncoding("utf-8");
            response.setHeader("content-Type", "application/octet-stream");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
        try {
            workbook.write(response.getOutputStream());
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
}

結果展示

java導出excel列合并,excel,java文章來源地址http://www.zghlxwxcb.cn/news/detail-655719.html

搞定! 下班!只要換條思路 ,就可以不當卷王

到了這里,關于JAVA excel導出 一對多合并的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • <Java導出Excel> 1.0 Java實現(xiàn)Excel動態(tài)模板導出

    <Java導出Excel> 1.0 Java實現(xiàn)Excel動態(tài)模板導出

    思路: 1,先創(chuàng)建動態(tài)模板(必須要在數(shù)據(jù)庫建一張表,可隨時修改模板) 例如: 建表語句: 模板中的字段腳本: 2,編寫一個查詢接口:返回一個List map 注意:order by id 根據(jù)表中字段:id排序的作用是控制導出的EXCEL表中字段列的順序; mapper.xml層: mapper接口層: serviceIm

    2024年02月12日
    瀏覽(19)
  • 【java】EasyPoi導出導入(合并單元格)
  • java poi導入Excel、導出excel

    java poi導入Excel、導出excel ReadPatientExcelUtil PoiUtils FileUtils

    2024年02月15日
    瀏覽(27)
  • Java導出數(shù)據(jù)到Excel

    當今數(shù)據(jù)處理的場景中,Excel仍然是一個不可或缺的工具,用于存儲、分析和共享數(shù)據(jù)。在Java應用程序中,有時候需要將數(shù)據(jù)導出到Excel文件,以便用戶能夠方便地查看和處理數(shù)據(jù)。本文將詳細介紹如何使用Java來導出數(shù)據(jù)到Excel文件。 數(shù)據(jù)分析和可視化: Excel提供了強大的數(shù)

    2024年02月12日
    瀏覽(22)
  • java導出excel(帶圖片)

    java導出excel(帶圖片)

    先看一下導出效果, controller 表頭數(shù)據(jù)一定要放在最前面 ListObject head = Arrays.asList(\\\"姓名\\\",\\\"年齡\\\",\\\"性別\\\",\\\"證件類別\\\",\\\"證件號\\\",\\\"聯(lián)系電話\\\",\\\"地區(qū)\\\",\\\"詳細地址\\\",\\\"報名時間\\\",\\\"所屬分組\\\",\\\"年度\\\",\\\"參賽類別1\\\",\\\"作品名稱1\\\",\\\"作品1\\\",\\\"參賽類別2\\\",\\\"作品名稱2\\\",\\\"作品2\\\"); ListListObject sheetDataList = new

    2024年02月11日
    瀏覽(21)
  • Java使用POI導出Excel

    Java使用POI導出Excel

    在項目開發(fā)中往往需要使用到Excel的導入和導出,導入就是從Excel中導入到DB中,而導出就是從DB中查詢數(shù)據(jù)然后使用POI寫到Excel上。 操作Excel目前比較流行的就是 Apache POI 和阿里巴巴的 easyExcel ! 廢話不多說,開始擼起來?。?! POI官網(wǎng);https://poi.apache.org/ POI官網(wǎng)API:https://poi.

    2024年02月04日
    瀏覽(36)
  • 如何使用Java 實現(xiàn)excel模板導出---多sheet導出?

    如何使用Java 實現(xiàn)excel模板導出---多sheet導出?

    效果展示: maven依賴 相關工具類 **此處省略異常處理類 ExcelReportUtil 類 excel 接口 實現(xiàn)類 excel填充數(shù)據(jù)處理類 excel填充處理類 excel模板處理 實現(xiàn)關鍵代碼展示 通過模板實現(xiàn)導出功能 ExcelReportCreator 中的代碼 導入數(shù)據(jù)案例展示 excel模板批注案例 每個sheet頁都需要寫批注,通過批

    2024年02月15日
    瀏覽(24)
  • Java 導出Excel利器 JXLS(excel模板配置教程)

    Java 導出Excel利器 JXLS(excel模板配置教程)

    相信大家能經常性的遇到項目上各類excel的導出,簡單的excel格式,用簡單的poi,easyExcel等工具都能導出。但是針對復雜的excel,有固定的樣式、合并單元格、動態(tài)列等各類要求,導致excel 導出需要花很大一部分精力去寫代碼。jxls在很大程度上解決了以上問題。 這里簡單介紹

    2023年04月08日
    瀏覽(19)
  • java根據(jù)excel模板進行導出數(shù)據(jù)

    java根據(jù)excel模板進行導出數(shù)據(jù)

    ?一、pom文件添加以下依賴 二、添加util包 三、在resources目錄下添加template并添加xlsx模板 ?注意:xlsx模板使用${list.XXX}? ? ?XXX表示數(shù)據(jù)源list(map形式的list)的數(shù)據(jù)key值,如果list是對象形式的,那么就是該業(yè)務字段 ?四、業(yè)務層使用:

    2024年02月11日
    瀏覽(28)
  • Java Poi導出Excel表格詳解

    Java Poi導出Excel表格詳解

    一、導出下面的表格 二、流程詳解 ??????? 1、導出excel需要先將數(shù)據(jù)準備好 ??????? 2、創(chuàng)建工作傅對象SXSSFWorkbook ??????? 3、使用工作傅對象創(chuàng)建sheet對象(工作頁) ??????? 4、使用sheet對象創(chuàng)建行對象row(行對象) ??????? 5、使用row對象創(chuàng)建cell對象(單元格

    2024年02月10日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包