女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

EasyExcel碰到問題記錄

京東云 ? 來源:京東工業 孫磊 ? 作者:京東工業 孫磊 ? 2025-01-13 13:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:京東工業 孫磊

1、富文本中文字設置不同顏色和字體不生效

                String stringCellValue = cell.getStringCellValue();
                if (StringUtils.isNotBlank(stringCellValue) && stringCellValue.contains(startIndex) && stringCellValue.contains(endIndex)) {
                    RichTextString richStringCellValue = cell.getRichStringCellValue();
                    Font redFont = workbook.createFont();
                    redFont.setColor(IndexedColors.RED.getIndex());

                    if (richStringCellValue instanceof XSSFRichTextString) {
                        XSSFRichTextString xssfRichTextString = new XSSFRichTextString(cell.getStringCellValue());
                        xssfRichTextString.applyFont(stringCellValue.indexOf(startIndex),stringCellValue.indexOf(endIndex) +endIndex.length() ,redFont);
                        cell.setCellValue(xssfRichTextString);
                    } else if (richStringCellValue instanceof HSSFRichTextString) {
                        HSSFRichTextString hssfRichTextString = new HSSFRichTextString(cell.getStringCellValue());
                        hssfRichTextString.applyFont(stringCellValue.indexOf(startIndex),stringCellValue.indexOf(endIndex) +endIndex.length() ,redFont);
                        cell.setCellValue(hssfRichTextString);
                    }
                    cellStyle.setFont(redFont);
                } else {
                    // 清空樣式
                    cell.setCellStyle(cellStyle);
                }

上面代碼設置了富文本指定范圍的文字設置新的字體,但是生成的文件還是不生效。

EasyExcelFactory.write(new File(pathName)).head(titleList())
        .inMemory(Boolean.TRUE)  // 指定這個屬性為true,才支持富文本和注釋
        .registerWriteHandler(new HeadRowWriteHandler()).sheet(0).doWrite(Lists.newArrayList());

原因:

在 EasyExcel 中,inMemory 方法用于設置是否在內存中生成 Excel 文件。默認情況下,EasyExcel 會在磁盤上創建一個緩存文件,然后將數據寫入這個緩存文件,最后再將緩存文件寫入到 Excel 文件中。

如果你調用 inMemory(true),EasyExcel 將會在內存中生成 Excel 文件,而不是使用緩存文件。這意味著:

1.更快的寫入速度:因為不需要頻繁地讀寫磁盤,內存模式下的寫入速度通常會更快。

2.支持 Comment 和 RichTextString:如果你需要在單元格中添加注釋或使用富文本字符串,這些功能只能在內存模式下使用。

3.限制大文件寫入:內存模式下,所有的數據都會被加載到內存中,這可能會導致內存溢出問題,特別是當你處理大型數據集時。

使用內存模式的主要優點是它可以支持更復雜的單元格操作,如添加注釋或使用富文本字符串。然而,如果你的數據量很大,可能需要避免使用內存模式以防止內存問題。

?

2、凍結單元格

可以通過sheet.createFreezePane(column,row);方法指定凍結的列和行索引

import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import org.apache.poi.ss.usermodel.Sheet;

import java.util.Objects;

/**
 * 凍結單元格
 **/
public class FreezePaneWriteHandler implements SheetWriteHandler {

    private int column;

    private int row;

    public FreezePaneWriteHandler(Integer column, Integer row) {
        this.column = column;
        this.row = row;
    }

    @Override
    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
        Sheet sheet = writeSheetHolder.getSheet();
        if (Objects.nonNull(sheet)) {
            sheet.createFreezePane(column,row);
        }
    }
}

3、不合并單元格

Easyexcel使用中,生成多行表頭模版時,同一行如果多個列內容一樣,會被自動合并單元格,要避免這個問題,需要通過特殊處理。

import com.alibaba.excel.constant.OrderConstant;
import com.alibaba.excel.write.handler.RowWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;

import java.util.Set;

/**
 * 表頭不合并策略
 * @author sunlei61
 * @date 2024/8/17
 **/
public class HeadNoMergeWriteHandler implements RowWriteHandler {
    /**
     * 指定哪些行需要合并單元格
     */
    private Set rowNum;
    /**
     * 排除哪些不合并單元格的行
     */
    private Set excludeRowNum;

