中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
easyExcel非模板導(dǎo)出,根據(jù)數(shù)據(jù)類型設(shè)置單元格數(shù)據(jù)格式

看固定模板的設(shè)置格式是這樣的

public class FourListExcelDto {

@ContentStyle(dataFormat = 14)

    @DateTimeFormat("yyyy/M/dd")

    @ExcelProperty({"時間"})

    private Date exportDate;

}


但是非固定模板的是根據(jù)你來的數(shù)據(jù)來生成文件的這樣就無法使用了。

用EasyExcel.write(outputStream).registerWriteHandler(xxx).doWrite(data)生成文件,我們可以自己實現(xiàn)一個registerWriteHandler,去格式化單元格。

新建Handler類,繼承AbstractCellStyleStrategy

public class ExcelCellStyleStrategy extends AbstractCellStyleStrategy {

    /**

     * 單元格格式列表(格式:GENERAL、CURRENCY_¥、CURRENCY_$、DATE、NUMERIC)

     */

    private final List<String> cellDataTypes;

    /**

     * WorkBoot

     */

    private Workbook workbook;

    /**

     * 構(gòu)造方法,創(chuàng)建對象時傳入需要定制的表頭信息隊列

     */

    public ExcelCellStyleStrategy(List<String> cellDataTypes) {

        this.cellDataTypes = cellDataTypes;

    }

    @Override

    protected void initCellStyle(Workbook workbook) {

        // 初始化信息時,保存Workbook對象,轉(zhuǎn)換時需要使用

        this.workbook = workbook;

    }

    @Override

    protected void setHeadCellStyle(Cell cell, Head head, Integer relativeRowIndex) {

// 處理表頭的

    }

    @Override

    protected void setContentCellStyle(Cell cell, Head head, Integer relativeRowIndex) {

        CellStyle cellStyle = workbook.createCellStyle();

        String cellValue = cell.getStringCellValue();

        String dataTypes = cellDataTypes.get(head.getColumnIndex());

        switch (dataTypes) {

            case "DATE":

                // 時間

                if (StrUtil.isNotBlank(cellValue)) {

                    DateTime dateTime = DateUtil.parseDateTime(cellValue);

                    cell.setCellValue(DateUtil.format(dateTime, "yyyy/m/d h:mm"));

                    cellStyle.setDataFormat((short) 164);

                }

                break;

            case "NUMERIC":

                // 數(shù)字

                cell.setCellType(CellType.NUMERIC);

                // cellStyle.setDataFormat((short) 1);

                // 自定義格式

                // 1 -> "0",        表示整數(shù)

                // 2 -> "0.00",     表示浮點數(shù)

                // 3 -> "#,##0",    表示三個數(shù)字加一個","格式的整數(shù)

                // 4 -> "#,##0.00", 表示三個數(shù)字加一個","格式的浮點數(shù)

                if (StrUtil.isBlank(cellValue)) {

                    cell.setCellValue("");

                } else {

                    cell.setCellValue(Integer.parseInt(cellValue));

                }

                break;

            default:

                if (dataTypes.startsWith("CURRENCY_")) {

                    // 貨幣

                    String currency = dataTypes.substring(9);

                    cell.setCellValue(StrUtil.format("{}{}", currency, StrUtil.isBlank(cellValue) ? "-" : cellValue));

                    cellStyle.setDataFormat((short) 42);

                }

                // 默認(rèn)是通用類型,無需額外處理

        }

        cell.setCellStyle(cellStyle);

    }

}


主要看setContentCellStyle方法,創(chuàng)建ExcelCellStyleStrategy時需要把每一列的數(shù)據(jù)類型傳遞過來。

cellStyle.setDataFormat這個有意思,可以好好研究一下。

easypoi支持的自定義格式列表

BuiltinFormats類的_formats列表里的自定義格式才有效,否則就會使用文本格式。

記錄數(shù)據(jù)類型就根據(jù)你實際情況來寫了,下面時我這邊的。根據(jù)業(yè)務(wù)來寫的,別無腦跟!

  

設(shè)置效果

  

貨幣

日期

唯重

關(guān)注

————————————————

版權(quán)聲明:本文為CSDN博主「唯重」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/GMingZhou/article/details/124149506

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
EasyExcel使用及自定義設(shè)置單元格樣式
java完美讀取excel
POI對Excel單元格的格式的設(shè)置參數(shù) | 趙伊凡's Blog
NPOI對excel操作總計
SpringBoot + Ant Design Vue 實現(xiàn) excel 導(dǎo)入功能
利用java操作Excel文件
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服