我有一个标准格式的 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
}
}
最佳答案
我会选择 strategy design pattern
.
您可以有一个 ISheetConverter
和多个定义其自己的转换逻辑的实现。
它看起来像:
@FunctionalInterface
inferface ISheetConverter {
POJOForSheet convert(SheetStream sheetFromIO);
}
您现有的工厂类还可以根据 sh.getSheetName()
返回适当的 ISheetConverter
class (稍后将进行转换 -上)。
关于java - 读取多张 Excel 的最佳设计模式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51463780/