java - 用多张纸阅读 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
}
}
解决方案
您可以有一个ISheetConverter
和多个定义自己的转换逻辑的实现。它看起来像:
@FunctionalInterface
inferface ISheetConverter {
POJOForSheet convert(SheetStream sheetFromIO);
}
此外,您现有的工厂类可以基于(稍后将进行转换)返回适当的ISheetConverter
类。sh.getSheetName()
推荐阅读
- nginx - 根据端口号从入口 nginx 控制器转发到不同的 nginx pod
- python - TypeError:('关键字参数不理解:','vocabulary_size')
- android-studio - 如何在我的 android studio 中更改项目的包名称?
- connection - Nestjs - Typeorm 自定义连接名称
- r - 如何在 shinydahsboardPlus 中更改用户图片?
- sql - 选择在多个地方有孩子的父母
- c - 将结构中的 void 指针转换为结构以访问成员
- python - 如何访问字典内的列表索引
- java - 为什么我在打开玩家库存时收到错误消息?
- flutter - 如何使用 video_player 插件在 Flutter Web 上播放 .m3u8 文件?