🎨
Andy開發紀錄
  • 關於
    • 自介
  • 設計模式
    • 觀察者模型
    • 有限狀態機
    • 裝飾器模式
  • 其他
    • Scrum敏捷式開發
    • SOLID設計
    • TDD驅動測試開發
    • Event Driven Architecture
    • CQRS命令查詢職責分離
    • Concurrent並行相關
      • Single Thread Execution
      • 共用元件設計
        • CountDownLatchWorkPool
        • IForkWorkService
      • Pattern
        • THREAD-PER-MESSAGE
        • PRODUCER CONSUMER
        • SINGLE THREAD
        • Guarded Suspension 守衛模式
      • IQueue
        • ListQueue
        • BlockQueue
        • OrderBlockQueue
  • 元件設計
    • Sql Help
      • SQL Help Generate
      • StringBuilderGenerator
      • SQL Generate
    • excel工具
    • BDD行為驅動開發
    • 多工設計
      • 多工自動調整Thread數量
    • 常用Design Patten實作
    • Telegram Bot元件
    • 代碼元件
    • HCP API元件
    • 文字解析元件
    • MockitObject
    • 資料驗證元件
    • Zip壓縮工具
    • Sql Code Generate
  • 讀書心得
    • Clean code第一章
  • side project
    • 後端服務
  • IDEA
    • IDEA 外掛推薦
    • IDEA 外掛開發
Powered by GitBook
On this page

Was this helpful?

  1. 元件設計

excel工具

撰寫常用utils,整合共用元件,減少開發速度

提供工具

  • 讀取

    • 客製化轉換(資料結構複雜)

    • Map資料轉換(資料結構單純,請教像是清單)

    • 表頭與表身轉換(有客製化表頭,搭配清單系列)

  • 寫檔案

    • 客製化產製

 <groupId>io.github.h8000572003</groupId>
 <artifactId>excel-commons</artifactId>
 <version>1.0.0</version>

讀取-客製化轉換

try (InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("general.xlsx")) {
    final ExcelBook excelBook = ExcelBook.reader(resourceAsStream);
    GeneralDTO reader = excelBook.reader(this::reader);
    assertThat( reader.getITems().size()).isEqualTo(17);
}
private GeneralDTO reader(IExcelBook workbook) {
final IExcelSheet sheet = workbook.getSheet("work1");
List<GeneralITemDTO> generalITemDTOS = sheet.mapList((row, index) -> {
    final GeneralITemDTO iTemDTO = new GeneralITemDTO(
            new String[]{
                    row.getCell(0).getString(),
                    row.getCell(1).getString(),
                    row.getCell(2).getString(),
                    row.getCell(3).getString(),
                    row.getCell(4).getString(),
                    row.getCell(5).getString(),
                    row.getCell(6).getString(),
            }
    );
    return iTemDTO;

});
GeneralDTO generalDTO = new GeneralDTO();
generalDTO.setITems(generalITemDTOS);
return generalDTO;
}

Map資料轉換(資料結構單純,請教像是清單)

try (InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("general2.xls")) {
           final ExcelMapReaders excelMapReaders = new ExcelMapReaders("work1", "A", "B", "C", "D", "E", "F", "G");
           final ExcelBook excelBook = ExcelBook.reader(resourceAsStream);
           List<Map<String, Object>> reader = excelBook.reader(excelMapReaders);
           assertThat( reader.size()).isEqualTo(17);
}

表頭與表身轉換

try (InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("customer.xls")) {

 final ExcelPointReaders excelPointReaders = new ExcelPointReaders("work1");
 excelPointReaders.addSpace(0, 1,"yyy");
 excelPointReaders.addSpace(0, 3,"mon");


 excelPointReaders.addExtract(0, "Data1");
 excelPointReaders.addExtract(1, "Data2");
 excelPointReaders.addExtract(2, "Data3");
 excelPointReaders.addExtract(4, "Data4");
 excelPointReaders.addExtract(5, "Data5");

 final ExcelBook excelBook = ExcelBook.reader(resourceAsStream);
 final List<ExcelPointValues> reader = excelBook.reader(excelPointReaders);

 assertThat( reader.size()).isEqualTo(4);

}

PreviousSQL GenerateNextBDD行為驅動開發

Last updated 2 years ago

Was this helpful?