sheetList();
20 |
21 | /**
22 | * Read the sheet.
23 | */
24 | void execute();
25 | }
26 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v03/IgnorableXlsRecordHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v03;
2 |
3 | /**
4 | * Need to ignore the current handler without reading the current sheet.
5 | *
6 | * @author Jiaju Zhuang
7 | */
8 | public interface IgnorableXlsRecordHandler extends XlsRecordHandler {}
9 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v03/XlsRecordHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v03;
2 |
3 | import org.apache.poi.hssf.record.Record;
4 |
5 | import cn.idev.excel.context.xls.XlsReadContext;
6 |
7 | /**
8 | * Intercepts handle xls reads.
9 | *
10 | * @author Dan Zheng
11 | */
12 | public interface XlsRecordHandler {
13 | /**
14 | * Whether to support
15 | *
16 | * @param xlsReadContext
17 | * @param record
18 | * @return
19 | */
20 | boolean support(XlsReadContext xlsReadContext, Record record);
21 |
22 | /**
23 | * Processing record
24 | *
25 | * @param xlsReadContext
26 | * @param record
27 | */
28 | void processRecord(XlsReadContext xlsReadContext, Record record);
29 | }
30 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v03/handlers/AbstractXlsRecordHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v03.handlers;
2 |
3 | import cn.idev.excel.analysis.v03.XlsRecordHandler;
4 | import cn.idev.excel.context.xls.XlsReadContext;
5 | import org.apache.poi.hssf.record.Record;
6 |
7 | /**
8 | * Abstract xls record handler
9 | *
10 | * @author Jiaju Zhuang
11 | **/
12 | public abstract class AbstractXlsRecordHandler implements XlsRecordHandler {
13 |
14 | @Override
15 | public boolean support(XlsReadContext xlsReadContext, Record record) {
16 | return true;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v03/handlers/BlankRecordHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v03.handlers;
2 |
3 | import cn.idev.excel.analysis.v03.IgnorableXlsRecordHandler;
4 | import cn.idev.excel.metadata.data.ReadCellData;
5 | import cn.idev.excel.context.xls.XlsReadContext;
6 |
7 | import org.apache.poi.hssf.record.BlankRecord;
8 | import org.apache.poi.hssf.record.Record;
9 |
10 | /**
11 | * Record handler
12 | *
13 | * @author Dan Zheng
14 | */
15 | public class BlankRecordHandler extends AbstractXlsRecordHandler implements IgnorableXlsRecordHandler {
16 |
17 | @Override
18 | public void processRecord(XlsReadContext xlsReadContext, Record record) {
19 | BlankRecord br = (BlankRecord)record;
20 | xlsReadContext.xlsReadSheetHolder().getCellMap().put((int)br.getColumn(),
21 | ReadCellData.newEmptyInstance(br.getRow(), (int)br.getColumn()));
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v03/handlers/BoolErrRecordHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v03.handlers;
2 |
3 | import cn.idev.excel.analysis.v03.IgnorableXlsRecordHandler;
4 | import cn.idev.excel.enums.RowTypeEnum;
5 | import cn.idev.excel.metadata.data.ReadCellData;
6 | import cn.idev.excel.context.xls.XlsReadContext;
7 |
8 | import org.apache.poi.hssf.record.BoolErrRecord;
9 | import org.apache.poi.hssf.record.Record;
10 |
11 | /**
12 | * Record handler
13 | *
14 | * @author Dan Zheng
15 | */
16 | public class BoolErrRecordHandler extends AbstractXlsRecordHandler implements IgnorableXlsRecordHandler {
17 |
18 | @Override
19 | public void processRecord(XlsReadContext xlsReadContext, Record record) {
20 | BoolErrRecord ber = (BoolErrRecord)record;
21 | xlsReadContext.xlsReadSheetHolder().getCellMap().put((int)ber.getColumn(),
22 | ReadCellData.newInstance(ber.getBooleanValue(), ber.getRow(), (int)ber.getColumn()));
23 | xlsReadContext.xlsReadSheetHolder().setTempRowType(RowTypeEnum.DATA);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v03/handlers/BoundSheetRecordHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v03.handlers;
2 |
3 | import cn.idev.excel.analysis.v03.IgnorableXlsRecordHandler;
4 | import cn.idev.excel.context.xls.XlsReadContext;
5 | import org.apache.poi.hssf.record.BoundSheetRecord;
6 | import org.apache.poi.hssf.record.Record;
7 |
8 | /**
9 | * Record handler
10 | *
11 | * @author Dan Zheng
12 | */
13 | public class BoundSheetRecordHandler extends AbstractXlsRecordHandler implements IgnorableXlsRecordHandler {
14 |
15 | @Override
16 | public void processRecord(XlsReadContext xlsReadContext, Record record) {
17 | BoundSheetRecord bsr = (BoundSheetRecord)record;
18 | xlsReadContext.xlsReadWorkbookHolder().getBoundSheetRecordList().add(bsr);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v03/handlers/IndexRecordHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v03.handlers;
2 |
3 | import cn.idev.excel.analysis.v03.IgnorableXlsRecordHandler;
4 | import cn.idev.excel.context.xls.XlsReadContext;
5 | import org.apache.poi.hssf.record.IndexRecord;
6 | import org.apache.poi.hssf.record.Record;
7 |
8 | /**
9 | * Record handler
10 | *
11 | * @author Jiaju Zhuang
12 | */
13 | public class IndexRecordHandler extends AbstractXlsRecordHandler implements IgnorableXlsRecordHandler {
14 | @Override
15 | public void processRecord(XlsReadContext xlsReadContext, Record record) {
16 | if (xlsReadContext.readSheetHolder() == null) {
17 | return;
18 | }
19 | xlsReadContext.readSheetHolder().setApproximateTotalRowNumber(((IndexRecord)record).getLastRowAdd1());
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v03/handlers/LabelRecordHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v03.handlers;
2 |
3 | import cn.idev.excel.analysis.v03.IgnorableXlsRecordHandler;
4 | import cn.idev.excel.enums.RowTypeEnum;
5 | import cn.idev.excel.metadata.data.ReadCellData;
6 | import cn.idev.excel.context.xls.XlsReadContext;
7 |
8 | import org.apache.poi.hssf.record.LabelRecord;
9 | import org.apache.poi.hssf.record.Record;
10 |
11 | /**
12 | * Record handler
13 | *
14 | * @author Dan Zheng
15 | */
16 | public class LabelRecordHandler extends AbstractXlsRecordHandler implements IgnorableXlsRecordHandler {
17 | @Override
18 | public void processRecord(XlsReadContext xlsReadContext, Record record) {
19 | LabelRecord lrec = (LabelRecord)record;
20 | String data = lrec.getValue();
21 | if (data != null && xlsReadContext.currentReadHolder().globalConfiguration().getAutoTrim()) {
22 | data = data.trim();
23 | }
24 | xlsReadContext.xlsReadSheetHolder().getCellMap().put((int)lrec.getColumn(),
25 | ReadCellData.newInstance(data, lrec.getRow(), (int)lrec.getColumn()));
26 | xlsReadContext.xlsReadSheetHolder().setTempRowType(RowTypeEnum.DATA);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v03/handlers/ObjRecordHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v03.handlers;
2 |
3 | import cn.idev.excel.analysis.v03.IgnorableXlsRecordHandler;
4 | import cn.idev.excel.context.xls.XlsReadContext;
5 | import org.apache.poi.hssf.record.CommonObjectDataSubRecord;
6 | import org.apache.poi.hssf.record.ObjRecord;
7 | import org.apache.poi.hssf.record.Record;
8 | import org.apache.poi.hssf.record.SubRecord;
9 |
10 | /**
11 | * Record handler
12 | *
13 | * @author Jiaju Zhuang
14 | */
15 | public class ObjRecordHandler extends AbstractXlsRecordHandler implements IgnorableXlsRecordHandler {
16 | @Override
17 | public void processRecord(XlsReadContext xlsReadContext, Record record) {
18 | ObjRecord or = (ObjRecord)record;
19 | for (SubRecord subRecord : or.getSubRecords()) {
20 | if (subRecord instanceof CommonObjectDataSubRecord) {
21 | CommonObjectDataSubRecord codsr = (CommonObjectDataSubRecord)subRecord;
22 | if (CommonObjectDataSubRecord.OBJECT_TYPE_COMMENT == codsr.getObjectType()) {
23 | xlsReadContext.xlsReadSheetHolder().setTempObjectIndex(codsr.getObjectId());
24 | }
25 | break;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v03/handlers/RkRecordHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v03.handlers;
2 |
3 | import cn.idev.excel.analysis.v03.IgnorableXlsRecordHandler;
4 | import cn.idev.excel.metadata.data.ReadCellData;
5 | import cn.idev.excel.context.xls.XlsReadContext;
6 |
7 | import org.apache.poi.hssf.record.RKRecord;
8 | import org.apache.poi.hssf.record.Record;
9 |
10 | /**
11 | * Record handler
12 | *
13 | * @author Dan Zheng
14 | */
15 | public class RkRecordHandler extends AbstractXlsRecordHandler implements IgnorableXlsRecordHandler {
16 |
17 | @Override
18 | public void processRecord(XlsReadContext xlsReadContext, Record record) {
19 | RKRecord re = (RKRecord)record;
20 | xlsReadContext.xlsReadSheetHolder().getCellMap().put((int)re.getColumn(),
21 | ReadCellData.newEmptyInstance(re.getRow(), (int)re.getColumn()));
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v03/handlers/SstRecordHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v03.handlers;
2 |
3 | import cn.idev.excel.analysis.v03.IgnorableXlsRecordHandler;
4 | import cn.idev.excel.cache.XlsCache;
5 | import cn.idev.excel.context.xls.XlsReadContext;
6 | import org.apache.poi.hssf.record.Record;
7 | import org.apache.poi.hssf.record.SSTRecord;
8 |
9 | /**
10 | * Record handler
11 | *
12 | * @author Dan Zheng
13 | */
14 | public class SstRecordHandler extends AbstractXlsRecordHandler implements IgnorableXlsRecordHandler {
15 | @Override
16 | public void processRecord(XlsReadContext xlsReadContext, Record record) {
17 | xlsReadContext.readWorkbookHolder().setReadCache(new XlsCache((SSTRecord)record));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v07/handlers/AbstractCellValueTagHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v07.handlers;
2 |
3 | import cn.idev.excel.context.xlsx.XlsxReadContext;
4 |
5 | /**
6 | * Cell Value Handler
7 | *
8 | * @author jipengfei
9 | */
10 | public abstract class AbstractCellValueTagHandler extends AbstractXlsxTagHandler {
11 |
12 | @Override
13 | public void characters(XlsxReadContext xlsxReadContext, char[] ch, int start, int length) {
14 | xlsxReadContext.xlsxReadSheetHolder().getTempData().append(ch, start, length);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v07/handlers/AbstractXlsxTagHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v07.handlers;
2 |
3 | import cn.idev.excel.context.xlsx.XlsxReadContext;
4 | import org.xml.sax.Attributes;
5 |
6 | /**
7 | * Abstract tag handler
8 | *
9 | * @author Jiaju Zhuang
10 | */
11 | public abstract class AbstractXlsxTagHandler implements XlsxTagHandler {
12 | @Override
13 | public boolean support(XlsxReadContext xlsxReadContext) {
14 | return true;
15 | }
16 |
17 | @Override
18 | public void startElement(XlsxReadContext xlsxReadContext, String name, Attributes attributes) {
19 |
20 | }
21 |
22 | @Override
23 | public void endElement(XlsxReadContext xlsxReadContext, String name) {
24 |
25 | }
26 |
27 | @Override
28 | public void characters(XlsxReadContext xlsxReadContext, char[] ch, int start, int length) {
29 |
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v07/handlers/CellInlineStringValueTagHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v07.handlers;
2 |
3 | /**
4 | * Cell inline string value handler
5 | *
6 | * @author jipengfei
7 | */
8 | public class CellInlineStringValueTagHandler extends AbstractCellValueTagHandler {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v07/handlers/CellValueTagHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v07.handlers;
2 |
3 | /**
4 | * Cell Value Handler
5 | *
6 | * @author jipengfei
7 | */
8 | public class CellValueTagHandler extends AbstractCellValueTagHandler {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/v07/handlers/CountTagHandler.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.analysis.v07.handlers;
2 |
3 | import cn.idev.excel.constant.ExcelXmlConstants;
4 | import cn.idev.excel.util.PositionUtils;
5 | import cn.idev.excel.context.xlsx.XlsxReadContext;
6 |
7 | import org.xml.sax.Attributes;
8 |
9 | /**
10 | * Cell Handler
11 | *
12 | * @author jipengfei
13 | */
14 | public class CountTagHandler extends AbstractXlsxTagHandler {
15 |
16 | @Override
17 | public void startElement(XlsxReadContext xlsxReadContext, String name, Attributes attributes) {
18 | String d = attributes.getValue(ExcelXmlConstants.ATTRIBUTE_REF);
19 | String totalStr = d.substring(d.indexOf(":") + 1);
20 | xlsxReadContext.readSheetHolder().setApproximateTotalRowNumber(PositionUtils.getRow(totalStr) + 1);
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/annotation/ExcelIgnore.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.annotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Inherited;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * Ignore convert excel
11 | *
12 | * @author Jiaju Zhuang
13 | */
14 | @Target(ElementType.FIELD)
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Inherited
17 | public @interface ExcelIgnore {}
18 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/annotation/ExcelIgnoreUnannotated.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.annotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Inherited;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * Ignore all unannotated fields.
11 | *
12 | * @author Jiaju Zhuang
13 | */
14 | @Target(ElementType.TYPE)
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Inherited
17 | public @interface ExcelIgnoreUnannotated {
18 | }
19 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/annotation/format/DateTimeFormat.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.annotation.format;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Inherited;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | import cn.idev.excel.enums.BooleanEnum;
10 |
11 | /**
12 | * Convert date format.
13 | *
14 | *
15 | * write: It can be used on classes {@link java.util.Date}
16 | *
17 | * read: It can be used on classes {@link String}
18 | *
19 | * @author Jiaju Zhuang
20 | */
21 | @Target(ElementType.FIELD)
22 | @Retention(RetentionPolicy.RUNTIME)
23 | @Inherited
24 | public @interface DateTimeFormat {
25 |
26 | /**
27 | *
28 | * Specific format reference {@link java.text.SimpleDateFormat}
29 | *
30 | * @return Format pattern
31 | */
32 | String value() default "";
33 |
34 | /**
35 | * True if date uses 1904 windowing, or false if using 1900 date windowing.
36 | *
37 | * @return True if date uses 1904 windowing, or false if using 1900 date windowing.
38 | */
39 | BooleanEnum use1904windowing() default BooleanEnum.DEFAULT;
40 | }
41 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/annotation/format/NumberFormat.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.annotation.format;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Inherited;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 | import java.math.RoundingMode;
9 |
10 | /**
11 | * Convert number format.
12 | *
13 | *
14 | * write: It can be used on classes that inherit {@link Number}
15 | *
16 | * read: It can be used on classes {@link String}
17 | *
18 | * @author Jiaju Zhuang
19 | */
20 | @Target(ElementType.FIELD)
21 | @Retention(RetentionPolicy.RUNTIME)
22 | @Inherited
23 | public @interface NumberFormat {
24 |
25 | /**
26 | *
27 | * Specific format reference {@link java.text.DecimalFormat}
28 | *
29 | * @return Format pattern
30 | */
31 | String value() default "";
32 |
33 | /**
34 | * Rounded by default
35 | *
36 | * @return RoundingMode
37 | */
38 | RoundingMode roundingMode() default RoundingMode.HALF_UP;
39 | }
40 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/annotation/write/style/ColumnWidth.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.annotation.write.style;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Inherited;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * Set the width of the table
11 | *
12 | * @author Jiaju Zhuang
13 | */
14 | @Target({ElementType.FIELD, ElementType.TYPE})
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Inherited
17 | public @interface ColumnWidth {
18 |
19 | /**
20 | * Column width
21 | *
22 | * -1 means the default column width is used
23 | *
24 | * @return Column width
25 | */
26 | int value() default -1;
27 | }
28 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/annotation/write/style/ContentLoopMerge.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.annotation.write.style;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Inherited;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * The regions of the loop merge
11 | *
12 | * @author Jiaju Zhuang
13 | */
14 | @Target({ElementType.FIELD})
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Inherited
17 | public @interface ContentLoopMerge {
18 | /**
19 | * Each row
20 | *
21 | * @return
22 | */
23 | int eachRow() default 1;
24 |
25 | /**
26 | * Extend column
27 | *
28 | * @return
29 | */
30 | int columnExtend() default 1;
31 | }
32 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/annotation/write/style/ContentRowHeight.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.annotation.write.style;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Inherited;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * Set the height of each table
11 | *
12 | * @author Jiaju Zhuang
13 | */
14 | @Target({ElementType.TYPE})
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Inherited
17 | public @interface ContentRowHeight {
18 |
19 | /**
20 | * Set the content height
21 | *
22 | * -1 mean the auto set height
23 | *
24 | * @return Content height
25 | */
26 | short value() default -1;
27 | }
28 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/annotation/write/style/HeadRowHeight.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.annotation.write.style;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Inherited;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * Set the height of each table
11 | *
12 | * @author Jiaju Zhuang
13 | */
14 | @Target({ElementType.TYPE})
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Inherited
17 | public @interface HeadRowHeight {
18 | /**
19 | * Set the header height
20 | *
21 | * -1 mean the auto set height
22 | *
23 | * @return Header height
24 | */
25 | short value() default -1;
26 | }
27 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/annotation/write/style/OnceAbsoluteMerge.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.annotation.write.style;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Inherited;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * Merge the cells once
11 | *
12 | * @author Jiaju Zhuang
13 | */
14 | @Target({ElementType.TYPE})
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Inherited
17 | public @interface OnceAbsoluteMerge {
18 | /**
19 | * First row
20 | *
21 | * @return
22 | */
23 | int firstRowIndex() default -1;
24 |
25 | /**
26 | * Last row
27 | *
28 | * @return
29 | */
30 | int lastRowIndex() default -1;
31 |
32 | /**
33 | * First column
34 | *
35 | * @return
36 | */
37 | int firstColumnIndex() default -1;
38 |
39 | /**
40 | * Last row
41 | *
42 | * @return
43 | */
44 | int lastColumnIndex() default -1;
45 | }
46 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/cache/MapCache.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.cache;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | import cn.idev.excel.context.AnalysisContext;
7 |
8 | /**
9 | * Putting temporary data directly into a map is a little more efficient but very memory intensive
10 | *
11 | * @author Jiaju Zhuang
12 | */
13 | public class MapCache implements ReadCache {
14 | private final List cache = new ArrayList<>();
15 |
16 | @Override
17 | public void init(AnalysisContext analysisContext) {}
18 |
19 | @Override
20 | public void put(String value) {
21 | cache.add(value);
22 | }
23 |
24 | @Override
25 | public String get(Integer key) {
26 | if (key == null || key < 0) {
27 | return null;
28 | }
29 | return cache.get(key);
30 | }
31 |
32 | @Override
33 | public void putFinished() {}
34 |
35 | @Override
36 | public void destroy() {}
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/cache/ReadCache.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.cache;
2 |
3 | import cn.idev.excel.context.AnalysisContext;
4 |
5 | /**
6 | * Read cache
7 | *
8 | * @author Jiaju Zhuang
9 | */
10 | public interface ReadCache {
11 |
12 | /**
13 | * Initialize cache
14 | *
15 | * @param analysisContext
16 | * A context is the main anchorage point of a excel reader.
17 | */
18 | void init(AnalysisContext analysisContext);
19 |
20 | /**
21 | * Automatically generate the key and put it in the cache.Key start from 0
22 | *
23 | * @param value
24 | * Cache value
25 | */
26 | void put(String value);
27 |
28 | /**
29 | * Get value
30 | *
31 | * @param key
32 | * Index
33 | * @return Value
34 | */
35 | String get(Integer key);
36 |
37 | /**
38 | * It's called when all the values are put in
39 | */
40 | void putFinished();
41 |
42 | /**
43 | * Called when the excel read is complete
44 | */
45 | void destroy();
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/cache/XlsCache.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.cache;
2 |
3 | import org.apache.poi.hssf.record.SSTRecord;
4 |
5 | import cn.idev.excel.context.AnalysisContext;
6 |
7 | /**
8 | *
9 | * Use SSTRecord.
10 | *
11 | * @author Jiaju Zhuang
12 | */
13 | public class XlsCache implements ReadCache {
14 | private final SSTRecord sstRecord;
15 |
16 | public XlsCache(SSTRecord sstRecord) {
17 | this.sstRecord = sstRecord;
18 | }
19 |
20 | @Override
21 | public void init(AnalysisContext analysisContext) {}
22 |
23 | @Override
24 | public void put(String value) {}
25 |
26 | @Override
27 | public String get(Integer key) {
28 | return sstRecord.getString(key).toString();
29 | }
30 |
31 | @Override
32 | public void putFinished() {}
33 |
34 | @Override
35 | public void destroy() {}
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/cache/selector/EternalReadCacheSelector.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.cache.selector;
2 |
3 | import cn.idev.excel.cache.ReadCache;
4 | import org.apache.poi.openxml4j.opc.PackagePart;
5 |
6 | /**
7 | * Choose a eternal cache
8 | *
9 | * @author Jiaju Zhuang
10 | **/
11 | public class EternalReadCacheSelector implements ReadCacheSelector {
12 | private ReadCache readCache;
13 |
14 | public EternalReadCacheSelector(ReadCache readCache) {
15 | this.readCache = readCache;
16 | }
17 |
18 | @Override
19 | public ReadCache readCache(PackagePart sharedStringsTablePackagePart) {
20 | return readCache;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/cache/selector/ReadCacheSelector.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.cache.selector;
2 |
3 | import cn.idev.excel.cache.ReadCache;
4 | import org.apache.poi.openxml4j.opc.PackagePart;
5 |
6 | /**
7 | * Select the cache
8 | *
9 | * @author Jiaju Zhuang
10 | **/
11 | public interface ReadCacheSelector {
12 |
13 | /**
14 | * Select a cache
15 | *
16 | * @param sharedStringsTablePackagePart
17 | * @return
18 | */
19 | ReadCache readCache(PackagePart sharedStringsTablePackagePart);
20 | }
21 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/constant/EasyExcelConstants.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.constant;
2 |
3 | import java.math.MathContext;
4 | import java.math.RoundingMode;
5 |
6 | /**
7 | * Used to store constant
8 | *
9 | * @author Jiaju Zhuang
10 | */
11 | public class EasyExcelConstants {
12 |
13 | /**
14 | * Excel by default with 15 to store Numbers, and the double in Java can use to store number 17, led to the accuracy
15 | * will be a problem. So you need to set up 15 to deal with precision
16 | */
17 | public static final MathContext EXCEL_MATH_CONTEXT = new MathContext(15, RoundingMode.HALF_UP);
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/constant/OrderConstant.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.constant;
2 |
3 | /**
4 | * Order constant.
5 | *
6 | * @author Jiaju Zhuang
7 | */
8 | public class OrderConstant {
9 |
10 | /**
11 | * The system's own style
12 | */
13 | public static int DEFAULT_DEFINE_STYLE = -70000;
14 |
15 | /**
16 | * Annotation style definition
17 | */
18 | public static int ANNOTATION_DEFINE_STYLE = -60000;
19 |
20 | /**
21 | * Define style.
22 | */
23 | public static final int DEFINE_STYLE = -50000;
24 |
25 | /**
26 | * default order.
27 | */
28 | public static int DEFAULT_ORDER = 0;
29 |
30 | /**
31 | * Sorting of styles written to cells.
32 | */
33 | public static int FILL_STYLE = 50000;
34 | }
35 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/context/csv/CsvReadContext.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.context.csv;
2 |
3 | import cn.idev.excel.context.AnalysisContext;
4 | import cn.idev.excel.read.metadata.holder.csv.CsvReadSheetHolder;
5 | import cn.idev.excel.read.metadata.holder.csv.CsvReadWorkbookHolder;
6 |
7 | /**
8 | * A context is the main anchorage point of a ls xls reader.
9 | *
10 | * @author Jiaju Zhuang
11 | **/
12 | public interface CsvReadContext extends AnalysisContext {
13 | /**
14 | * All information about the workbook you are currently working on.
15 | *
16 | * @return Current workbook holder
17 | */
18 | CsvReadWorkbookHolder csvReadWorkbookHolder();
19 |
20 | /**
21 | * All information about the sheet you are currently working on.
22 | *
23 | * @return Current sheet holder
24 | */
25 | CsvReadSheetHolder csvReadSheetHolder();
26 | }
27 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/context/csv/DefaultCsvReadContext.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.context.csv;
2 |
3 | import cn.idev.excel.context.AnalysisContextImpl;
4 | import cn.idev.excel.read.metadata.ReadWorkbook;
5 | import cn.idev.excel.read.metadata.holder.csv.CsvReadSheetHolder;
6 | import cn.idev.excel.read.metadata.holder.csv.CsvReadWorkbookHolder;
7 | import cn.idev.excel.support.ExcelTypeEnum;
8 |
9 | /**
10 | * A context is the main anchorage point of a ls xls reader.
11 | *
12 | * @author Jiaju Zhuang
13 | */
14 | public class DefaultCsvReadContext extends AnalysisContextImpl implements CsvReadContext {
15 |
16 | public DefaultCsvReadContext(ReadWorkbook readWorkbook, ExcelTypeEnum actualExcelType) {
17 | super(readWorkbook, actualExcelType);
18 | }
19 |
20 | @Override
21 | public CsvReadWorkbookHolder csvReadWorkbookHolder() {
22 | return (CsvReadWorkbookHolder)readWorkbookHolder();
23 | }
24 |
25 | @Override
26 | public CsvReadSheetHolder csvReadSheetHolder() {
27 | return (CsvReadSheetHolder)readSheetHolder();
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/context/xls/DefaultXlsReadContext.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.context.xls;
2 |
3 | import cn.idev.excel.context.AnalysisContextImpl;
4 | import cn.idev.excel.read.metadata.ReadWorkbook;
5 | import cn.idev.excel.read.metadata.holder.xls.XlsReadSheetHolder;
6 | import cn.idev.excel.read.metadata.holder.xls.XlsReadWorkbookHolder;
7 | import cn.idev.excel.support.ExcelTypeEnum;
8 |
9 | /**
10 | *
11 | * A context is the main anchorage point of a ls xls reader.
12 | *
13 | * @author Jiaju Zhuang
14 | */
15 | public class DefaultXlsReadContext extends AnalysisContextImpl implements XlsReadContext {
16 |
17 | public DefaultXlsReadContext(ReadWorkbook readWorkbook, ExcelTypeEnum actualExcelType) {
18 | super(readWorkbook, actualExcelType);
19 | }
20 |
21 | @Override
22 | public XlsReadWorkbookHolder xlsReadWorkbookHolder() {
23 | return (XlsReadWorkbookHolder)readWorkbookHolder();
24 | }
25 |
26 | @Override
27 | public XlsReadSheetHolder xlsReadSheetHolder() {
28 | return (XlsReadSheetHolder)readSheetHolder();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/context/xls/XlsReadContext.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.context.xls;
2 |
3 | import cn.idev.excel.context.AnalysisContext;
4 | import cn.idev.excel.read.metadata.holder.xls.XlsReadSheetHolder;
5 | import cn.idev.excel.read.metadata.holder.xls.XlsReadWorkbookHolder;
6 |
7 | /**
8 | * A context is the main anchorage point of a ls xls reader.
9 | *
10 | * @author Jiaju Zhuang
11 | **/
12 | public interface XlsReadContext extends AnalysisContext {
13 | /**
14 | * All information about the workbook you are currently working on.
15 | *
16 | * @return Current workbook holder
17 | */
18 | XlsReadWorkbookHolder xlsReadWorkbookHolder();
19 |
20 | /**
21 | * All information about the sheet you are currently working on.
22 | *
23 | * @return Current sheet holder
24 | */
25 | XlsReadSheetHolder xlsReadSheetHolder();
26 | }
27 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/context/xlsx/DefaultXlsxReadContext.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.context.xlsx;
2 |
3 | import cn.idev.excel.context.AnalysisContextImpl;
4 | import cn.idev.excel.read.metadata.ReadWorkbook;
5 | import cn.idev.excel.read.metadata.holder.xlsx.XlsxReadSheetHolder;
6 | import cn.idev.excel.read.metadata.holder.xlsx.XlsxReadWorkbookHolder;
7 | import cn.idev.excel.support.ExcelTypeEnum;
8 |
9 | /**
10 | *
11 | * A context is the main anchorage point of a ls xls reader.
12 | *
13 | * @author Jiaju Zhuang
14 | */
15 | public class DefaultXlsxReadContext extends AnalysisContextImpl implements XlsxReadContext {
16 |
17 | public DefaultXlsxReadContext(ReadWorkbook readWorkbook, ExcelTypeEnum actualExcelType) {
18 | super(readWorkbook, actualExcelType);
19 | }
20 |
21 | @Override
22 | public XlsxReadWorkbookHolder xlsxReadWorkbookHolder() {
23 | return (XlsxReadWorkbookHolder)readWorkbookHolder();
24 | }
25 |
26 | @Override
27 | public XlsxReadSheetHolder xlsxReadSheetHolder() {
28 | return (XlsxReadSheetHolder)readSheetHolder();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/context/xlsx/XlsxReadContext.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.context.xlsx;
2 |
3 | import cn.idev.excel.context.AnalysisContext;
4 | import cn.idev.excel.read.metadata.holder.xlsx.XlsxReadSheetHolder;
5 | import cn.idev.excel.read.metadata.holder.xlsx.XlsxReadWorkbookHolder;
6 |
7 | /**
8 | * A context is the main anchorage point of a ls xlsx reader.
9 | *
10 | * @author Jiaju Zhuang
11 | **/
12 | public interface XlsxReadContext extends AnalysisContext {
13 | /**
14 | * All information about the workbook you are currently working on.
15 | *
16 | * @return Current workbook holder
17 | */
18 | XlsxReadWorkbookHolder xlsxReadWorkbookHolder();
19 |
20 | /**
21 | * All information about the sheet you are currently working on.
22 | *
23 | * @return Current sheet holder
24 | */
25 | XlsxReadSheetHolder xlsxReadSheetHolder();
26 | }
27 |
--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/converters/AutoConverter.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.converters;
2 |
3 | /**
4 | * An empty converter.It's automatically converted by type.
5 | *
6 | * @author Jiaju Zhuang
7 | */
8 | public class AutoConverter implements Converter