easyexcel导入时读不到数据_easyExcel: 能让你简单方便快速的读写excel,支持列表数据导入,列表数据分页导出,以及模版导出...

1.读取列表数据:

例子请看代码测试,路径: EASYEXCEL\test\com\easyexcel\readlisttest,注意文件路径

代码片段:

类:

@Excel(beginRow=2,inFilePath="d:\\students.xlsx")

public class Students {

@Cell(columnNum="2")

private String name;

@Cell(columnNum="c")//or@Cell(whichCell="C")

private int age;

}

使用:

ReadExcel re = new ReadListExcel<>();

List list = re.read(Students.class);

System.out.println(list);

2.写入列表数据:

a.一个是通用的实现,例子请看代码测试,码路径:EASYEXCEL\test\com\easyexcel\writelistTest 方法为:testCommon

代码片段:

类:

@Excel(beginRow=1,dataHeader="姓名:1,年龄:3,成绩:4",outFilePath="d:\\test.xls")

@Sheet(sheetSize=2,sheetName="测试")

public class Students {

@Cell(columnNum="1")

private String name;

@Cell(columnNum="c")

private int age;

@Cell(columnNum="4")

private double grade;

}

使用:

WriteExcel we = new WriteListExcel();

Map param = new HashMap();

List list = new ArrayList();

list.add(new Students("张三11111111111111111111111111111111111",12,85));

list.add(new Students("李四", 14, 90));

list.add(new Students("王五", 14, 90));

we.write(param, list);

b.另一个是根据自己需求再次调整行的样式,比如合并,例子请看代码测试,路径:EASYEXCEL\test\com\easyexcel\writelistTest 方法为:testCustom

代码片段:

类:

@Excel(beginRow=1,dataHeader="姓名:1,年龄:3,成绩:4",outFilePath="d:\\test.xls")

@Sheet(sheetSize=2,sheetName="测试")

public class Students {

@Cell(columnNum="1")

private String name;

@Cell(columnNum="c")

private int age;

@Cell(columnNum="4")

private double grade;

}

使用:

WriteListExcelHelp weh = new WriteListExcelHelp();

Workbook workbook = new HSSFWorkbook();

Sheet sheet = workbook.createSheet("test");

int beginNum = 1;

MyCellStyle cellStyle = new CommonCellStyle(workbook);

Map param = new HashMap();

List list = new ArrayList();

list.add(new Students("张三",12,85));

list.add(new Students("李四", 14, 90));

weh.generateHeader(sheet, beginNum, cellStyle, Students.class);

for(Students s : list){

Row row = weh.generateBody(sheet, beginNum++, cellStyle, s);

CellRangeAddress cra = new CellRangeAddress(beginNum-1, beginNum-1, 1, 2);

sheet.addMergedRegion(cra);

row.createCell(2).setCellStyle(cellStyle.createCommonTextCellStyle());

}

ExcelUtil.workbookToFile(workbook, "d:\\test1.xls");

注意事项目:

在写放时需要传下面几个参数:

myCellStyle:样式类,不传则为默认实现,样式定义一个样式接口MyCellStyle,如需改动请自己实现。

workbook:workbook实现类,生成excel的文件类型,默认为:hssfworkbook

outFilePath:生成文件路径,可以用注解,如果传,则以传入为主

inFilePath:读取路径,可以用注解,如果传,则以传入为主

beginRow:开始行,可以用注解,如果传,以传入为主

3.写入模版数据,即定义好模版,读取模版并在模版相应位置写入数据,二种实现方案:

a.用标签来定位cell,即在excel模版相应cell上写入标签,例子请看代码测试,路径:EASYEXCEL\test\com\easyexcel\writemodeloflaabletest,注意文件路径

代码片段:

类:

public class Students {

private String name;

private int age;

}

使用:

WriteExcel we = new WriteModelExcel<>();

Map param = new HashMap<>();

param.put("inFilePath", "d:\\model.xlsx");//读取文件的目录必须有,可以传也可以用注解配,如果传以传为主

param.put("outFilePath", "d:\\outmodel.xlsx");//生成路径必须有,可以传也可以用注解配,如果传以传为主

List list = new ArrayList();

list.add(new Students("张三",25));

we.write(param, list);

b.用注解来定位cell,即在类字段上用注解表时位置,如果有注解,以注解实现,例子请看代码测试,路径:EASYEXCEL\test\com\easyexcel\writemodelofannotationtest,注意文件路径

代码片段:

类:

@Excel(inFilePath="d:\\modelann.xlsx",outFilePath="d:\\outmodelann.xlsx")

@Sheet(sheetNum=1)

public class Students {

@Cell(rowNum=1,columnNum="b")

private String name;

@Cell(rowNum=3,columnNum="b")

private int age;

@Ingroe

private double grade;

}

使用:

WriteExcel we = new WriteModelExcel<>();

Map param = new HashMap<>();

List list = new ArrayList();

list.add(new Students("张三",25));

we.write(param, list);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解答这个问题。 首先,你需要在你的Spring Boot项目中添加EasyExcel的依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.4</version> </dependency> ``` 然后,你需要编写一个类来表示你的Excel数据模型,可以像这样: ```java @Data public class ExcelData { private String name; private Integer age; // 其他字段... } ``` 接下来,你需要编写一个Excel导入的Controller,可以像这样: ```java @RestController @RequestMapping("/excel") public class ExcelController { @PostMapping("/import") public String importExcel(@RequestParam("file") MultipartFile file) throws Exception { EasyExcel.read(file.getInputStream(), ExcelData.class, new ExcelDataListener()).sheet().doRead(); return "导入成功"; } private static class ExcelDataListener extends AnalysisEventListener<ExcelData> { private List<ExcelData> list = new ArrayList<>(); @Override public void invoke(ExcelData data, AnalysisContext context) { list.add(data); } @Override public void doAfterAllAnalysed(AnalysisContext context) { // 批量保存数据 } } } ``` 这个Controller中,我们使用`@PostMapping`注解来处理POST请求,使用`@RequestParam`注解来接收文件上传参数。然后,我们通过EasyExcel的`EasyExcel.read(...)`方法来读取Excel文件,使用`ExcelData.class`表示我们要读取Excel数据模型类,使用`new ExcelDataListener()`来指定数据解析的监听器。在`ExcelDataListener`中,我们使用`List`来保存解析出来的数据,然后在`doAfterAllAnalysed`方法中批量保存数据。 最后,你可以向`/excel/import`发送POST请求,上传Excel文件,即可批量导入数据。 希望我的回答能够帮助到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值