    @Override
    public int order() {
        return OrderConstant.FILL_STYLE + 3;
    }

    public HeadNoMergeWriteHandler(){}

    public HeadNoMergeWriteHandler(Set rowNum){
        this.rowNum = rowNum;
    }

    public HeadNoMergeWriteHandler(Set rowNum, Set excludeRowNum){
        this.rowNum = rowNum;
        this.excludeRowNum = excludeRowNum;
    }

    @Override
    public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) {
       if (!isHead){
           return;
       }

        if (CollectionUtils.isEmpty(rowNum) || rowNum.contains(row.getRowNum())) {
            // 如果是表頭,取消合并
            Sheet sheet = writeSheetHolder.getSheet();
            int totalMergedRegions = sheet.getNumMergedRegions();
            for (int i = totalMergedRegions - 1; i >= 0; i--) {
                CellRangeAddress mergedRegion = sheet.getMergedRegion(i);
                if (CollectionUtils.isEmpty(excludeRowNum) || !excludeRowNum.contains(mergedRegion.getFirstRow())) {
                    sheet.removeMergedRegion(i);
                }
            }
        }
    }
}

4、列寬自適應寬度

生成表格列比較多,制定特定的寬度會讓表格很長,即使單元格內容一個字,也會很寬,不是很友好,可以通過設置sheet的自適應寬度來設置。

import com.alibaba.excel.write.handler.RowWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;

import java.util.Set;

/**
 * 列寬度自動適應
 * @author sunlei61
 * @date 2024/9/26
 **/
public class AutoSizeColumnWriterHandler implements RowWriteHandler {
    /**不需要自動適用寬度的列集合*/
    private Set excludeColumns;

    public AutoSizeColumnWriterHandler(){
    }

    public AutoSizeColumnWriterHandler(Set excludeColumns) {
       this.excludeColumns = excludeColumns;
    }

    @Override
    public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) {
        Integer sheetNo = writeSheetHolder.getSheetNo();
        if (sheetNo == 0 ) {
            Sheet sheet = writeSheetHolder.getSheet();
            int columns = row.getPhysicalNumberOfCells();
            for (int i = 0; i < columns; i++) {
                if (CollectionUtils.isNotEmpty(excludeColumns) && excludeColumns.contains(i)) {
                    continue;
                }
                sheet.autoSizeColumn(i);
            }
        }
    }
}

