mirror of https://github.com/alibaba/easyexcel
Jiaju Zhuang
5 years ago
committed by
GitHub
8 changed files with 411 additions and 25 deletions
@ -1,11 +0,0 @@ |
|||||||
package com.alibaba.excel.converters; |
|
||||||
|
|
||||||
/** |
|
||||||
* When implementing <code>convertToExcelData</code> method, pay attention to the reference <code>value</code> may be |
|
||||||
* null |
|
||||||
* |
|
||||||
* @author JiaJu Zhuang |
|
||||||
**/ |
|
||||||
public interface NullableObjectConverter<T> extends Converter<T> { |
|
||||||
|
|
||||||
} |
|
@ -0,0 +1,280 @@ |
|||||||
|
package com.alibaba.easyexcel.test.core.handler; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import org.apache.poi.ss.usermodel.Cell; |
||||||
|
import org.apache.poi.ss.usermodel.Row; |
||||||
|
import org.junit.Assert; |
||||||
|
|
||||||
|
import com.alibaba.excel.metadata.CellData; |
||||||
|
import com.alibaba.excel.metadata.Head; |
||||||
|
import com.alibaba.excel.write.handler.CellWriteHandler; |
||||||
|
import com.alibaba.excel.write.handler.RowWriteHandler; |
||||||
|
import com.alibaba.excel.write.handler.SheetWriteHandler; |
||||||
|
import com.alibaba.excel.write.handler.WorkbookWriteHandler; |
||||||
|
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; |
||||||
|
import com.alibaba.excel.write.metadata.holder.WriteTableHolder; |
||||||
|
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; |
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
* |
||||||
|
* @author JiaJu Zhuang |
||||||
|
**/ |
||||||
|
public class WriteHandler implements WorkbookWriteHandler, SheetWriteHandler, RowWriteHandler, CellWriteHandler { |
||||||
|
|
||||||
|
private long beforeCellCreate = 0L; |
||||||
|
private long afterCellCreate = 0L; |
||||||
|
private long afterCellDataConverted = 0L; |
||||||
|
private long afterCellDispose = 0L; |
||||||
|
private long beforeRowCreate = 0L; |
||||||
|
private long afterRowCreate = 0L; |
||||||
|
private long afterRowDispose = 0L; |
||||||
|
private long beforeSheetCreate = 0L; |
||||||
|
private long afterSheetCreate = 0L; |
||||||
|
private long beforeWorkbookCreate = 0L; |
||||||
|
private long afterWorkbookCreate = 0L; |
||||||
|
private long afterWorkbookDispose = 0L; |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, |
||||||
|
Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) { |
||||||
|
if (isHead) { |
||||||
|
Assert.assertEquals(0L, beforeCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(0L, afterCellDispose); |
||||||
|
Assert.assertEquals(1L, beforeRowCreate); |
||||||
|
Assert.assertEquals(1L, afterRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowDispose); |
||||||
|
Assert.assertEquals(1L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(1L, afterSheetCreate); |
||||||
|
Assert.assertEquals(1L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(1L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookDispose); |
||||||
|
beforeCellCreate++; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, |
||||||
|
Head head, Integer relativeRowIndex, Boolean isHead) { |
||||||
|
if (isHead) { |
||||||
|
Assert.assertEquals(1L, beforeCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(0L, afterCellDispose); |
||||||
|
Assert.assertEquals(1L, beforeRowCreate); |
||||||
|
Assert.assertEquals(1L, afterRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowDispose); |
||||||
|
Assert.assertEquals(1L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(1L, afterSheetCreate); |
||||||
|
Assert.assertEquals(1L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(1L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookDispose); |
||||||
|
afterCellCreate++; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, |
||||||
|
CellData cellData, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { |
||||||
|
Assert.assertEquals(1L, beforeCellCreate); |
||||||
|
Assert.assertEquals(1L, afterCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(1, afterCellDispose); |
||||||
|
Assert.assertEquals(1L, beforeRowCreate); |
||||||
|
Assert.assertEquals(1L, afterRowCreate); |
||||||
|
Assert.assertEquals(1L, afterRowDispose); |
||||||
|
Assert.assertEquals(1L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(1L, afterSheetCreate); |
||||||
|
Assert.assertEquals(1L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(1L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookDispose); |
||||||
|
afterCellDataConverted++; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, |
||||||
|
List<CellData> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { |
||||||
|
if (isHead) { |
||||||
|
Assert.assertEquals(1L, beforeCellCreate); |
||||||
|
Assert.assertEquals(1L, afterCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(0L, afterCellDispose); |
||||||
|
Assert.assertEquals(1L, beforeRowCreate); |
||||||
|
Assert.assertEquals(1L, afterRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowDispose); |
||||||
|
Assert.assertEquals(1L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(1L, afterSheetCreate); |
||||||
|
Assert.assertEquals(1L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(1L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookDispose); |
||||||
|
afterCellDispose++; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void beforeRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Integer rowIndex, |
||||||
|
Integer relativeRowIndex, Boolean isHead) { |
||||||
|
if (isHead) { |
||||||
|
Assert.assertEquals(0L, beforeCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(0L, afterCellDispose); |
||||||
|
Assert.assertEquals(0L, beforeRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowDispose); |
||||||
|
Assert.assertEquals(1L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(1L, afterSheetCreate); |
||||||
|
Assert.assertEquals(1L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(1L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookDispose); |
||||||
|
beforeRowCreate++; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void afterRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, |
||||||
|
Integer relativeRowIndex, Boolean isHead) { |
||||||
|
if (isHead) { |
||||||
|
Assert.assertEquals(0L, beforeCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(0L, afterCellDispose); |
||||||
|
Assert.assertEquals(1L, beforeRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowDispose); |
||||||
|
Assert.assertEquals(1L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(1L, afterSheetCreate); |
||||||
|
Assert.assertEquals(1L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(1L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookDispose); |
||||||
|
afterRowCreate++; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, |
||||||
|
Integer relativeRowIndex, Boolean isHead) { |
||||||
|
if (isHead) { |
||||||
|
Assert.assertEquals(1L, beforeCellCreate); |
||||||
|
Assert.assertEquals(1L, afterCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(1L, afterCellDispose); |
||||||
|
Assert.assertEquals(1L, beforeRowCreate); |
||||||
|
Assert.assertEquals(1L, afterRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowDispose); |
||||||
|
Assert.assertEquals(1L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(1L, afterSheetCreate); |
||||||
|
Assert.assertEquals(1L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(1L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookDispose); |
||||||
|
afterRowDispose++; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { |
||||||
|
Assert.assertEquals(0L, beforeCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(0L, afterCellDispose); |
||||||
|
Assert.assertEquals(0L, beforeRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowDispose); |
||||||
|
Assert.assertEquals(0L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(0L, afterSheetCreate); |
||||||
|
Assert.assertEquals(1L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(1L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookDispose); |
||||||
|
beforeSheetCreate++; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { |
||||||
|
Assert.assertEquals(0L, beforeCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(0L, afterCellDispose); |
||||||
|
Assert.assertEquals(0L, beforeRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowDispose); |
||||||
|
Assert.assertEquals(1L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(0L, afterSheetCreate); |
||||||
|
Assert.assertEquals(1L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(1L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookDispose); |
||||||
|
afterSheetCreate++; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void beforeWorkbookCreate() { |
||||||
|
Assert.assertEquals(0L, beforeCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(0L, afterCellDispose); |
||||||
|
Assert.assertEquals(0L, beforeRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowDispose); |
||||||
|
Assert.assertEquals(0L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(0L, afterSheetCreate); |
||||||
|
Assert.assertEquals(0L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookDispose); |
||||||
|
beforeWorkbookCreate++; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void afterWorkbookCreate(WriteWorkbookHolder writeWorkbookHolder) { |
||||||
|
Assert.assertEquals(0L, beforeCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellCreate); |
||||||
|
Assert.assertEquals(0L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(0L, afterCellDispose); |
||||||
|
Assert.assertEquals(0L, beforeRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowCreate); |
||||||
|
Assert.assertEquals(0L, afterRowDispose); |
||||||
|
Assert.assertEquals(0L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(0L, afterSheetCreate); |
||||||
|
Assert.assertEquals(1L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookDispose); |
||||||
|
afterWorkbookCreate++; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void afterWorkbookDispose(WriteWorkbookHolder writeWorkbookHolder) { |
||||||
|
Assert.assertEquals(1L, beforeCellCreate); |
||||||
|
Assert.assertEquals(1L, afterCellCreate); |
||||||
|
Assert.assertEquals(1L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(1L, afterCellDispose); |
||||||
|
Assert.assertEquals(1L, beforeRowCreate); |
||||||
|
Assert.assertEquals(1L, afterRowCreate); |
||||||
|
Assert.assertEquals(1L, afterRowDispose); |
||||||
|
Assert.assertEquals(1L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(1L, afterSheetCreate); |
||||||
|
Assert.assertEquals(1L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(1L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(0L, afterWorkbookDispose); |
||||||
|
afterWorkbookDispose++; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public void afterAll() { |
||||||
|
Assert.assertEquals(1L, beforeCellCreate); |
||||||
|
Assert.assertEquals(1L, afterCellCreate); |
||||||
|
Assert.assertEquals(1L, afterCellDataConverted); |
||||||
|
Assert.assertEquals(1L, afterCellDispose); |
||||||
|
Assert.assertEquals(1L, beforeRowCreate); |
||||||
|
Assert.assertEquals(1L, afterRowCreate); |
||||||
|
Assert.assertEquals(1L, afterRowDispose); |
||||||
|
Assert.assertEquals(1L, beforeSheetCreate); |
||||||
|
Assert.assertEquals(1L, afterSheetCreate); |
||||||
|
Assert.assertEquals(1L, beforeWorkbookCreate); |
||||||
|
Assert.assertEquals(1L, afterWorkbookCreate); |
||||||
|
Assert.assertEquals(1L, afterWorkbookDispose); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
package com.alibaba.easyexcel.test.core.handler; |
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Jiaju Zhuang |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class WriteHandlerData { |
||||||
|
@ExcelProperty("姓名") |
||||||
|
private String name; |
||||||
|
} |
@ -0,0 +1,96 @@ |
|||||||
|
package com.alibaba.easyexcel.test.core.handler; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.text.ParseException; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import org.junit.BeforeClass; |
||||||
|
import org.junit.FixMethodOrder; |
||||||
|
import org.junit.Test; |
||||||
|
import org.junit.runners.MethodSorters; |
||||||
|
|
||||||
|
import com.alibaba.easyexcel.test.core.head.ListHeadDataListener; |
||||||
|
import com.alibaba.easyexcel.test.core.simple.SimpleData; |
||||||
|
import com.alibaba.easyexcel.test.util.TestFileUtil; |
||||||
|
import com.alibaba.excel.EasyExcel; |
||||||
|
import com.alibaba.excel.util.DateUtils; |
||||||
|
import com.alibaba.excel.write.handler.WorkbookWriteHandler; |
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
* @author Jiaju Zhuang |
||||||
|
*/ |
||||||
|
@FixMethodOrder(MethodSorters.NAME_ASCENDING) |
||||||
|
public class WriteHandlerTest { |
||||||
|
|
||||||
|
private static File file07; |
||||||
|
private static File file03; |
||||||
|
|
||||||
|
@BeforeClass |
||||||
|
public static void init() { |
||||||
|
file07 = TestFileUtil.createNewFile("writeHandler07.xlsx"); |
||||||
|
file03 = TestFileUtil.createNewFile("writeHandler03.xls"); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void t01WorkbookWrite07() throws Exception { |
||||||
|
workbookWrite(file07); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void t02WorkbookWrite03() throws Exception { |
||||||
|
workbookWrite(file03); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void t03SheetWrite07() throws Exception { |
||||||
|
sheetWrite(file07); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void t04SheetWrite03() throws Exception { |
||||||
|
sheetWrite(file03); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void t05TableWrite07() throws Exception { |
||||||
|
workbookWrite(file07); |
||||||
|
tableWrite(file07); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void t06TableWrite03() throws Exception { |
||||||
|
tableWrite(file03); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
private void workbookWrite(File file) { |
||||||
|
WriteHandler writeHandler = new WriteHandler(); |
||||||
|
EasyExcel.write(file).head(WriteHandlerData.class).registerWriteHandler(writeHandler).sheet().doWrite(data()); |
||||||
|
writeHandler.afterAll(); |
||||||
|
} |
||||||
|
|
||||||
|
private void sheetWrite(File file) { |
||||||
|
WriteHandler writeHandler = new WriteHandler(); |
||||||
|
EasyExcel.write(file).head(WriteHandlerData.class).sheet().registerWriteHandler(writeHandler).doWrite(data()); |
||||||
|
writeHandler.afterAll(); |
||||||
|
} |
||||||
|
|
||||||
|
private void tableWrite(File file) { |
||||||
|
WriteHandler writeHandler = new WriteHandler(); |
||||||
|
EasyExcel.write(file).head(WriteHandlerData.class).sheet().table(0).registerWriteHandler(writeHandler) |
||||||
|
.doWrite(data()); |
||||||
|
writeHandler.afterAll(); |
||||||
|
} |
||||||
|
|
||||||
|
private List<WriteHandlerData> data() { |
||||||
|
List<WriteHandlerData> list = new ArrayList<WriteHandlerData>(); |
||||||
|
for (int i = 0; i < 1; i++) { |
||||||
|
WriteHandlerData data = new WriteHandlerData(); |
||||||
|
data.setName("姓名" + i); |
||||||
|
list.add(data); |
||||||
|
} |
||||||
|
return list; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue