|
|
|
@ -7,13 +7,12 @@
|
|
|
|
|
* 单个文件的并发写入、读取 |
|
|
|
|
* 读取图片 |
|
|
|
|
* 宏 |
|
|
|
|
ClassNotFoundException与java.lang.NoClassDefFoundError的区别 |
|
|
|
|
* csv读取(这个后续可能会考虑) |
|
|
|
|
#### 常见问题 |
|
|
|
|
* 关于@Data,读写的对象都用到了[Lombok](https://www.projectlombok.org/),他会自动生成`get`,`set` ,如果不需要的话,自己创建对象并生成`get`,`set` 。 |
|
|
|
|
* 出现`NoSuchMethodException`,`ClassNotFoundException`,`NoClassDefFoundError`极大概率是jar冲突,建议`clean`项目,或者统一`poi` 的版本,理论上来说`easyexcel`兼容poi的`3.17`,`4.0.1`,`4.1.0`所有较新版本 |
|
|
|
|
* 如果在读的时候`Listener`里面需要使用spring的`@Autowired`,给`Listener`创建成员变量,然后在构造方法里面传进去。而别必须不让spring管理`Listener`,每次读取都要`new`一个。 |
|
|
|
|
* 如果用`String`去接收数字,出现小数点等情况,这个是BUG,但是很难修复,后续版本会修复这个问题。目前请使用`@NumberFormat`直接,里面的参数就是调用了java自带的`NumberFormat.format`方法,不知道怎么入参的可以自己网上查询。 |
|
|
|
|
* 如果用`String`去接收数字,出现小数点等情况,这个是BUG,但是很难修复,后续版本会修复这个问题。目前请使用`@NumberFormat`注解,里面的参数就是调用了java自带的`NumberFormat.format`方法,不知道怎么入参的可以自己网上查询。 |
|
|
|
|
#### 详细参数介绍 |
|
|
|
|
有些参数不知道怎么用,或者有些功能不知道用什么参数,参照:[详细参数介绍](/docs/API.md) |
|
|
|
|
#### 开源项目不容易,如果觉得本项目对您的工作还是有帮助的话,请在右上角帮忙点个★Star。 |
|
|
|
@ -291,7 +290,7 @@ public class CustomStringStringConverter implements Converter<String> {
|
|
|
|
|
@Test |
|
|
|
|
public void converterRead() { |
|
|
|
|
String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; |
|
|
|
|
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 然后千万别忘记 finish |
|
|
|
|
// 这里 需要指定读用哪个class去读,然后读取第一个sheet |
|
|
|
|
EasyExcel.read(fileName, ConverterData.class, new ConverterDataListener()) |
|
|
|
|
// 这里注意 我们也可以registerConverter来指定自定义转换器, 但是这个转换变成全局了, 所有java为string,excel为string的都会用这个转换器。 |
|
|
|
|
// 如果就想单个字段使用请使用@ExcelProperty 指定converter |
|
|
|
@ -321,7 +320,7 @@ public class CustomStringStringConverter implements Converter<String> {
|
|
|
|
|
@Test |
|
|
|
|
public void complexHeaderRead() { |
|
|
|
|
String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; |
|
|
|
|
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 然后千万别忘记 finish |
|
|
|
|
// 这里 需要指定读用哪个class去读,然后读取第一个sheet |
|
|
|
|
EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet() |
|
|
|
|
// 这里可以设置1,因为头就是一行。如果多行头,可以设置其他值。不传入也可以,因为默认会根据DemoData 来解析,他没有指定头,也就是默认1行 |
|
|
|
|
.headRowNumber(1).doRead(); |
|
|
|
@ -393,7 +392,7 @@ public class CustomStringStringConverter implements Converter<String> {
|
|
|
|
|
@Test |
|
|
|
|
public void headerRead() { |
|
|
|
|
String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; |
|
|
|
|
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 然后千万别忘记 finish |
|
|
|
|
// 这里 需要指定读用哪个class去读,然后读取第一个sheet |
|
|
|
|
EasyExcel.read(fileName, DemoData.class, new DemoHeadDataListener()).sheet().doRead(); |
|
|
|
|
} |
|
|
|
|
``` |
|
|
|
@ -434,7 +433,7 @@ public class CustomStringStringConverter implements Converter<String> {
|
|
|
|
|
@Test |
|
|
|
|
public void exceptionRead() { |
|
|
|
|
String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; |
|
|
|
|
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 然后千万别忘记 finish |
|
|
|
|
// 这里 需要指定读用哪个class去读,然后读取第一个sheet |
|
|
|
|
EasyExcel.read(fileName, DemoData.class, new DemoHeadDataListener()).sheet().doRead(); |
|
|
|
|
} |
|
|
|
|
``` |
|
|
|
|