審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Excel
    +關注

    關注

    4

    文章

    227

    瀏覽量

    56652
  • 富文本
    +關注

    關注

    0

    文章

    2

    瀏覽量

    1540
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    淺談射頻同軸連接器的失效原因

    同軸產品在使用中總會碰到問題,可能涉及到連接器也可能涉及到安裝的電纜,本期將圍繞總結3個大點8種同軸連接的失效原因,并對不同問題分別進行解析。
    的頭像 發表于 06-04 10:00 ?781次閱讀

    從人工記錄到智能巡檢:云翎智能單北斗記錄儀如何重塑電力巡檢

    從人工記錄到智能巡檢,云翎智能單北斗記錄儀以其高精度定位、實時數據傳輸與智能管理能力,徹底重塑了電力設施的檢查流程。通過北斗衛星導航系統的核心技術優勢,云翎智能單北斗記錄儀實現了對電力巡檢人員的精準
    的頭像 發表于 04-03 14:58 ?298次閱讀
    從人工<b class='flag-5'>記錄</b>到智能巡檢:云翎智能單北斗<b class='flag-5'>記錄</b>儀如何重塑電力巡檢

    如何操作電子溫濕度記錄

    電子溫濕度記錄儀是一種常用的記錄儀產品類型,選用進口傳感器、進口高能鋰電池供電,采用低功耗技術設計,可以外接電源供電,體積小巧,整機功耗小,精度高。被廣泛用于工業、環保、衛生防疫、倉儲運輸、博物館等
    的頭像 發表于 03-25 10:39 ?608次閱讀
    如何操作電子溫濕度<b class='flag-5'>記錄</b>儀

    DS1678實時事件記錄器技術手冊

    DS1678為實時時鐘(RTC)事件記錄儀,用來記錄每次觸發/INT引腳的非周期、異步事件的時間和日期。該器件記錄第一次事件發生時的秒、分、時、星期、日期、月、年及世紀信息,并開啟16位歷時
    的頭像 發表于 02-27 15:27 ?418次閱讀
    DS1678實時事件<b class='flag-5'>記錄</b>器技術手冊

    銀河電氣VFE2000設備長時記錄儀都有哪些作用?# #電工 #電路知識

    記錄
    jf_76563207
    發布于 :2025年02月27日 08:43:17

    湖南銀河電氣VFE2000設備長時運行狀態記錄

    記錄
    jf_97110154
    發布于 :2025年02月18日 16:04:19

    工業自動化采用DeepSeek協助調試PLC通訊

    項目采用IGT-DSER網關實現不用品牌的PLC之間通訊,碰到問題后,丟給DeepSeek用戶手冊后讓它分析: 按照以上操作后一次性解決問題! 相關資料案例:*附件:PLC之間通訊.zip
    發表于 02-10 11:38

    Juniper防火墻配置NAT映射的問題分析

    記錄一下Juniper SSG或者ISG 系列防火墻上配置一對多NAT映射 VIP(Viritual Internet Protocol)時碰到的一個特殊的問題, 就是在內部服務器ICMP報文被阻斷
    的頭像 發表于 10-29 09:55 ?982次閱讀
    Juniper防火墻配置NAT映射的問題分析

    求助,關于使用TPA3116D2時碰到的問題求解

    請教下使用TPA3116D2時碰到的問題。 PVCC=24V,在無輸入的情況下,萬用表測到左右聲道的OUTP/N的直流值都不是PVCC/2=12V,而是只有4V。 測到輸入端直流值只有2V,而不是3V。且FAULT一直是高電平,沒有錯誤。 請問這種情況可能的原因有哪些? 謝謝~
    發表于 10-25 06:26

    泰克示波器故障記錄怎么看

    在電子工程師的日常工作中,泰克示波器是一款常用的測試儀器。然而,當示波器出現故障時,如何查看故障記錄就成為了解決問題的關鍵。本文將為你詳細介紹泰克示波器故障記錄的查看方法,幫助你快速定位和解
    的頭像 發表于 09-03 13:49 ?725次閱讀
    泰克示波器故障<b class='flag-5'>記錄</b>怎么看

    記錄到管理:單北斗工作記錄儀如何優化工作流程

    在這個快節奏的時代,每一分效率的提升都是企業競爭力的關鍵。從繁瑣的手工記錄到智能化的數據管理,技術的飛躍正悄然改變著我們的工作方式。頂堅單北斗工作記錄儀如何成為優化工作流程的得力助手,實現從記錄
    的頭像 發表于 08-30 11:09 ?513次閱讀
    從<b class='flag-5'>記錄</b>到管理:單北斗工作<b class='flag-5'>記錄</b>儀如何優化工作流程

    精準記錄,高效分析:單北斗現場記錄儀在各行各業的應用

    在這個信息爆炸、效率至上的時代,每一個細節的記錄與分析都成為了推動行業進步的關鍵力量。單北斗現場記錄儀,作為集高精度定位、高清視頻錄制、智能數據分析于一體的創新設備,正悄然改變著各行各業的作業模式
    的頭像 發表于 08-28 11:46 ?724次閱讀
    精準<b class='flag-5'>記錄</b>,高效分析:單北斗現場<b class='flag-5'>記錄</b>儀在各行各業的應用

    使用INA199是碰到小電流采樣線性度較差的問題求解

    在使用INA199是碰到小電流采樣線性度較差的問題,由于采樣電阻小,電流值小,輸入的幅值比較小,工程師幫忙判斷是否是輸入幅值過小導致輸出放大后電壓線性度不達標。 IN+與IN-兩端電壓差值為43uV
    發表于 08-02 10:11

    行車記錄儀的輻射整改案例

    安裝行車記錄儀后,能夠記錄汽車行駛全過程的視頻圖像和聲音,可為交通事故提供證據。喜歡自駕游的人,還可以用它來記錄征服艱難險阻的過程。開車時邊走邊錄像,同時把時間、速度、所在位置都記錄
    的頭像 發表于 07-23 14:57 ?878次閱讀
    行車<b class='flag-5'>記錄</b>儀的輻射整改案例