-
Notifications
You must be signed in to change notification settings - Fork 6
二、数据导入
wujiuye edited this page May 15, 2020
·
2 revisions
数据导入分两个步骤:
- 创建读取器;
- 创建读取监听器;
- 调用读取器的
read
方法传入读取监听器,开始读取数据;
使用@ExcelCellTitle
注解将bean的字段与表格的列映射,即可使用注解读取监听器AnnotationExcelReaderListener
读取数据;
- 从文件中读取
AbstractExcelReader excelReader = AbstractExcelReader.getReader("/tmp/miniexcel-test.xlsx", true);
从文件中读取不需要指定格式,会根据文件的后缀名创建相应的读取器。注意,文件后缀名必须与文件格式相符,否则无法创建读取器而抛出异常。 第二个参数是指定是否需要读取列标题,就是把第一行当作列标题,如果传入false,则第一行会被当作是数据行。建议传true就可以了,除非表格确实没有标题行,这种情况需要使用自定义读取监听器读取。miniexcel提供的读取器不支持读取没有标题行的表格,因为需要根据标题获取java对象的字段,通过反射为bean赋值。
- 从输入流中读取
// System.in也是InputStream,这里只是举例,这种方式的读取用于web项目中
// 读取xlsx文件:ExcelFileType.XLSX
// 读取xls文件: ExcelFileType.xls
// 读取csv文件:ExcelFileType.csv
AbstractExcelReader excelReader = AbstractExcelReader.getReader(System.in, ExcelFileType.XLS, true);
从输入流中读取需要指定文件格式。
AnnotationExcelReaderListener<DateModel> readerListener = new AnnotationExcelReaderListener<>(DateModel.class);
完成demo如下:
@Test
public void testImportByIn() {
AbstractExcelReader excelReader = AbstractExcelReader.getReader(inputStream, ExcelFileType.XLS, true);
AnnotationExcelReaderListener<DateModel> readerListener = new AnnotationExcelReaderListener<>(DateModel.class);
excelReader.read(readerListener);
List<DateModel> dateModelList = readerListener.getRecords();
// 打印结果
for (DateModel model : dateModelList) {
System.out.println(model);
}
}