Excel2Entity实现了Java POI对xls文件的读取功能的封装,实现了批量导入Excel中的数据时自动根据Excel中的数据行创建对应的Java POJO实体对象的功能。
该类库也实现了在创建实体对象时对字段类型进行校验,可以对Excel中的数据类型合法性进行校验,通过实现扩展接口,可以实现自定义校验规则以及自定义实体对象字段类型等更加复杂的校验规则和字段类型转换。
该类库主要用应用场景是在一般管理系统中批量数据导入。
Excel2Entity类库已经加入到Maven中央仓库,如果你的项目使用了Maven,则可以通过添加下面的Maven依赖配置项将该类库加入到您的项目.
<dependency> <groupId>cc.aicode.java.e2e</groupId> <artifactId>ExcelToEntity</artifactId> <version>1.0.0.3</version> </dependency>
Excel2Entity依赖于Apache POI类库。
使用示例请参考src/test/java/cc/aicode/e2e/Excel2Entity/AppTest测试用例。
ExcelHelper eh = ExcelHelper.readExcel("111.xls"); List<Demo> entitys = null; try { entitys = eh.toEntitys(Demo.class); for (Demo d : entitys) { System.out.println(d.toString()); } } catch (ExcelParseException e) { System.out.println(e.getMessage()); } catch (ExcelContentInvalidException e) { System.out.println(e.getMessage()); } catch (ExcelRegexpValidFailedException e) { System.out.println(e.getMessage()); }
注册的新的字段类型类必须实现ExcelType抽象类。
ExcelHelper.registerNewType(MyDataType.class);
实体类必须标注@ExcelEntity注解, 同时需要填充的字段标注@ExcelProperty注解
@ExcelEntity public class Demo { @ExcelProperty(value="Name", rule=MyStringCheckRule.class) private String name; @ExcelProperty("Sex") private String sex; // 基于正则表达式的字段校验 @ExcelProperty(value="Age", regexp="^[1-4]{1}[0-9]{1}$", regexpErrorMessage="年龄必须在10-49岁之间") private int age; @ExcelProperty(value="Tel") private Long tel; @ExcelProperty("创建时间") private Timestamp createDate; @ExcelProperty(value="Name", required=true) private MyDataType name2; ... [get/set方法] }
自定义校验规则必须实现ExcelRule接口
public class MyStringCheckRule implements ExcelRule<String> { // 字段检查 public void check(Object value, String columnName, String fieldName) throws ExcelContentInvalidException { String val = (String) value; System.out.println("--------> 检测的列名为 " + columnName + ", 填充的字段名为 " + fieldName ); if(val.length() > 10){ throw new ExcelContentInvalidException("内容超长!"); } } // 结果修改 public String filter(Object value, String columnName, String fieldName) { String val = (String) value; return "[[[[" + val + "]]]"; } }
Excel2Entity Excel2Entity实现了Java POI对xls文件的读取功能的封装,实现了批量导入Excel中的数据时自动根据Excel中的数据行创建对应的Java POJO实体对象的功能。 该类库也实现了在创建实体对象时对字段类型进行校验,可以对Excel中的数据类型合法性进行校验,通过实现扩展接口,可以实现自定义校验规则以及自定义实体对象字段类型等更加复杂的校验规则和字段类型
之前写过一篇使用EasyExcel导出excel到项目服务器中,然后在下载页面点击下载之后根据路径进行下载的。在这篇文章中我将用ResponseEntity直接返回excel到前端,记录一下该方法,同时也给大家一个参考。 1、controller层代码(根据前端的需求来) @GetMapping("/export_excel") public ResponseEntity exportE
@Controller //不能是RestController @RequestMapping("/excel") public class ExcelController { @GetMapping(value = "/export") public ResponseEntity<StreamingResponseBody> resultExport() throws Exc
感谢这篇文章,[Npoi]Npoi导入Excel, 转为Entity 原文章使用了CustomAttribute,本文改为直接用Propertie,写着方便-_-|| 项目场景: C# 使用 NPOI 读取 Excel 转为 Entity 用DataTable存储读取到的Excel数据,再走反射那套操作 解决方案: public class Archive {
Npoi导入Excel Npoi导入Excel其实只要读成DataTable就可以随意操作了, 比如转为Entity… By: 胖纸不争 NetCore群: 743336452 核心代码: public class ExcelImport { public string FilePath { get; set; } public string SheetName { get; s
用于记录,需要的时候进行复制,不对,是进行复习。 之前有写过两个使用HSSFWorkbook导出excel,但是都是基于servlet流的形式。 https://blog.csdn.net/qq_37432174/article/details/98475349 https://blog.csdn.net/qq_37432174/article/details/98475330 我们知道在Spri
后端代码 /** * 小票数据导出 */ @RequestMapping(value = "/export.do" ) public ResponseEntity<byte[]> receiptRawExport(HttpServletRequest request, @RequestBody FilterReceiptDto
在这里插入代码片 package com.example.springboot6.controller; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.Exp
1、工具类ExcelUtil package com.xxx.xxx.utils; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams;
public void exportDictExcel(HttpServletRequest request, HttpServletResponse response, @ApiParam(name = "keywordId",value = "特征词ID",required = true)@RequestParam("keywor
问题内容: 我有一个用户窗体,其中包含5列的列表框。当您单击搜索按钮时,我希望使用SQL表中的搜索结果填充列表框。 使用rs时,我不断收到“类型声明字符与声明的数据类型不匹配”的提示!适用于.RowSource。 问题答案: 您可以在数组中获取记录集,然后像这样填充ListBox。并且由于您是动态填充ListBox的,因此Headers在这里不起作用,但是您可以在ListBox上方添加带有标题的L
我正在制作一组自定义swing组件,这些组件实现各种属性,如标志或。我在尝试填充各种自定义组件的,然后根据每个组件的对列表进行排序时遇到问题。 我试图做到这一点的方法是让我的组件实现一个名为的接口,该接口实现一个方法。然后使用我的
问题内容: 如何用对象类型的列表中的值填充JTable。我的代码如下所示: 我已经有了列,列表将来自schedule变量?考虑这些列,如何将其放到表中? 问题答案: 看一下DefaultTableModel。您可以遍历List并为每一行创建Object数组。
我一直在看教程,我似乎无法得到一个表来填充。我也在使用net beans和scenebuilder。如有任何帮助,我们将不胜感激!挣扎了5个小时。 下面是的代码 以下是我的主要内容:
我试图从数据(ObservableList)中填充tableview2(fx:id tableview)行。但当它完成时,tableview2只显示空记录。在控制台中,我看到数据中的所有行(ObservableList)。我知道stackoverflow中有很多关于这方面的问题,很抱歉(还有我的英语),但请你问我代码中的错误在哪里?感谢您的帮助或关注)。 更新(添加MainPayer.java和更
例如,让我们假设,在表1中,我有以下列 在表2中,我有相同的两列,但有5000行。让我们考虑5行, 现在,在我的工作表2中,我有5000行,A列填充了,但我希望根据工作表1中的值自动填充B列。我尝试过使用间接函数,但没有成功。我使用的公式是,其中test是我的工作表名。谁能告诉我这个问题出在哪里,或者有没有其他方法来解决这个问题?谢谢你。