首页 > 解决方案 > 用多张纸阅读 excel 的最佳设计模式是什么

问题描述

我有一个标准格式的 excel 表,它将有多个表。我需要阅读 Java 中的工作表并将它们转换为对象并存储在数据库中。我目前正在为此使用简单工厂模式。我正在读取工作表名称并根据工作表名称调用相应的转换器对象。这是实现这一目标的唯一方法还是有更好的方法。下面是示例代码。

FileInputStream fis = new FileInputStream(new File("test.xls"));
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fis);
        int numberOfSheets = hssfWorkbook.getNumberOfSheets();
        for (int i=0; i<numberOfSheets; i++) {
           HSSFSheet sh =  hssfWorkbook.getSheetAt(i);
           String sname = sh.getSheetName();
           switch (sname) {
               case "Test" : //go to test convertor;
               case "Test1": //go to test1 convertor
           }
        }

标签: javadesign-patterns

解决方案


我会和strategy design pattern.

您可以有一个ISheetConverter和多个定义自己的转换逻辑的实现。它看起来像:

@FunctionalInterface
inferface ISheetConverter {
    POJOForSheet convert(SheetStream sheetFromIO);
}

此外,您现有的工厂类可以基于(稍后将进行转换)返回适当的ISheetConverter 类。sh.getSheetName()


推荐阅读