forked from fanruan/easyexcel
Jiaju Zhuang
5 years ago
33 changed files with 459 additions and 67 deletions
@ -0,0 +1,52 @@
|
||||
package com.alibaba.excel.converters.url; |
||||
|
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
import java.net.URL; |
||||
|
||||
import com.alibaba.excel.converters.Converter; |
||||
import com.alibaba.excel.enums.CellDataTypeEnum; |
||||
import com.alibaba.excel.metadata.CellData; |
||||
import com.alibaba.excel.metadata.GlobalConfiguration; |
||||
import com.alibaba.excel.metadata.property.ExcelContentProperty; |
||||
import com.alibaba.excel.util.IoUtils; |
||||
|
||||
/** |
||||
* Url and image converter |
||||
* |
||||
* @since 2.1.1 |
||||
* @author Jiaju Zhuang |
||||
*/ |
||||
public class UrlImageConverter implements Converter<URL> { |
||||
@Override |
||||
public Class supportJavaTypeKey() { |
||||
return URL.class; |
||||
} |
||||
|
||||
@Override |
||||
public CellDataTypeEnum supportExcelTypeKey() { |
||||
return CellDataTypeEnum.IMAGE; |
||||
} |
||||
|
||||
@Override |
||||
public URL convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, |
||||
GlobalConfiguration globalConfiguration) { |
||||
throw new UnsupportedOperationException("Cannot convert images to url."); |
||||
} |
||||
|
||||
@Override |
||||
public CellData convertToExcelData(URL value, ExcelContentProperty contentProperty, |
||||
GlobalConfiguration globalConfiguration) throws IOException { |
||||
InputStream inputStream = null; |
||||
try { |
||||
inputStream = value.openStream(); |
||||
byte[] bytes = IoUtils.toByteArray(inputStream); |
||||
return new CellData(bytes); |
||||
} finally { |
||||
if (inputStream != null) { |
||||
inputStream.close(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
} |
@ -0,0 +1,15 @@
|
||||
package com.alibaba.easyexcel.test.demo.read; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 假设这个是你的DAO存储。当然还要这个类让spring管理,当然你不用需要存储,也不需要这个类。 |
||||
* |
||||
* @author Jiaju Zhuang |
||||
**/ |
||||
public class DemoDAO { |
||||
|
||||
public void save(List<DemoData> list) { |
||||
// 如果是mybatis,尽量别直接调用多次insert,自己写一个mapper里面新增一个方法batchInsert,所有数据一次性插入
|
||||
} |
||||
} |
@ -0,0 +1,20 @@
|
||||
package com.alibaba.easyexcel.test.demo.web; |
||||
|
||||
import java.util.List; |
||||
|
||||
import org.springframework.stereotype.Repository; |
||||
|
||||
import com.alibaba.easyexcel.test.demo.read.DemoData; |
||||
|
||||
/** |
||||
* 假设这个是你的DAO存储。当然还要这个类让spring管理,当然你不用需要存储,也不需要这个类。 |
||||
* |
||||
* @author Jiaju Zhuang |
||||
**/ |
||||
@Repository |
||||
public class UploadDAO { |
||||
|
||||
public void save(List<UploadData> list) { |
||||
// 如果是mybatis,尽量别直接调用多次insert,自己写一个mapper里面新增一个方法batchInsert,所有数据一次性插入
|
||||
} |
||||
} |
@ -0,0 +1,42 @@
|
||||
package com.alibaba.easyexcel.test.temp.read; |
||||
|
||||
import java.util.Map; |
||||
|
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
|
||||
import com.alibaba.excel.context.AnalysisContext; |
||||
import com.alibaba.excel.event.AnalysisEventListener; |
||||
import com.alibaba.excel.metadata.CellData; |
||||
import com.alibaba.fastjson.JSON; |
||||
|
||||
/** |
||||
* 模板的读取类 |
||||
* |
||||
* @author Jiaju Zhuang |
||||
*/ |
||||
public class HDListener extends AnalysisEventListener<HeadReadData> { |
||||
private static final Logger LOGGER = LoggerFactory.getLogger(HDListener.class); |
||||
/** |
||||
* 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收 |
||||
*/ |
||||
private static final int BATCH_COUNT = 5; |
||||
|
||||
@Override |
||||
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { |
||||
LOGGER.info("HEAD:{}", JSON.toJSONString(headMap)); |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void invoke(HeadReadData data, AnalysisContext context) { |
||||
LOGGER.info("index:{}", context.readRowHolder().getRowIndex()); |
||||
LOGGER.info("解析到一条数据:{}", JSON.toJSONString(data)); |
||||
} |
||||
|
||||
@Override |
||||
public void doAfterAllAnalysed(AnalysisContext context) { |
||||
LOGGER.info("所有数据解析完成!"); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,18 @@
|
||||
package com.alibaba.easyexcel.test.temp.read; |
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* 临时测试 |
||||
* |
||||
* @author Jiaju Zhuang |
||||
**/ |
||||
@Data |
||||
public class HeadReadData { |
||||
@ExcelProperty("头1") |
||||
private String h1; |
||||
@ExcelProperty({"头", "头2"}) |
||||
private String h2; |
||||
} |
@ -0,0 +1,25 @@
|
||||
package com.alibaba.easyexcel.test.temp.read; |
||||
|
||||
import java.io.File; |
||||
|
||||
import org.junit.Test; |
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
|
||||
import com.alibaba.excel.EasyExcel; |
||||
|
||||
/** |
||||
* 临时测试 |
||||
* |
||||
* @author Jiaju Zhuang |
||||
**/ |
||||
public class HeadReadTest { |
||||
private static final Logger LOGGER = LoggerFactory.getLogger(HeadReadTest.class); |
||||
|
||||
@Test |
||||
public void test() throws Exception { |
||||
File file = new File("D:\\test\\headt1.xlsx"); |
||||
EasyExcel.read(file, HeadReadData.class, new HDListener()).sheet().doRead(); |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue