forked from fanruan/easyexcel
zhuangjiaju
5 years ago
22 changed files with 396 additions and 46 deletions
@ -0,0 +1,17 @@
|
||||
package com.alibaba.excel.enums; |
||||
|
||||
/** |
||||
* The types of write last row |
||||
* |
||||
* @author zhuangjiaju |
||||
**/ |
||||
public enum WriteLastRowType { |
||||
/** |
||||
* Tables are created without templates ,And any data has been written; |
||||
*/ |
||||
EMPTY, |
||||
/** |
||||
* It's supposed to have data in it.Tables are created with templates ,or any data has been written; |
||||
*/ |
||||
HAVE_DATA,; |
||||
} |
@ -0,0 +1,33 @@
|
||||
package com.alibaba.easyexcel.test.core.head; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
import org.junit.Assert; |
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
|
||||
import com.alibaba.excel.context.AnalysisContext; |
||||
import com.alibaba.excel.event.AnalysisEventListener; |
||||
import com.alibaba.fastjson.JSON; |
||||
|
||||
/** |
||||
* @author zhuangjiaju |
||||
*/ |
||||
public class ComplexDataListener extends AnalysisEventListener<ComplexHeadData> { |
||||
private static final Logger LOGGER = LoggerFactory.getLogger(ComplexHeadData.class); |
||||
List<ComplexHeadData> list = new ArrayList<ComplexHeadData>(); |
||||
|
||||
@Override |
||||
public void invoke(ComplexHeadData data, AnalysisContext context) { |
||||
list.add(data); |
||||
} |
||||
|
||||
@Override |
||||
public void doAfterAllAnalysed(AnalysisContext context) { |
||||
Assert.assertEquals(list.size(), 1); |
||||
ComplexHeadData data = list.get(0); |
||||
Assert.assertEquals(data.getString4(), "字符串4"); |
||||
LOGGER.debug("First row:{}", JSON.toJSONString(list.get(0))); |
||||
} |
||||
} |
@ -0,0 +1,22 @@
|
||||
package com.alibaba.easyexcel.test.core.head; |
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @author zhuangjiaju |
||||
*/ |
||||
@Data |
||||
public class ComplexHeadData { |
||||
@ExcelProperty({"顶格", "顶格", "两格"}) |
||||
private String string0; |
||||
@ExcelProperty({"顶格", "顶格", "两格"}) |
||||
private String string1; |
||||
@ExcelProperty({"顶格", "四联", "四联"}) |
||||
private String string2; |
||||
@ExcelProperty({"顶格", "四联", "四联"}) |
||||
private String string3; |
||||
@ExcelProperty({"顶格"}) |
||||
private String string4; |
||||
} |
@ -0,0 +1,54 @@
|
||||
package com.alibaba.easyexcel.test.core.head; |
||||
|
||||
import java.io.File; |
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
import org.junit.BeforeClass; |
||||
import org.junit.Test; |
||||
|
||||
import com.alibaba.easyexcel.test.util.TestFileUtil; |
||||
import com.alibaba.excel.EasyExcelFactory; |
||||
|
||||
/** |
||||
* |
||||
* @author zhuangjiaju |
||||
*/ |
||||
public class ComplexHeadDataTest { |
||||
|
||||
private static File file07; |
||||
private static File file03; |
||||
|
||||
@BeforeClass |
||||
public static void init() { |
||||
file07 = TestFileUtil.createNewFile("complexHead07.xlsx"); |
||||
file03 = TestFileUtil.createNewFile("complexHead03.xls"); |
||||
} |
||||
|
||||
@Test |
||||
public void T01ReadAndWrite07() { |
||||
readAndWrite(file07); |
||||
} |
||||
|
||||
@Test |
||||
public void T02ReadAndWrite03() { |
||||
readAndWrite(file03); |
||||
} |
||||
|
||||
private void readAndWrite(File file) { |
||||
EasyExcelFactory.write(file, ComplexHeadData.class).sheet().doWrite(data()).finish(); |
||||
EasyExcelFactory.read(file, ComplexHeadData.class, new ComplexDataListener()).sheet().doRead().finish(); |
||||
} |
||||
|
||||
private List<ComplexHeadData> data() { |
||||
List<ComplexHeadData> list = new ArrayList<ComplexHeadData>(); |
||||
ComplexHeadData data = new ComplexHeadData(); |
||||
data.setString0("字符串0"); |
||||
data.setString1("字符串1"); |
||||
data.setString2("字符串2"); |
||||
data.setString3("字符串3"); |
||||
data.setString4("字符串4"); |
||||
list.add(data); |
||||
return list; |
||||
} |
||||
} |
@ -0,0 +1,38 @@
|
||||
package com.alibaba.easyexcel.test.core.head; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
import org.junit.Assert; |
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
|
||||
import com.alibaba.excel.context.AnalysisContext; |
||||
import com.alibaba.excel.event.AnalysisEventListener; |
||||
import com.alibaba.fastjson.JSON; |
||||
|
||||
/** |
||||
* @author zhuangjiaju |
||||
*/ |
||||
public class ListHeadDataListener extends AnalysisEventListener<Map<Integer, String>> { |
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(NoHeadData.class); |
||||
List<Map<Integer, String>> list = new ArrayList<Map<Integer, String>>(); |
||||
|
||||
@Override |
||||
public void invoke(Map<Integer, String> data, AnalysisContext context) { |
||||
list.add(data); |
||||
} |
||||
|
||||
@Override |
||||
public void doAfterAllAnalysed(AnalysisContext context) { |
||||
Assert.assertEquals(list.size(), 1); |
||||
Map<Integer, String> data = list.get(0); |
||||
Assert.assertEquals(data.get(0), "字符串0"); |
||||
Assert.assertEquals(data.get(1), "1.0"); |
||||
Assert.assertEquals(data.get(2), "2020-01-01 01:01:01"); |
||||
Assert.assertEquals(data.get(3), "额外数据"); |
||||
LOGGER.debug("First row:{}", JSON.toJSONString(list.get(0))); |
||||
} |
||||
} |
@ -0,0 +1,69 @@
|
||||
package com.alibaba.easyexcel.test.core.head; |
||||
|
||||
import java.io.File; |
||||
import java.text.ParseException; |
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
import org.junit.BeforeClass; |
||||
import org.junit.Test; |
||||
|
||||
import com.alibaba.easyexcel.test.util.TestFileUtil; |
||||
import com.alibaba.excel.EasyExcelFactory; |
||||
import com.alibaba.excel.util.DateUtils; |
||||
|
||||
/** |
||||
* |
||||
* @author zhuangjiaju |
||||
*/ |
||||
public class ListHeadDataTest { |
||||
|
||||
private static File file07; |
||||
private static File file03; |
||||
|
||||
@BeforeClass |
||||
public static void init() { |
||||
file07 = TestFileUtil.createNewFile("listHead07.xlsx"); |
||||
file03 = TestFileUtil.createNewFile("listHead03.xls"); |
||||
} |
||||
|
||||
@Test |
||||
public void T01ReadAndWrite07() throws Exception { |
||||
readAndWrite(file07); |
||||
} |
||||
|
||||
@Test |
||||
public void T02ReadAndWrite03() throws Exception { |
||||
readAndWrite(file03); |
||||
} |
||||
|
||||
private void readAndWrite(File file) throws Exception { |
||||
EasyExcelFactory.write(file).head(head()).sheet().doWrite(data()).finish(); |
||||
EasyExcelFactory.read(file).registerReadListener(new ListHeadDataListener()).sheet().doRead().finish(); |
||||
} |
||||
|
||||
private List<List<String>> head() { |
||||
List<List<String>> list = new ArrayList<List<String>>(); |
||||
List<String> head0 = new ArrayList<String>(); |
||||
head0.add("字符串"); |
||||
List<String> head1 = new ArrayList<String>(); |
||||
head1.add("数字"); |
||||
List<String> head2 = new ArrayList<String>(); |
||||
head2.add("日期"); |
||||
list.add(head0); |
||||
list.add(head1); |
||||
list.add(head2); |
||||
return list; |
||||
} |
||||
|
||||
private List<List<Object>> data() throws ParseException { |
||||
List<List<Object>> list = new ArrayList<List<Object>>(); |
||||
List<Object> data0 = new ArrayList<Object>(); |
||||
data0.add("字符串0"); |
||||
data0.add(1); |
||||
data0.add(DateUtils.parseDate("2020-01-01 01:01:01")); |
||||
data0.add("额外数据"); |
||||
list.add(data0); |
||||
return list; |
||||
} |
||||
} |
@ -0,0 +1,14 @@
|
||||
package com.alibaba.easyexcel.test.core.head; |
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @author zhuangjiaju |
||||
*/ |
||||
@Data |
||||
public class NoHeadData { |
||||
@ExcelProperty("字符串") |
||||
private String string; |
||||
} |
@ -1,20 +0,0 @@
|
||||
package com.alibaba.easyexcel.test.core.head; |
||||
|
||||
import org.junit.Test; |
||||
|
||||
/** |
||||
* Order data test |
||||
* |
||||
* @author zhuangjiaju |
||||
*/ |
||||
public class NoHeadData07Test { |
||||
|
||||
@Test |
||||
public void simple() { |
||||
// ExcelWriter writer = EasyExcelFactory.writerBuilder().outputFile(TestFileUtil.createNewWriteFile("order07.xlsx"))
|
||||
// .head(OrderData.class).build();
|
||||
// Sheet sheet = EasyExcelFactory.writerSheetBuilder().sheetNo(0).sheetName("order").build();
|
||||
// writer.write(createData(10000 * 100), sheet);
|
||||
// writer.finish();
|
||||
} |
||||
} |
@ -0,0 +1,33 @@
|
||||
package com.alibaba.easyexcel.test.core.head; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
import org.junit.Assert; |
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
|
||||
import com.alibaba.excel.context.AnalysisContext; |
||||
import com.alibaba.excel.event.AnalysisEventListener; |
||||
import com.alibaba.fastjson.JSON; |
||||
|
||||
/** |
||||
* @author zhuangjiaju |
||||
*/ |
||||
public class NoHeadDataListener extends AnalysisEventListener<NoHeadData> { |
||||
private static final Logger LOGGER = LoggerFactory.getLogger(NoHeadData.class); |
||||
List<NoHeadData> list = new ArrayList<NoHeadData>(); |
||||
|
||||
@Override |
||||
public void invoke(NoHeadData data, AnalysisContext context) { |
||||
list.add(data); |
||||
} |
||||
|
||||
@Override |
||||
public void doAfterAllAnalysed(AnalysisContext context) { |
||||
Assert.assertEquals(list.size(), 1); |
||||
NoHeadData data = list.get(0); |
||||
Assert.assertEquals(data.getString(), "字符串0"); |
||||
LOGGER.debug("First row:{}", JSON.toJSONString(list.get(0))); |
||||
} |
||||
} |
@ -0,0 +1,51 @@
|
||||
package com.alibaba.easyexcel.test.core.head; |
||||
|
||||
import java.io.File; |
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
import org.junit.BeforeClass; |
||||
import org.junit.Test; |
||||
|
||||
import com.alibaba.easyexcel.test.util.TestFileUtil; |
||||
import com.alibaba.excel.EasyExcelFactory; |
||||
|
||||
/** |
||||
* |
||||
* @author zhuangjiaju |
||||
*/ |
||||
public class NoHeadDataTest { |
||||
|
||||
private static File file07; |
||||
private static File file03; |
||||
|
||||
@BeforeClass |
||||
public static void init() { |
||||
file07 = TestFileUtil.createNewFile("noHead07.xlsx"); |
||||
file03 = TestFileUtil.createNewFile("noHead03.xls"); |
||||
} |
||||
|
||||
@Test |
||||
public void T01ReadAndWrite07() { |
||||
readAndWrite(file07); |
||||
} |
||||
|
||||
@Test |
||||
public void T02ReadAndWrite03() { |
||||
readAndWrite(file03); |
||||
} |
||||
|
||||
private void readAndWrite(File file) { |
||||
EasyExcelFactory.write(file, NoHeadData.class).needHead(Boolean.FALSE).sheet().doWrite(data()).finish(); |
||||
EasyExcelFactory.read(file, NoHeadData.class, new NoHeadDataListener()).headRowNumber(0).sheet().doRead() |
||||
.finish(); |
||||
} |
||||
|
||||
private List<NoHeadData> data() { |
||||
List<NoHeadData> list = new ArrayList<NoHeadData>(); |
||||
NoHeadData data = new NoHeadData(); |
||||
data.setString("字符串0"); |
||||
list.add(data); |
||||
return list; |
||||
} |
||||
} |
Loading…
Reference in new issue