The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .editorconfig
├── .github
    ├── ISSUE_TEMPLATE
    │   ├── bug-report.yml
    │   ├── config.yml
    │   └── enhancement.yml
    ├── pull_request_template.md
    └── workflows
    │   ├── ci.yml
    │   └── release.yml
├── .gitignore
├── .mvn
    └── wrapper
    │   └── maven-wrapper.properties
├── CHANGELOG.md
├── CODEOWNERS
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── README_EN.md
├── README_JP.md
├── doc
    └── font
    │   └── SimHei.ttf
├── docs
    ├── API.md
    └── LARGEREAD.md
├── fastexcel-core
    ├── pom.xml
    └── src
    │   └── main
    │       └── java
    │           └── cn
    │               └── idev
    │                   └── excel
    │                       ├── EasyExcel.java
    │                       ├── ExcelReader.java
    │                       ├── ExcelWriter.java
    │                       ├── FastExcel.java
    │                       ├── FastExcelFactory.java
    │                       ├── analysis
    │                           ├── ExcelAnalyser.java
    │                           ├── ExcelAnalyserImpl.java
    │                           ├── ExcelReadExecutor.java
    │                           ├── csv
    │                           │   └── CsvExcelReadExecutor.java
    │                           ├── v03
    │                           │   ├── IgnorableXlsRecordHandler.java
    │                           │   ├── XlsListSheetListener.java
    │                           │   ├── XlsRecordHandler.java
    │                           │   ├── XlsSaxAnalyser.java
    │                           │   └── handlers
    │                           │   │   ├── AbstractXlsRecordHandler.java
    │                           │   │   ├── BlankRecordHandler.java
    │                           │   │   ├── BofRecordHandler.java
    │                           │   │   ├── BoolErrRecordHandler.java
    │                           │   │   ├── BoundSheetRecordHandler.java
    │                           │   │   ├── DummyRecordHandler.java
    │                           │   │   ├── EofRecordHandler.java
    │                           │   │   ├── FormulaRecordHandler.java
    │                           │   │   ├── HyperlinkRecordHandler.java
    │                           │   │   ├── IndexRecordHandler.java
    │                           │   │   ├── LabelRecordHandler.java
    │                           │   │   ├── LabelSstRecordHandler.java
    │                           │   │   ├── MergeCellsRecordHandler.java
    │                           │   │   ├── NoteRecordHandler.java
    │                           │   │   ├── NumberRecordHandler.java
    │                           │   │   ├── ObjRecordHandler.java
    │                           │   │   ├── RkRecordHandler.java
    │                           │   │   ├── SstRecordHandler.java
    │                           │   │   ├── StringRecordHandler.java
    │                           │   │   └── TextObjectRecordHandler.java
    │                           └── v07
    │                           │   ├── XlsxSaxAnalyser.java
    │                           │   └── handlers
    │                           │       ├── AbstractCellValueTagHandler.java
    │                           │       ├── AbstractXlsxTagHandler.java
    │                           │       ├── CellFormulaTagHandler.java
    │                           │       ├── CellInlineStringValueTagHandler.java
    │                           │       ├── CellTagHandler.java
    │                           │       ├── CellValueTagHandler.java
    │                           │       ├── CountTagHandler.java
    │                           │       ├── HyperlinkTagHandler.java
    │                           │       ├── MergeCellTagHandler.java
    │                           │       ├── RowTagHandler.java
    │                           │       ├── XlsxTagHandler.java
    │                           │       └── sax
    │                           │           ├── SharedStringsTableHandler.java
    │                           │           └── XlsxRowHandler.java
    │                       ├── annotation
    │                           ├── ExcelIgnore.java
    │                           ├── ExcelIgnoreUnannotated.java
    │                           ├── ExcelProperty.java
    │                           ├── format
    │                           │   ├── DateTimeFormat.java
    │                           │   └── NumberFormat.java
    │                           └── write
    │                           │   └── style
    │                           │       ├── ColumnWidth.java
    │                           │       ├── ContentFontStyle.java
    │                           │       ├── ContentLoopMerge.java
    │                           │       ├── ContentRowHeight.java
    │                           │       ├── ContentStyle.java
    │                           │       ├── HeadFontStyle.java
    │                           │       ├── HeadRowHeight.java
    │                           │       ├── HeadStyle.java
    │                           │       └── OnceAbsoluteMerge.java
    │                       ├── cache
    │                           ├── Ehcache.java
    │                           ├── MapCache.java
    │                           ├── ReadCache.java
    │                           ├── XlsCache.java
    │                           └── selector
    │                           │   ├── EternalReadCacheSelector.java
    │                           │   ├── ReadCacheSelector.java
    │                           │   └── SimpleReadCacheSelector.java
    │                       ├── constant
    │                           ├── BuiltinFormats.java
    │                           ├── EasyExcelConstants.java
    │                           ├── ExcelXmlConstants.java
    │                           └── OrderConstant.java
    │                       ├── context
    │                           ├── AnalysisContext.java
    │                           ├── AnalysisContextImpl.java
    │                           ├── WriteContext.java
    │                           ├── WriteContextImpl.java
    │                           ├── csv
    │                           │   ├── CsvReadContext.java
    │                           │   └── DefaultCsvReadContext.java
    │                           ├── xls
    │                           │   ├── DefaultXlsReadContext.java
    │                           │   └── XlsReadContext.java
    │                           └── xlsx
    │                           │   ├── DefaultXlsxReadContext.java
    │                           │   └── XlsxReadContext.java
    │                       ├── converters
    │                           ├── AutoConverter.java
    │                           ├── Converter.java
    │                           ├── ConverterKeyBuild.java
    │                           ├── DefaultConverterLoader.java
    │                           ├── NullableObjectConverter.java
    │                           ├── ReadConverterContext.java
    │                           ├── WriteConverterContext.java
    │                           ├── bigdecimal
    │                           │   ├── BigDecimalBooleanConverter.java
    │                           │   ├── BigDecimalNumberConverter.java
    │                           │   └── BigDecimalStringConverter.java
    │                           ├── biginteger
    │                           │   ├── BigIntegerBooleanConverter.java
    │                           │   ├── BigIntegerNumberConverter.java
    │                           │   └── BigIntegerStringConverter.java
    │                           ├── booleanconverter
    │                           │   ├── BooleanBooleanConverter.java
    │                           │   ├── BooleanNumberConverter.java
    │                           │   └── BooleanStringConverter.java
    │                           ├── bytearray
    │                           │   ├── BoxingByteArrayImageConverter.java
    │                           │   └── ByteArrayImageConverter.java
    │                           ├── byteconverter
    │                           │   ├── ByteBooleanConverter.java
    │                           │   ├── ByteNumberConverter.java
    │                           │   └── ByteStringConverter.java
    │                           ├── date
    │                           │   ├── DateDateConverter.java
    │                           │   ├── DateNumberConverter.java
    │                           │   └── DateStringConverter.java
    │                           ├── doubleconverter
    │                           │   ├── DoubleBooleanConverter.java
    │                           │   ├── DoubleNumberConverter.java
    │                           │   └── DoubleStringConverter.java
    │                           ├── file
    │                           │   └── FileImageConverter.java
    │                           ├── floatconverter
    │                           │   ├── FloatBooleanConverter.java
    │                           │   ├── FloatNumberConverter.java
    │                           │   └── FloatStringConverter.java
    │                           ├── inputstream
    │                           │   └── InputStreamImageConverter.java
    │                           ├── integer
    │                           │   ├── IntegerBooleanConverter.java
    │                           │   ├── IntegerNumberConverter.java
    │                           │   └── IntegerStringConverter.java
    │                           ├── localdate
    │                           │   ├── LocalDateDateConverter.java
    │                           │   ├── LocalDateNumberConverter.java
    │                           │   └── LocalDateStringConverter.java
    │                           ├── localdatetime
    │                           │   ├── LocalDateTimeDateConverter.java
    │                           │   ├── LocalDateTimeNumberConverter.java
    │                           │   └── LocalDateTimeStringConverter.java
    │                           ├── longconverter
    │                           │   ├── LongBooleanConverter.java
    │                           │   ├── LongNumberConverter.java
    │                           │   └── LongStringConverter.java
    │                           ├── shortconverter
    │                           │   ├── ShortBooleanConverter.java
    │                           │   ├── ShortNumberConverter.java
    │                           │   └── ShortStringConverter.java
    │                           ├── string
    │                           │   ├── StringBooleanConverter.java
    │                           │   ├── StringErrorConverter.java
    │                           │   ├── StringImageConverter.java
    │                           │   ├── StringNumberConverter.java
    │                           │   └── StringStringConverter.java
    │                           └── url
    │                           │   └── UrlImageConverter.java
    │                       ├── enums
    │                           ├── BooleanEnum.java
    │                           ├── ByteOrderMarkEnum.java
    │                           ├── CacheLocationEnum.java
    │                           ├── CellDataTypeEnum.java
    │                           ├── CellExtraTypeEnum.java
    │                           ├── HeadKindEnum.java
    │                           ├── HolderEnum.java
    │                           ├── NumericCellTypeEnum.java
    │                           ├── ReadDefaultReturnEnum.java
    │                           ├── RowTypeEnum.java
    │                           ├── WriteDirectionEnum.java
    │                           ├── WriteLastRowTypeEnum.java
    │                           ├── WriteTemplateAnalysisCellTypeEnum.java
    │                           ├── WriteTypeEnum.java
    │                           └── poi
    │                           │   ├── BorderStyleEnum.java
    │                           │   ├── FillPatternTypeEnum.java
    │                           │   ├── HorizontalAlignmentEnum.java
    │                           │   └── VerticalAlignmentEnum.java
    │                       ├── event
    │                           ├── AbstractIgnoreExceptionReadListener.java
    │                           ├── AnalysisEventListener.java
    │                           ├── Handler.java
    │                           ├── Listener.java
    │                           ├── NotRepeatExecutor.java
    │                           ├── Order.java
    │                           └── SyncReadListener.java
    │                       ├── exception
    │                           ├── ExcelAnalysisException.java
    │                           ├── ExcelAnalysisStopException.java
    │                           ├── ExcelAnalysisStopSheetException.java
    │                           ├── ExcelCommonException.java
    │                           ├── ExcelDataConvertException.java
    │                           ├── ExcelGenerateException.java
    │                           ├── ExcelRuntimeException.java
    │                           └── ExcelWriteDataConvertException.java
    │                       ├── metadata
    │                           ├── AbstractCell.java
    │                           ├── AbstractHolder.java
    │                           ├── AbstractParameterBuilder.java
    │                           ├── BasicParameter.java
    │                           ├── Cell.java
    │                           ├── CellExtra.java
    │                           ├── CellRange.java
    │                           ├── ConfigurationHolder.java
    │                           ├── FieldCache.java
    │                           ├── FieldWrapper.java
    │                           ├── Font.java
    │                           ├── GlobalConfiguration.java
    │                           ├── Head.java
    │                           ├── Holder.java
    │                           ├── NullObject.java
    │                           ├── csv
    │                           │   ├── CsvCell.java
    │                           │   ├── CsvCellStyle.java
    │                           │   ├── CsvConstant.java
    │                           │   ├── CsvDataFormat.java
    │                           │   ├── CsvRichTextString.java
    │                           │   ├── CsvRow.java
    │                           │   ├── CsvSheet.java
    │                           │   └── CsvWorkbook.java
    │                           ├── data
    │                           │   ├── CellData.java
    │                           │   ├── ClientAnchorData.java
    │                           │   ├── CommentData.java
    │                           │   ├── CoordinateData.java
    │                           │   ├── DataFormatData.java
    │                           │   ├── FormulaData.java
    │                           │   ├── HyperlinkData.java
    │                           │   ├── ImageData.java
    │                           │   ├── ReadCellData.java
    │                           │   ├── RichTextStringData.java
    │                           │   └── WriteCellData.java
    │                           ├── format
    │                           │   ├── DataFormatter.java
    │                           │   └── ExcelGeneralNumberFormat.java
    │                           └── property
    │                           │   ├── ColumnWidthProperty.java
    │                           │   ├── DateTimeFormatProperty.java
    │                           │   ├── ExcelContentProperty.java
    │                           │   ├── ExcelHeadProperty.java
    │                           │   ├── FontProperty.java
    │                           │   ├── LoopMergeProperty.java
    │                           │   ├── NumberFormatProperty.java
    │                           │   ├── OnceAbsoluteMergeProperty.java
    │                           │   ├── RowHeightProperty.java
    │                           │   └── StyleProperty.java
    │                       ├── read
    │                           ├── builder
    │                           │   ├── AbstractExcelReaderParameterBuilder.java
    │                           │   ├── CsvReaderBuilder.java
    │                           │   ├── ExcelReaderBuilder.java
    │                           │   └── ExcelReaderSheetBuilder.java
    │                           ├── listener
    │                           │   ├── IgnoreExceptionReadListener.java
    │                           │   ├── ModelBuildEventListener.java
    │                           │   ├── PageReadListener.java
    │                           │   └── ReadListener.java
    │                           ├── metadata
    │                           │   ├── ReadBasicParameter.java
    │                           │   ├── ReadSheet.java
    │                           │   ├── ReadWorkbook.java
    │                           │   ├── holder
    │                           │   │   ├── AbstractReadHolder.java
    │                           │   │   ├── ReadHolder.java
    │                           │   │   ├── ReadRowHolder.java
    │                           │   │   ├── ReadSheetHolder.java
    │                           │   │   ├── ReadWorkbookHolder.java
    │                           │   │   ├── csv
    │                           │   │   │   ├── CsvReadSheetHolder.java
    │                           │   │   │   └── CsvReadWorkbookHolder.java
    │                           │   │   ├── xls
    │                           │   │   │   ├── XlsReadSheetHolder.java
    │                           │   │   │   └── XlsReadWorkbookHolder.java
    │                           │   │   └── xlsx
    │                           │   │   │   ├── XlsxReadSheetHolder.java
    │                           │   │   │   └── XlsxReadWorkbookHolder.java
    │                           │   └── property
    │                           │   │   └── ExcelReadHeadProperty.java
    │                           └── processor
    │                           │   ├── AnalysisEventProcessor.java
    │                           │   └── DefaultAnalysisEventProcessor.java
    │                       ├── support
    │                           └── ExcelTypeEnum.java
    │                       ├── util
    │                           ├── BeanMapUtils.java
    │                           ├── BooleanUtils.java
    │                           ├── ClassUtils.java
    │                           ├── ConverterUtils.java
    │                           ├── DateUtils.java
    │                           ├── EasyExcelTempFileCreationStrategy.java
    │                           ├── FieldUtils.java
    │                           ├── FileTypeUtils.java
    │                           ├── FileUtils.java
    │                           ├── IntUtils.java
    │                           ├── IoUtils.java
    │                           ├── ListUtils.java
    │                           ├── MapUtils.java
    │                           ├── MemberUtils.java
    │                           ├── NumberDataFormatterUtils.java
    │                           ├── NumberUtils.java
    │                           ├── PoiUtils.java
    │                           ├── PositionUtils.java
    │                           ├── SheetUtils.java
    │                           ├── StringUtils.java
    │                           ├── StyleUtil.java
    │                           ├── Validate.java
    │                           ├── WorkBookUtil.java
    │                           └── WriteHandlerUtils.java
    │                       └── write
    │                           ├── ExcelBuilder.java
    │                           ├── ExcelBuilderImpl.java
    │                           ├── builder
    │                               ├── AbstractExcelWriterParameterBuilder.java
    │                               ├── CsvWriterBuilder.java
    │                               ├── ExcelWriterBuilder.java
    │                               ├── ExcelWriterSheetBuilder.java
    │                               └── ExcelWriterTableBuilder.java
    │                           ├── executor
    │                               ├── AbstractExcelWriteExecutor.java
    │                               ├── ExcelWriteAddExecutor.java
    │                               ├── ExcelWriteExecutor.java
    │                               └── ExcelWriteFillExecutor.java
    │                           ├── handler
    │                               ├── AbstractCellWriteHandler.java
    │                               ├── AbstractRowWriteHandler.java
    │                               ├── AbstractSheetWriteHandler.java
    │                               ├── AbstractWorkbookWriteHandler.java
    │                               ├── CellWriteHandler.java
    │                               ├── DefaultWriteHandlerLoader.java
    │                               ├── EscapeHexCellWriteHandler.java
    │                               ├── RowWriteHandler.java
    │                               ├── SheetWriteHandler.java
    │                               ├── WorkbookWriteHandler.java
    │                               ├── WriteHandler.java
    │                               ├── chain
    │                               │   ├── CellHandlerExecutionChain.java
    │                               │   ├── RowHandlerExecutionChain.java
    │                               │   ├── SheetHandlerExecutionChain.java
    │                               │   └── WorkbookHandlerExecutionChain.java
    │                               ├── context
    │                               │   ├── CellWriteHandlerContext.java
    │                               │   ├── RowWriteHandlerContext.java
    │                               │   ├── SheetWriteHandlerContext.java
    │                               │   └── WorkbookWriteHandlerContext.java
    │                               └── impl
    │                               │   ├── DefaultRowWriteHandler.java
    │                               │   ├── DimensionWorkbookWriteHandler.java
    │                               │   └── FillStyleCellWriteHandler.java
    │                           ├── merge
    │                               ├── AbstractMergeStrategy.java
    │                               ├── LoopMergeStrategy.java
    │                               └── OnceAbsoluteMergeStrategy.java
    │                           ├── metadata
    │                               ├── CollectionRowData.java
    │                               ├── MapRowData.java
    │                               ├── RowData.java
    │                               ├── WriteBasicParameter.java
    │                               ├── WriteSheet.java
    │                               ├── WriteTable.java
    │                               ├── WriteWorkbook.java
    │                               ├── fill
    │                               │   ├── AnalysisCell.java
    │                               │   ├── FillConfig.java
    │                               │   └── FillWrapper.java
    │                               ├── holder
    │                               │   ├── AbstractWriteHolder.java
    │                               │   ├── WriteHolder.java
    │                               │   ├── WriteSheetHolder.java
    │                               │   ├── WriteTableHolder.java
    │                               │   └── WriteWorkbookHolder.java
    │                               └── style
    │                               │   ├── WriteCellStyle.java
    │                               │   └── WriteFont.java
    │                           ├── property
    │                               └── ExcelWriteHeadProperty.java
    │                           └── style
    │                               ├── AbstractCellStyleStrategy.java
    │                               ├── AbstractVerticalCellStyleStrategy.java
    │                               ├── DefaultStyle.java
    │                               ├── HorizontalCellStyleStrategy.java
    │                               ├── column
    │                                   ├── AbstractColumnWidthStyleStrategy.java
    │                                   ├── AbstractHeadColumnWidthStyleStrategy.java
    │                                   ├── LongestMatchColumnWidthStyleStrategy.java
    │                                   └── SimpleColumnWidthStyleStrategy.java
    │                               └── row
    │                                   ├── AbstractRowHeightStyleStrategy.java
    │                                   └── SimpleRowHeightStyleStrategy.java
├── fastexcel-support
    ├── README.md
    ├── README_EN.md
    ├── pom.xml
    └── src
    │   └── main
    │       └── java
    │           └── cn
    │               └── idev
    │                   └── excel
    │                       └── support
    │                           └── Empty.java
├── fastexcel-test
    ├── README.md
    ├── pom.xml
    └── src
    │   └── test
    │       ├── java
    │           └── cn
    │           │   └── idev
    │           │       └── excel
    │           │           └── test
    │           │               ├── core
    │           │                   ├── StyleTestUtils.java
    │           │                   ├── annotation
    │           │                   │   ├── AnnotationData.java
    │           │                   │   ├── AnnotationDataListener.java
    │           │                   │   ├── AnnotationDataTest.java
    │           │                   │   ├── AnnotationIndexAndNameData.java
    │           │                   │   ├── AnnotationIndexAndNameDataListener.java
    │           │                   │   ├── AnnotationIndexAndNameDataTest.java
    │           │                   │   └── AnnotationStyleData.java
    │           │                   ├── bom
    │           │                   │   ├── BomData.java
    │           │                   │   └── BomDataTest.java
    │           │                   ├── cache
    │           │                   │   ├── CacheData.java
    │           │                   │   ├── CacheDataTest.java
    │           │                   │   ├── CacheInvokeData.java
    │           │                   │   └── CacheInvokeMemoryData.java
    │           │                   ├── celldata
    │           │                   │   ├── CellDataDataListener.java
    │           │                   │   ├── CellDataDataTest.java
    │           │                   │   ├── CellDataReadData.java
    │           │                   │   └── CellDataWriteData.java
    │           │                   ├── charset
    │           │                   │   ├── CharsetData.java
    │           │                   │   └── CharsetDataTest.java
    │           │                   ├── compatibility
    │           │                   │   └── CompatibilityTest.java
    │           │                   ├── converter
    │           │                   │   ├── ConverterDataListener.java
    │           │                   │   ├── ConverterDataTest.java
    │           │                   │   ├── ConverterReadData.java
    │           │                   │   ├── ConverterTest.java
    │           │                   │   ├── ConverterWriteData.java
    │           │                   │   ├── CustomConverterTest.java
    │           │                   │   ├── CustomConverterWriteData.java
    │           │                   │   ├── ImageData.java
    │           │                   │   ├── ReadAllConverterData.java
    │           │                   │   ├── ReadAllConverterDataListener.java
    │           │                   │   ├── TimestampNumberConverter.java
    │           │                   │   └── TimestampStringConverter.java
    │           │                   ├── dataformat
    │           │                   │   ├── DateFormatData.java
    │           │                   │   └── DateFormatTest.java
    │           │                   ├── encrypt
    │           │                   │   ├── EncryptData.java
    │           │                   │   ├── EncryptDataListener.java
    │           │                   │   └── EncryptDataTest.java
    │           │                   ├── exception
    │           │                   │   ├── ExcelAnalysisStopSheetExceptionDataListener.java
    │           │                   │   ├── ExceptionData.java
    │           │                   │   ├── ExceptionDataListener.java
    │           │                   │   ├── ExceptionDataTest.java
    │           │                   │   └── ExceptionThrowDataListener.java
    │           │                   ├── excludeorinclude
    │           │                   │   ├── ExcludeOrIncludeData.java
    │           │                   │   └── ExcludeOrIncludeDataTest.java
    │           │                   ├── extra
    │           │                   │   ├── ExtraData.java
    │           │                   │   ├── ExtraDataListener.java
    │           │                   │   └── ExtraDataTest.java
    │           │                   ├── fill
    │           │                   │   ├── FillData.java
    │           │                   │   ├── FillDataTest.java
    │           │                   │   ├── annotation
    │           │                   │   │   ├── FillAnnotationData.java
    │           │                   │   │   └── FillAnnotationDataTest.java
    │           │                   │   └── style
    │           │                   │   │   ├── FillStyleAnnotatedData.java
    │           │                   │   │   ├── FillStyleAnnotatedTest.java
    │           │                   │   │   ├── FillStyleData.java
    │           │                   │   │   └── FillStyleDataTest.java
    │           │                   ├── handler
    │           │                   │   ├── WriteHandler.java
    │           │                   │   ├── WriteHandlerData.java
    │           │                   │   └── WriteHandlerTest.java
    │           │                   ├── head
    │           │                   │   ├── ComplexDataListener.java
    │           │                   │   ├── ComplexHeadData.java
    │           │                   │   ├── ComplexHeadDataTest.java
    │           │                   │   ├── ListHeadDataListener.java
    │           │                   │   ├── ListHeadDataTest.java
    │           │                   │   ├── MaxHeadReadListener.java
    │           │                   │   ├── MaxHeadSizeData.java
    │           │                   │   ├── MaxHeadSizeTest.java
    │           │                   │   ├── NoHeadData.java
    │           │                   │   ├── NoHeadDataListener.java
    │           │                   │   └── NoHeadDataTest.java
    │           │                   ├── hiddensheets
    │           │                   │   ├── HiddenSheetsData.java
    │           │                   │   ├── HiddenSheetsListener.java
    │           │                   │   └── HiddenSheetsTest.java
    │           │                   ├── large
    │           │                   │   ├── LargeData.java
    │           │                   │   ├── LargeDataListener.java
    │           │                   │   └── LargeDataTest.java
    │           │                   ├── multiplesheets
    │           │                   │   ├── MultipleSheetsData.java
    │           │                   │   ├── MultipleSheetsDataTest.java
    │           │                   │   └── MultipleSheetsListener.java
    │           │                   ├── nomodel
    │           │                   │   └── NoModelDataTest.java
    │           │                   ├── noncamel
    │           │                   │   ├── UnCamelData.java
    │           │                   │   ├── UnCamelDataListener.java
    │           │                   │   └── UnCamelDataTest.java
    │           │                   ├── parameter
    │           │                   │   ├── ParameterData.java
    │           │                   │   ├── ParameterDataListener.java
    │           │                   │   └── ParameterDataTest.java
    │           │                   ├── repetition
    │           │                   │   ├── RepetitionData.java
    │           │                   │   ├── RepetitionDataListener.java
    │           │                   │   └── RepetitionDataTest.java
    │           │                   ├── simple
    │           │                   │   ├── SimpleData.java
    │           │                   │   ├── SimpleDataListener.java
    │           │                   │   ├── SimpleDataSheetNameListener.java
    │           │                   │   └── SimpleDataTest.java
    │           │                   ├── skip
    │           │                   │   ├── SkipData.java
    │           │                   │   └── SkipDataTest.java
    │           │                   ├── sort
    │           │                   │   ├── SortData.java
    │           │                   │   ├── SortDataListener.java
    │           │                   │   └── SortDataTest.java
    │           │                   ├── style
    │           │                   │   ├── StyleData.java
    │           │                   │   ├── StyleDataListener.java
    │           │                   │   └── StyleDataTest.java
    │           │                   └── template
    │           │                   │   ├── TemplateData.java
    │           │                   │   ├── TemplateDataListener.java
    │           │                   │   └── TemplateDataTest.java
    │           │               ├── demo
    │           │                   ├── fill
    │           │                   │   ├── FillData.java
    │           │                   │   └── FillTest.java
    │           │                   ├── rare
    │           │                   │   └── WriteTest.java
    │           │                   ├── read
    │           │                   │   ├── CellDataDemoHeadDataListener.java
    │           │                   │   ├── CellDataReadDemoData.java
    │           │                   │   ├── ConverterData.java
    │           │                   │   ├── ConverterDataListener.java
    │           │                   │   ├── CustomStringStringConverter.java
    │           │                   │   ├── DemoChainAccessorsData.java
    │           │                   │   ├── DemoCompatibleHeaderData.java
    │           │                   │   ├── DemoCompatibleHeaderDataListener.java
    │           │                   │   ├── DemoDAO.java
    │           │                   │   ├── DemoData.java
    │           │                   │   ├── DemoDataAnother.java
    │           │                   │   ├── DemoDataListener.java
    │           │                   │   ├── DemoExceptionListener.java
    │           │                   │   ├── DemoExtraData.java
    │           │                   │   ├── DemoExtraListener.java
    │           │                   │   ├── DemoHeadDataListener.java
    │           │                   │   ├── ExceptionDemoData.java
    │           │                   │   ├── GenericHeaderTypeDataListener.java
    │           │                   │   ├── IndexOrNameData.java
    │           │                   │   ├── IndexOrNameDataListener.java
    │           │                   │   ├── NoModelDataListener.java
    │           │                   │   ├── ReadTest.java
    │           │                   │   └── Sample.java
    │           │                   ├── web
    │           │                   │   ├── DownloadData.java
    │           │                   │   ├── EasyexcelApplication.java
    │           │                   │   ├── UploadDAO.java
    │           │                   │   ├── UploadData.java
    │           │                   │   ├── UploadDataListener.java
    │           │                   │   └── WebTest.java
    │           │                   └── write
    │           │                   │   ├── ColorDemoData.java
    │           │                   │   ├── CommentWriteHandler.java
    │           │                   │   ├── ComplexHeadData.java
    │           │                   │   ├── ConverterData.java
    │           │                   │   ├── CustomCellWriteHandler.java
    │           │                   │   ├── CustomSheetWriteHandler.java
    │           │                   │   ├── CustomStringStringConverter.java
    │           │                   │   ├── DemoData.java
    │           │                   │   ├── DemoMergeData.java
    │           │                   │   ├── DemoStyleData.java
    │           │                   │   ├── ImageDataWithAnnotation.java
    │           │                   │   ├── ImageDemoData.java
    │           │                   │   ├── IndexData.java
    │           │                   │   ├── LongestMatchColumnWidthData.java
    │           │                   │   ├── WidthAndHeightData.java
    │           │                   │   ├── WriteCellDemoData.java
    │           │                   │   ├── WriteTest.java
    │           │                   │   └── WriteWithColorTest.java
    │           │               ├── temp
    │           │                   ├── CamlData.java
    │           │                   ├── DemoData2.java
    │           │                   ├── DemoData3.java
    │           │                   ├── FillTempTest.java
    │           │                   ├── Lock2Test.java
    │           │                   ├── LockData.java
    │           │                   ├── LockDataListener.java
    │           │                   ├── LockTest.java
    │           │                   ├── StyleData.java
    │           │                   ├── StyleTest.java
    │           │                   ├── TempFillData.java
    │           │                   ├── WriteLargeTest.java
    │           │                   ├── WriteV33Test.java
    │           │                   ├── WriteV34Test.java
    │           │                   ├── Xls03Test.java
    │           │                   ├── bug
    │           │                   │   ├── DataType.java
    │           │                   │   ├── ExcelCreat.java
    │           │                   │   └── HeadType.java
    │           │                   ├── cache
    │           │                   │   └── CacheTest.java
    │           │                   ├── csv
    │           │                   │   ├── CsvData.java
    │           │                   │   ├── CsvDataListener.java
    │           │                   │   ├── CsvFormatTest.java
    │           │                   │   └── CsvReadTest.java
    │           │                   ├── data
    │           │                   │   ├── DataType.java
    │           │                   │   └── HeadType.java
    │           │                   ├── dataformat
    │           │                   │   ├── DataFormatData.java
    │           │                   │   ├── DataFormatTest.java
    │           │                   │   └── DataFormatter1.java
    │           │                   ├── fill
    │           │                   │   ├── FillData2.java
    │           │                   │   └── FillTempTest.java
    │           │                   ├── issue1662
    │           │                   │   ├── Data1662.java
    │           │                   │   └── Issue1662Test.java
    │           │                   ├── issue1663
    │           │                   │   ├── FillData.java
    │           │                   │   └── FillTest.java
    │           │                   ├── issue2319
    │           │                   │   ├── Issue2319.java
    │           │                   │   └── Issue2319Test.java
    │           │                   ├── issue2443
    │           │                   │   ├── Issue2443.java
    │           │                   │   └── Issue2443Test.java
    │           │                   ├── large
    │           │                   │   ├── LargeData.java
    │           │                   │   ├── LargeDataListener.java
    │           │                   │   ├── NoModelLargeDataListener.java
    │           │                   │   └── TempLargeDataTest.java
    │           │                   ├── poi
    │           │                   │   ├── Poi2Test.java
    │           │                   │   ├── Poi3Test.java
    │           │                   │   ├── PoiDateFormatTest.java
    │           │                   │   ├── PoiEncryptTest.java
    │           │                   │   ├── PoiFormatTest.java
    │           │                   │   ├── PoiTest.java
    │           │                   │   ├── PoiWriteTest.java
    │           │                   │   └── TestCell.java
    │           │                   ├── read
    │           │                   │   ├── CommentTest.java
    │           │                   │   ├── HDListener.java
    │           │                   │   ├── HeadListener.java
    │           │                   │   ├── HeadReadData.java
    │           │                   │   ├── HeadReadTest.java
    │           │                   │   ├── TestListener.java
    │           │                   │   └── WebStreamReadTest.java
    │           │                   ├── simple
    │           │                   │   ├── DemoData1.java
    │           │                   │   ├── DemoData2.java
    │           │                   │   ├── HgListener.java
    │           │                   │   ├── JsonData.java
    │           │                   │   ├── RepeatListener.java
    │           │                   │   ├── RepeatTest.java
    │           │                   │   ├── Write.java
    │           │                   │   ├── WriteCellHandler.java
    │           │                   │   ├── WriteData.java
    │           │                   │   └── WriteHandler.java
    │           │                   └── write
    │           │                   │   ├── TempWriteData.java
    │           │                   │   └── TempWriteTest.java
    │           │               └── util
    │           │                   ├── TestFileUtil.java
    │           │                   └── TestUtil.java
    │       └── resources
    │           ├── bom
    │               ├── no_bom.csv
    │               └── office_bom.csv
    │           ├── cache
    │               ├── headt1.xls
    │               └── t2.xlsx
    │           ├── comment
    │               ├── comment.xls
    │               └── comment.xlsx
    │           ├── compatibility
    │               ├── t01.xls
    │               ├── t02.xlsx
    │               ├── t03.xlsx
    │               ├── t04.xlsx
    │               ├── t05.xlsx
    │               ├── t06.xlsx
    │               ├── t07.xlsx
    │               └── t09.xlsx
    │           ├── converter
    │               ├── converter03.xls
    │               ├── converter07.xlsx
    │               ├── converterCsv.csv
    │               └── img.jpg
    │           ├── csv
    │               ├── simple-delimiter.csv
    │               ├── simple-quote.csv
    │               └── simple.csv
    │           ├── dataformat
    │               ├── dataformat.xls
    │               ├── dataformat.xlsx
    │               └── dataformatv2.xlsx
    │           ├── demo
    │               ├── cellDataDemo.xlsx
    │               ├── demo.csv
    │               ├── demo.xlsx
    │               ├── extra.xlsx
    │               ├── fill
    │               │   ├── complex.xlsx
    │               │   ├── complexFillWithTable.xlsx
    │               │   ├── composite.xlsx
    │               │   ├── dateFormat.xlsx
    │               │   ├── horizontal.xlsx
    │               │   ├── list.xlsx
    │               │   └── simple.xlsx
    │               ├── generic-demo.xlsx
    │               └── pwd_123.xls
    │           ├── extra
    │               ├── extra.xls
    │               ├── extra.xlsx
    │               └── extraRelationships.xlsx
    │           ├── fill
    │               ├── annotation.xls
    │               ├── annotation.xlsx
    │               ├── byName.xls
    │               ├── byName.xlsx
    │               ├── complex.xls
    │               ├── complex.xlsx
    │               ├── composite.xls
    │               ├── composite.xlsx
    │               ├── horizontal.xls
    │               ├── horizontal.xlsx
    │               ├── simple.csv
    │               ├── simple.xls
    │               ├── simple.xlsx
    │               ├── style.xls
    │               └── style.xlsx
    │           ├── hiddensheets
    │               ├── hiddensheets.xls
    │               └── hiddensheets.xlsx
    │           ├── large
    │               ├── fill.xlsx
    │               └── large07.xlsx
    │           ├── logback.xml
    │           ├── multiplesheets
    │               ├── multiplesheets.xls
    │               └── multiplesheets.xlsx
    │           ├── poi
    │               ├── last_row_number_test.xlsx
    │               ├── last_row_number_xssf_date_test.csv
    │               ├── last_row_number_xssf_date_test.xls
    │               ├── last_row_number_xssf_date_test.xlsx
    │               └── last_row_number_xssf_test.xlsx
    │           ├── repeat
    │               ├── repeat.xls
    │               └── repeat.xlsx
    │           ├── simple
    │               ├── LargeData.xlsx
    │               ├── no_model_10000_rows.xlsx
    │               └── simple07.xlsx
    │           ├── style
    │               ├── styleTest.xls
    │               └── styleTest.xlsx
    │           ├── temp
    │               ├── issue1663
    │               │   └── template.xlsx
    │               ├── issue220
    │               │   ├── test01.xlsx
    │               │   ├── test02.xlsx
    │               │   └── test03.xlsx
    │               ├── issue2319
    │               │   ├── test1.xlsx
    │               │   └── test2.xlsx
    │               ├── issue2443
    │               │   ├── date1.xlsx
    │               │   └── date2.xlsx
    │               ├── lock_data.xlsx
    │               └── number_format.xlsx
    │           ├── template
    │               ├── template03.xls
    │               └── template07.xlsx
    │           └── web
    │               └── io.xlsx
├── fastexcel
    ├── pom.xml
    └── src
    │   └── main
    │       └── java
    │           └── cn
    │               └── idev
    │                   └── excel
    │                       └── easyexcelplus
    │                           └── Empty.java
├── img
    ├── readme
    │   ├── large.png
    │   └── logo.svg
    └── style
    │   ├── eclipse
    │       └── step.jpg
    │   └── idea
    │       ├── step1.png
    │       ├── step2.png
    │       └── step3.png
├── lombok.config
├── mvnw
├── mvnw.cmd
├── pom.xml
└── style
    ├── STYLE.md
    ├── checkstyle
        └── fastexcel_checkstyle.xml
    └── codestyle
        ├── eclipse
            └── fastexcel_codestyle.xml
        └── idea
            └── fastexcel_codestyle.xml


/.editorconfig:
--------------------------------------------------------------------------------
 1 | root = true
 2 | 
 3 | [*.{groovy,java,kt,xml}]
 4 | indent_style = space
 5 | indent_size = 4
 6 | end_of_line = lf
 7 | charset = utf-8
 8 | trim_trailing_whitespace = true
 9 | insert_final_newline = true
10 | 


--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: true
2 | contact_links:
3 |   - name: Ask a question or get support
4 |     url: https://github.com/fast-excel/fastexcel/discussions
5 |     about: Ask a question or request support for using Fastexcel
6 |   - name: 用户问题或提出建议
7 |     url: https://github.com/fast-excel/fastexcel/discussions
8 |     about: 反馈使用 Fastexcel 时遇到的问题,或对 Fastexcel 的建议
9 | 


--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
 1 | <!--
 2 | Thanks very much for contributing to FastExcel! Please make sure that your code changes
 3 | are covered with tests. And in case of new features or big changes
 4 | remember to adjust the documentation.
 5 | 
 6 | Feel free to ping committers for the review!
 7 | 
 8 | In case of an existing issue, reference it using one of the following:
 9 | 
10 | Closed: #ISSUE
11 | Related: #ISSUE
12 | 
13 | -->
14 | 
15 | ## Purpose of the pull request
16 | 
17 | <!-- Describe the purpose of this pull request. For example: Closed: #ISSUE-->
18 | 
19 | ## What's changed?
20 | 
21 | <!--- Describe the change below, including rationale and design decisions -->
22 | 
23 | ## Checklist
24 | 
25 | - [ ] I have written the necessary doc or comment.
26 | - [ ] I have added the necessary unit tests and all cases have passed.


--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
 1 | .idea/
 2 | */.settings/
 3 | *.idea
 4 | .DS_Store
 5 | **/.iml*
 6 | *.iml
 7 | **/.class
 8 | **/.classpath
 9 | **/.project
10 | */target/
11 | target/
12 | *.ipr
13 | *.iws
14 | antx.properties
15 | output/
16 | .flattened-pom.xml
17 | dependency-reduced-pom.xml
18 | 
19 | /.mvn/wrapper/maven-wrapper.jar
20 | 


--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
 1 | # Licensed to the Apache Software Foundation (ASF) under one
 2 | # or more contributor license agreements.  See the NOTICE file
 3 | # distributed with this work for additional information
 4 | # regarding copyright ownership.  The ASF licenses this file
 5 | # to you under the Apache License, Version 2.0 (the
 6 | # "License"); you may not use this file except in compliance
 7 | # with the License.  You may obtain a copy of the License at
 8 | #
 9 | #   http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied.  See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
18 | wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar
19 | 


--------------------------------------------------------------------------------
/CODEOWNERS:
--------------------------------------------------------------------------------
1 | /fastexcel-core/ @jipengfei-jpf @psxjoy
2 | /fastexcel-test/ @jipengfei-jpf @psxjoy
3 | 


--------------------------------------------------------------------------------
/doc/font/SimHei.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/doc/font/SimHei.ttf


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/EasyExcel.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel;
2 | 
3 | /**
4 |  * This is actually {@link FastExcelFactory}, and short names look better.
5 |  *
6 |  * @author jipengfei
7 |  */
8 | public class EasyExcel extends FastExcelFactory {}
9 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/FastExcel.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel;
 2 | 
 3 | /**
 4 |  * This is actually {@link FastExcelFactory}, and short names look better.
 5 |  *
 6 |  * @author jipengfei
 7 |  */
 8 | public class FastExcel extends FastExcelFactory {
 9 | 
10 | }
11 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/ExcelAnalyser.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.analysis;
 2 | 
 3 | import java.util.List;
 4 | 
 5 | import cn.idev.excel.read.metadata.ReadSheet;
 6 | import cn.idev.excel.context.AnalysisContext;
 7 | 
 8 | /**
 9 |  * Excel file analyser
10 |  *
11 |  * @author jipengfei
12 |  */
13 | public interface ExcelAnalyser {
14 |     /**
15 |      * parse the sheet
16 |      *
17 |      * @param readSheetList
18 |      *            Which sheets you need to read.
19 |      * @param readAll
20 |      *            The <code>readSheetList</code> parameter is ignored, and all sheets are read.
21 |      */
22 |     void analysis(List<ReadSheet> readSheetList, Boolean readAll);
23 | 
24 |     /**
25 |      * Complete the entire read file.Release the cache and close stream
26 |      */
27 |     void finish();
28 | 
29 |     /**
30 |      * Acquisition excel executor
31 |      *
32 |      * @return Excel file Executor
33 |      */
34 |     ExcelReadExecutor excelExecutor();
35 | 
36 |     /**
37 |      * get the analysis context.
38 |      *
39 |      * @return analysis context
40 |      */
41 |     AnalysisContext analysisContext();
42 | 
43 | }
44 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/analysis/ExcelReadExecutor.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.analysis;
 2 | 
 3 | import java.util.List;
 4 | 
 5 | import cn.idev.excel.read.metadata.ReadSheet;
 6 | 
 7 | /**
 8 |  * Excel file Executor
 9 |  *
10 |  * @author Jiaju Zhuang
11 |  */
12 | public interface ExcelReadExecutor {
13 | 
14 |     /**
15 |      * Returns the actual sheet in excel
16 |      *
17 |      * @return Actual sheet in excel
18 |      */
19 |     List<ReadSheet> 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/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 |  * <p>
15 |  * write: It can be used on classes {@link java.util.Date}
16 |  * <p>
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 |  * <p>
14 |  * write: It can be used on classes that inherit {@link Number}
15 |  * <p>
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 |      * <p>
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 |      * <p>
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 |      * <p>
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<String> 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<Object> {
 9 | }
10 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/converters/NullableObjectConverter.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.converters;
 2 | 
 3 | /**
 4 |  * When implementing <code>convertToExcelData</code> method, pay attention to the reference <code>value</code> may be
 5 |  * null
 6 |  *
 7 |  * @author JiaJu Zhuang
 8 |  **/
 9 | public interface NullableObjectConverter<T> extends Converter<T> {
10 | }
11 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/converters/ReadConverterContext.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.converters;
 2 | 
 3 | import cn.idev.excel.context.AnalysisContext;
 4 | import cn.idev.excel.metadata.data.ReadCellData;
 5 | import cn.idev.excel.metadata.property.ExcelContentProperty;
 6 | 
 7 | import lombok.AllArgsConstructor;
 8 | import lombok.EqualsAndHashCode;
 9 | import lombok.Getter;
10 | import lombok.Setter;
11 | 
12 | /**
13 |  * read converter context
14 |  *
15 |  * @author Jiaju Zhuang
16 |  */
17 | @Getter
18 | @Setter
19 | @EqualsAndHashCode
20 | @AllArgsConstructor
21 | public class ReadConverterContext<T> {
22 |     /**
23 |      * Excel cell data.NotNull.
24 |      */
25 |     private ReadCellData<T> readCellData;
26 |     /**
27 |      * Content property.Nullable.
28 |      */
29 |     private ExcelContentProperty contentProperty;
30 |     /**
31 |      * context.NotNull.
32 |      */
33 |     private AnalysisContext analysisContext;
34 | }
35 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/converters/WriteConverterContext.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.converters;
 2 | 
 3 | import cn.idev.excel.context.WriteContext;
 4 | import cn.idev.excel.metadata.property.ExcelContentProperty;
 5 | 
 6 | import lombok.AllArgsConstructor;
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.NoArgsConstructor;
10 | import lombok.Setter;
11 | 
12 | /**
13 |  * write converter context
14 |  *
15 |  * @author Jiaju Zhuang
16 |  */
17 | @Getter
18 | @Setter
19 | @EqualsAndHashCode
20 | @NoArgsConstructor
21 | @AllArgsConstructor
22 | public class WriteConverterContext<T> {
23 | 
24 |     /**
25 |      * Java Data.NotNull.
26 |      */
27 |     private T value;
28 | 
29 |     /**
30 |      * Content property.Nullable.
31 |      */
32 |     private ExcelContentProperty contentProperty;
33 | 
34 |     /**
35 |      * write context
36 |      */
37 |     private WriteContext writeContext;
38 | }
39 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/converters/bytearray/BoxingByteArrayImageConverter.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.converters.bytearray;
 2 | 
 3 | import cn.idev.excel.converters.Converter;
 4 | import cn.idev.excel.metadata.GlobalConfiguration;
 5 | import cn.idev.excel.metadata.data.WriteCellData;
 6 | import cn.idev.excel.metadata.property.ExcelContentProperty;
 7 | 
 8 | /**
 9 |  * Boxing Byte array and image converter
10 |  *
11 |  * @author Jiaju Zhuang
12 |  */
13 | public class BoxingByteArrayImageConverter implements Converter<Byte[]> {
14 |     @Override
15 |     public Class<?> supportJavaTypeKey() {
16 |         return Byte[].class;
17 |     }
18 | 
19 |     @Override
20 |     public WriteCellData<?> convertToExcelData(Byte[] value, ExcelContentProperty contentProperty,
21 |                                                GlobalConfiguration globalConfiguration) {
22 |         byte[] byteValue = new byte[value.length];
23 |         for (int i = 0; i < value.length; i++) {
24 |             byteValue[i] = value[i];
25 |         }
26 |         return new WriteCellData<>(byteValue);
27 |     }
28 | 
29 | }
30 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/converters/bytearray/ByteArrayImageConverter.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.converters.bytearray;
 2 | 
 3 | import cn.idev.excel.converters.Converter;
 4 | import cn.idev.excel.metadata.GlobalConfiguration;
 5 | import cn.idev.excel.metadata.data.WriteCellData;
 6 | import cn.idev.excel.metadata.property.ExcelContentProperty;
 7 | 
 8 | /**
 9 |  * Byte array and image converter
10 |  *
11 |  * @author Jiaju Zhuang
12 |  */
13 | public class ByteArrayImageConverter implements Converter<byte[]> {
14 | 
15 |     @Override
16 |     public Class<byte[]> supportJavaTypeKey() {
17 |         return byte[].class;
18 |     }
19 | 
20 |     @Override
21 |     public WriteCellData<?> convertToExcelData(byte[] value, ExcelContentProperty contentProperty,
22 |                                                GlobalConfiguration globalConfiguration) {
23 |         return new WriteCellData<>(value);
24 |     }
25 | 
26 | }
27 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/converters/file/FileImageConverter.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.converters.file;
 2 | 
 3 | import java.io.File;
 4 | import java.io.IOException;
 5 | 
 6 | import cn.idev.excel.converters.Converter;
 7 | import cn.idev.excel.util.FileUtils;
 8 | import cn.idev.excel.metadata.GlobalConfiguration;
 9 | import cn.idev.excel.metadata.data.WriteCellData;
10 | import cn.idev.excel.metadata.property.ExcelContentProperty;
11 | 
12 | /**
13 |  * File and image converter
14 |  *
15 |  * @author Jiaju Zhuang
16 |  */
17 | public class FileImageConverter implements Converter<File> {
18 |     @Override
19 |     public Class<?> supportJavaTypeKey() {
20 |         return File.class;
21 |     }
22 | 
23 |     @Override
24 |     public WriteCellData<?> convertToExcelData(File value, ExcelContentProperty contentProperty,
25 |                                                GlobalConfiguration globalConfiguration) throws IOException {
26 |         return new WriteCellData<>(FileUtils.readFileToByteArray(value));
27 |     }
28 | }
29 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/converters/inputstream/InputStreamImageConverter.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.converters.inputstream;
 2 | 
 3 | import java.io.IOException;
 4 | import java.io.InputStream;
 5 | 
 6 | import cn.idev.excel.converters.Converter;
 7 | import cn.idev.excel.util.IoUtils;
 8 | import cn.idev.excel.metadata.GlobalConfiguration;
 9 | import cn.idev.excel.metadata.data.WriteCellData;
10 | import cn.idev.excel.metadata.property.ExcelContentProperty;
11 | 
12 | /**
13 |  * File and image converter
14 |  *
15 |  * @author Jiaju Zhuang
16 |  */
17 | public class InputStreamImageConverter implements Converter<InputStream> {
18 |     @Override
19 |     public Class<?> supportJavaTypeKey() {
20 |         return InputStream.class;
21 |     }
22 | 
23 |     @Override
24 |     public WriteCellData<?> convertToExcelData(InputStream value, ExcelContentProperty contentProperty,
25 |                                                GlobalConfiguration globalConfiguration) throws IOException {
26 |         return new WriteCellData<>(IoUtils.toByteArray(value));
27 |     }
28 | 
29 | }
30 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/converters/string/StringImageConverter.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.converters.string;
 2 | 
 3 | import java.io.File;
 4 | import java.io.IOException;
 5 | 
 6 | import cn.idev.excel.converters.Converter;
 7 | import cn.idev.excel.util.FileUtils;
 8 | import cn.idev.excel.metadata.GlobalConfiguration;
 9 | import cn.idev.excel.metadata.data.WriteCellData;
10 | import cn.idev.excel.metadata.property.ExcelContentProperty;
11 | 
12 | /**
13 |  * String and image converter
14 |  *
15 |  * @author Jiaju Zhuang
16 |  */
17 | public class StringImageConverter implements Converter<String> {
18 |     @Override
19 |     public Class<?> supportJavaTypeKey() {
20 |         return String.class;
21 |     }
22 | 
23 |     @Override
24 |     public WriteCellData<?> convertToExcelData(String value, ExcelContentProperty contentProperty,
25 |                                                GlobalConfiguration globalConfiguration) throws IOException {
26 |         return new WriteCellData<>(FileUtils.readFileToByteArray(new File(value)));
27 |     }
28 | 
29 | }
30 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/enums/BooleanEnum.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.enums;
 2 | 
 3 | import lombok.Getter;
 4 | 
 5 | /**
 6 |  * Default values cannot be used for annotations.
 7 |  * So an additional an enumeration to determine whether the user has added the enumeration.
 8 |  *
 9 |  * @author Jiaju Zhuang
10 |  */
11 | @Getter
12 | public enum BooleanEnum {
13 |     /**
14 |      * NULL
15 |      */
16 |     DEFAULT(null),
17 |     /**
18 |      * TRUE
19 |      */
20 |     TRUE(Boolean.TRUE),
21 |     /**
22 |      * FALSE
23 |      */
24 |     FALSE(Boolean.FALSE),
25 |     ;
26 | 
27 |     Boolean booleanValue;
28 | 
29 |     BooleanEnum(Boolean booleanValue) {
30 |         this.booleanValue = booleanValue;
31 |     }
32 | 
33 | }
34 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/enums/CacheLocationEnum.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.enums;
 2 | 
 3 | /**
 4 |  * cache location
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  **/
 8 | public enum CacheLocationEnum {
 9 |     /**
10 |      * The cache will be stored in {@code ThreadLocal}, and will be cleared when the excel read and write is completed.
11 |      */
12 |     THREAD_LOCAL,
13 | 
14 |     /**
15 |      * The cache will not be cleared unless the app is stopped.
16 |      */
17 |     MEMORY,
18 | 
19 |     /**
20 |      * No caching.It may lose some of performance.
21 |      */
22 |     NONE
23 | }
24 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/enums/CellExtraTypeEnum.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.enums;
 2 | 
 3 | /**
 4 |  * Extra data type
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  **/
 8 | public enum CellExtraTypeEnum {
 9 |     /**
10 |      * Comment
11 |      */
12 |     COMMENT,
13 |     /**
14 |      * Hyperlink
15 |      */
16 |     HYPERLINK,
17 |     /**
18 |      * Merge
19 |      */
20 |     MERGE
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/enums/HeadKindEnum.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.enums;
 2 | 
 3 | /**
 4 |  * The types of header
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  **/
 8 | public enum HeadKindEnum {
 9 |     /**
10 |      * none
11 |      */
12 |     NONE,
13 |     /**
14 |      * class
15 |      */
16 |     CLASS,
17 |     /**
18 |      * String
19 |      */
20 |     STRING
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/enums/HolderEnum.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.enums;
 2 | 
 3 | /**
 4 |  * The types of holder
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  **/
 8 | public enum HolderEnum {
 9 |     /**
10 |      * workbook
11 |      */
12 |     WORKBOOK,
13 |     /**
14 |      * sheet
15 |      */
16 |     SHEET,
17 |     /**
18 |      * table
19 |      */
20 |     TABLE,
21 |     /**
22 |      * row
23 |      */
24 |     ROW;
25 | }
26 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/enums/NumericCellTypeEnum.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.enums;
 2 | 
 3 | import org.apache.poi.ss.usermodel.CellType;
 4 | 
 5 | /**
 6 |  * Used to supplement {@link CellType}.
 7 |  *
 8 |  * Cannot distinguish between date and number in write case.
 9 |  *
10 |  * @author Jiaju Zhuang
11 |  */
12 | public enum NumericCellTypeEnum {
13 |     /**
14 |      * number
15 |      */
16 |     NUMBER,
17 |     /**
18 |      * date. Support only when writing.
19 |      */
20 |     DATE,
21 |     ;
22 | }
23 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/enums/ReadDefaultReturnEnum.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.enums;
 2 | 
 3 | import java.math.BigDecimal;
 4 | import java.time.LocalDateTime;
 5 | 
 6 | import cn.idev.excel.metadata.data.ReadCellData;
 7 | 
 8 | /**
 9 |  * Read not to {@code cn.idev.excel.metadata.BasicParameter#clazz} value, the default will return type.
10 |  *
11 |  * @author Jiaju Zhuang
12 |  */
13 | public enum ReadDefaultReturnEnum {
14 |     /**
15 |      * default.The content of cells into string, is the same as you see in the excel.
16 |      */
17 |     STRING,
18 | 
19 |     /**
20 |      * Returns the actual type.
21 |      * Will be automatically selected according to the cell contents what return type, will return the following class:
22 |      * <ol>
23 |      *     <li>{@link BigDecimal}</li>
24 |      *     <li>{@link Boolean}</li>
25 |      *     <li>{@link String}</li>
26 |      *     <li>{@link LocalDateTime}</li>
27 |      * </ol>
28 |      */
29 |     ACTUAL_DATA,
30 | 
31 |     /**
32 |      * Return to {@link ReadCellData}, can decide which field you need.
33 |      */
34 |     READ_CELL_DATA
35 | 
36 | }
37 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/enums/RowTypeEnum.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.enums;
 2 | 
 3 | /**
 4 |  * The types of row
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  **/
 8 | public enum RowTypeEnum {
 9 |     /**
10 |      * data
11 |      */
12 |     DATA,
13 |     /**
14 |      * empty
15 |      */
16 |     EMPTY,;
17 | }
18 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/enums/WriteDirectionEnum.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.enums;
 2 | 
 3 | /**
 4 |  * Direction of writing
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  **/
 8 | public enum WriteDirectionEnum {
 9 |     /**
10 |      * Vertical write.
11 |      */
12 |     VERTICAL,
13 |     /**
14 |      * Horizontal write.
15 |      */
16 |     HORIZONTAL,;
17 | }
18 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/enums/WriteLastRowTypeEnum.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.enums;
 2 | 
 3 | /**
 4 |  * The types of write last row
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  **/
 8 | public enum WriteLastRowTypeEnum {
 9 |     /**
10 |      * Excel are created without templates ,And any data has been written;
11 |      */
12 |     COMMON_EMPTY,
13 |     /**
14 |      * Excel are created with templates ,And any data has been written;
15 |      */
16 |     TEMPLATE_EMPTY,
17 |     /**
18 |      * Any data has been written;
19 |      */
20 |     HAS_DATA
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/enums/WriteTemplateAnalysisCellTypeEnum.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.enums;
 2 | 
 3 | /**
 4 |  * Type of template to read when writing
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  **/
 8 | public enum WriteTemplateAnalysisCellTypeEnum {
 9 |     /**
10 |      * Common field.
11 |      */
12 |     COMMON,
13 |     /**
14 |      * A collection of fields.
15 |      */
16 |     COLLECTION
17 | }
18 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/enums/WriteTypeEnum.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.enums;
 2 | 
 3 | /**
 4 |  * Enumeration of write methods
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  **/
 8 | public enum WriteTypeEnum {
 9 |     /**
10 |      * Add.
11 |      */
12 |     ADD,
13 |     /**
14 |      * Fill.
15 |      */
16 |     FILL
17 | }
18 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/event/AnalysisEventListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.event;
 2 | 
 3 | import java.util.Map;
 4 | 
 5 | import cn.idev.excel.context.AnalysisContext;
 6 | import cn.idev.excel.metadata.data.ReadCellData;
 7 | import cn.idev.excel.read.listener.ReadListener;
 8 | import cn.idev.excel.util.ConverterUtils;
 9 | 
10 | /**
11 |  * Receives the return of each piece of data parsed
12 |  *
13 |  * @author jipengfei
14 |  */
15 | public abstract class AnalysisEventListener<T> implements ReadListener<T> {
16 | 
17 |     @Override
18 |     public void invokeHead(Map<Integer, ReadCellData<?>> headMap, AnalysisContext context) {
19 |         invokeHeadMap(ConverterUtils.convertToStringMap(headMap, context), context);
20 |     }
21 | 
22 |     /**
23 |      * Returns the header as a map.Override the current method to receive header data.
24 |      *
25 |      * @param headMap
26 |      * @param context
27 |      */
28 |     public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {}
29 | 
30 | }
31 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/event/Handler.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.event;
 2 | 
 3 | import cn.idev.excel.constant.OrderConstant;
 4 | 
 5 | /**
 6 |  * Intercepts handle some business logic
 7 |  *
 8 |  * @author Jiaju Zhuang
 9 |  **/
10 | public interface Handler extends Order {
11 | 
12 |     /**
13 |      * handler order
14 |      *
15 |      * @return order
16 |      */
17 |     @Override
18 |     default int order() {
19 |         return OrderConstant.DEFAULT_ORDER;
20 |     }
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/event/Listener.java:
--------------------------------------------------------------------------------
1 | package cn.idev.excel.event;
2 | 
3 | /**
4 |  * Interface to listen for processing results
5 |  *
6 |  * @author Jiaju Zhuang
7 |  */
8 | public interface Listener {}
9 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/event/NotRepeatExecutor.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.event;
 2 | 
 3 | /**
 4 |  * There are multiple interceptors that execute only one of them when fired once.If you want to control which one to
 5 |  * execute please use {@link Order}
 6 |  *
 7 |  * @author Jiaju Zhuang
 8 |  **/
 9 | public interface NotRepeatExecutor {
10 |     /**
11 |      * To see if it's the same executor
12 |      *
13 |      * @return
14 |      */
15 |     String uniqueValue();
16 | }
17 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/event/Order.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.event;
 2 | 
 3 | /**
 4 |  * Implement this interface when sorting
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  */
 8 | public interface Order {
 9 |     /**
10 |      * The smaller the first implementation
11 |      *
12 |      * @return
13 |      */
14 |     int order();
15 | }
16 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/event/SyncReadListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.event;
 2 | 
 3 | import java.util.ArrayList;
 4 | import java.util.List;
 5 | 
 6 | import cn.idev.excel.context.AnalysisContext;
 7 | 
 8 | /**
 9 |  * Synchronous data reading
10 |  *
11 |  * @author Jiaju Zhuang
12 |  */
13 | public class SyncReadListener extends AnalysisEventListener<Object> {
14 |     private List<Object> list = new ArrayList<Object>();
15 | 
16 |     @Override
17 |     public void invoke(Object object, AnalysisContext context) {
18 |         list.add(object);
19 |     }
20 | 
21 |     @Override
22 |     public void doAfterAllAnalysed(AnalysisContext context) {}
23 | 
24 |     public List<Object> getList() {
25 |         return list;
26 |     }
27 | 
28 |     public void setList(List<Object> list) {
29 |         this.list = list;
30 |     }
31 | }
32 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/exception/ExcelAnalysisException.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.exception;
 2 | 
 3 | /**
 4 |  *
 5 |  * @author jipengfei
 6 |  */
 7 | public class ExcelAnalysisException extends ExcelRuntimeException {
 8 | 
 9 |     public ExcelAnalysisException() {}
10 | 
11 |     public ExcelAnalysisException(String message) {
12 |         super(message);
13 |     }
14 | 
15 |     public ExcelAnalysisException(String message, Throwable cause) {
16 |         super(message, cause);
17 |     }
18 | 
19 |     public ExcelAnalysisException(Throwable cause) {
20 |         super(cause);
21 |     }
22 | }
23 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/exception/ExcelAnalysisStopException.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.exception;
 2 | 
 3 | /**
 4 |  * Throw the exception when you need to stop
 5 |  * This exception will stop the entire excel parsing. If you only want to stop the parsing of a certain sheet, please
 6 |  * use ExcelAnalysisStopSheetException.
 7 |  *
 8 |  * @author Jiaju Zhuang
 9 |  * @see ExcelAnalysisStopException
10 |  */
11 | public class ExcelAnalysisStopException extends ExcelAnalysisException {
12 | 
13 |     public ExcelAnalysisStopException() {}
14 | 
15 |     public ExcelAnalysisStopException(String message) {
16 |         super(message);
17 |     }
18 | 
19 |     public ExcelAnalysisStopException(String message, Throwable cause) {
20 |         super(message, cause);
21 |     }
22 | 
23 |     public ExcelAnalysisStopException(Throwable cause) {
24 |         super(cause);
25 |     }
26 | }
27 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/exception/ExcelAnalysisStopSheetException.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.exception;
 2 | 
 3 | /**
 4 |  * Throw the exception when you need to stop
 5 |  * This exception will only stop the parsing of the current sheet. If you want to stop the entire excel parsing, please
 6 |  * use ExcelAnalysisStopException.
 7 |  *
 8 |  * The cn.idev.excel.read.listener.ReadListener#doAfterAllAnalysed(cn.idev.excel.context.AnalysisContext) method
 9 |  * is called after the call is stopped.
10 |  *
11 |  * @author Jiaju Zhuang
12 |  * @see ExcelAnalysisStopException
13 |  * @since 3.3.4
14 |  */
15 | public class ExcelAnalysisStopSheetException extends ExcelAnalysisException {
16 | 
17 |     public ExcelAnalysisStopSheetException() {}
18 | 
19 |     public ExcelAnalysisStopSheetException(String message) {
20 |         super(message);
21 |     }
22 | 
23 |     public ExcelAnalysisStopSheetException(String message, Throwable cause) {
24 |         super(message, cause);
25 |     }
26 | 
27 |     public ExcelAnalysisStopSheetException(Throwable cause) {
28 |         super(cause);
29 |     }
30 | }
31 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/exception/ExcelCommonException.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.exception;
 2 | 
 3 | /**
 4 |  *
 5 |  * @author Jiaju Zhuang
 6 |  */
 7 | public class ExcelCommonException extends ExcelRuntimeException {
 8 | 
 9 |     public ExcelCommonException() {}
10 | 
11 |     public ExcelCommonException(String message) {
12 |         super(message);
13 |     }
14 | 
15 |     public ExcelCommonException(String message, Throwable cause) {
16 |         super(message, cause);
17 |     }
18 | 
19 |     public ExcelCommonException(Throwable cause) {
20 |         super(cause);
21 |     }
22 | }
23 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/exception/ExcelGenerateException.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.exception;
 2 | 
 3 | /**
 4 |  * @author jipengfei
 5 |  */
 6 | public class ExcelGenerateException extends ExcelRuntimeException {
 7 | 
 8 |     public ExcelGenerateException(String message) {
 9 |         super(message);
10 |     }
11 | 
12 |     public ExcelGenerateException(String message, Throwable cause) {
13 |         super(message, cause);
14 |     }
15 | 
16 |     public ExcelGenerateException(Throwable cause) {
17 |         super(cause);
18 |     }
19 | }
20 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/exception/ExcelRuntimeException.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.exception;
 2 | 
 3 | /**
 4 |  * Excel  Exception
 5 |  * @author Jiaju Zhuang
 6 |  */
 7 | public class ExcelRuntimeException extends RuntimeException {
 8 |     public ExcelRuntimeException() {}
 9 | 
10 |     public ExcelRuntimeException(String message) {
11 |         super(message);
12 |     }
13 | 
14 |     public ExcelRuntimeException(String message, Throwable cause) {
15 |         super(message, cause);
16 |     }
17 | 
18 |     public ExcelRuntimeException(Throwable cause) {
19 |         super(cause);
20 |     }
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/AbstractCell.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * cell
 9 |  *
10 |  * @author Jiaju Zhuang
11 |  **/
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class AbstractCell implements Cell {
16 |     /**
17 |      * Row index
18 |      */
19 |     private Integer rowIndex;
20 |     /**
21 |      * Column index
22 |      */
23 |     private Integer columnIndex;
24 | }
25 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/Cell.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata;
 2 | 
 3 | /**
 4 |  * Cell
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  **/
 8 | public interface Cell {
 9 |     /**
10 |      * Row index
11 |      *
12 |      * @return
13 |      */
14 |     Integer getRowIndex();
15 | 
16 |     /**
17 |      * Column index
18 |      *
19 |      * @return
20 |      */
21 |     Integer getColumnIndex();
22 | }
23 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/CellRange.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * @author jipengfei
 9 |  */
10 | @Getter
11 | @Setter
12 | @EqualsAndHashCode
13 | public class CellRange {
14 | 
15 |     private int firstRow;
16 |     private int lastRow;
17 |     private int firstCol;
18 |     private int lastCol;
19 | 
20 |     public CellRange(int firstRow, int lastRow, int firstCol, int lastCol) {
21 |         this.firstRow = firstRow;
22 |         this.lastRow = lastRow;
23 |         this.firstCol = firstCol;
24 |         this.lastCol = lastCol;
25 |     }
26 | }
27 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/ConfigurationHolder.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata;
 2 | 
 3 | import java.util.Map;
 4 | 
 5 | import cn.idev.excel.converters.Converter;
 6 | import cn.idev.excel.converters.ConverterKeyBuild;
 7 | 
 8 | /**
 9 |  * Get the corresponding holder
10 |  *
11 |  * @author Jiaju Zhuang
12 |  **/
13 | public interface ConfigurationHolder extends Holder {
14 | 
15 |     /**
16 |      * Record whether it's new or from cache
17 |      *
18 |      * @return Record whether it's new or from cache
19 |      */
20 |     boolean isNew();
21 | 
22 |     /**
23 |      * Some global variables
24 |      *
25 |      * @return Global configuration
26 |      */
27 |     GlobalConfiguration globalConfiguration();
28 | 
29 |     /**
30 |      * What converter does the currently operated cell need to execute
31 |      *
32 |      * @return Converter
33 |      */
34 |     Map<ConverterKeyBuild.ConverterKey, Converter<?>> converterMap();
35 | }
36 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/FieldCache.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata;
 2 | 
 3 | import java.util.Map;
 4 | 
 5 | import lombok.AllArgsConstructor;
 6 | import lombok.EqualsAndHashCode;
 7 | import lombok.Getter;
 8 | import lombok.Setter;
 9 | 
10 | /**
11 |  * filed cache
12 |  *
13 |  * @author Jiaju Zhuang
14 |  */
15 | @Getter
16 | @Setter
17 | @EqualsAndHashCode
18 | @AllArgsConstructor
19 | public class FieldCache {
20 | 
21 |     /**
22 |      * A field cache that has been sorted by a class.
23 |      * It will exclude fields that are not needed.
24 |      */
25 |     private Map<Integer, FieldWrapper> sortedFieldMap;
26 | 
27 |     /**
28 |      * Fields using the index attribute
29 |      */
30 |     private Map<Integer, FieldWrapper> indexFieldMap;
31 | }
32 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/FieldWrapper.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata;
 2 | 
 3 | import java.lang.reflect.Field;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelProperty;
 6 | 
 7 | import lombok.AllArgsConstructor;
 8 | import lombok.EqualsAndHashCode;
 9 | import lombok.Getter;
10 | import lombok.NoArgsConstructor;
11 | import lombok.Setter;
12 | 
13 | /**
14 |  * filed wrapper
15 |  *
16 |  * @author Jiaju Zhuang
17 |  */
18 | @Getter
19 | @Setter
20 | @EqualsAndHashCode
21 | @AllArgsConstructor
22 | @NoArgsConstructor
23 | public class FieldWrapper {
24 | 
25 |     /**
26 |      * field
27 |      */
28 |     private Field field;
29 | 
30 |     /**
31 |      * The field name matching cglib
32 |      */
33 |     private String fieldName;
34 | 
35 |     /**
36 |      * The name of the sheet header.
37 |      *
38 |      * @see ExcelProperty
39 |      */
40 |     private String[] heads;
41 | }
42 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/Font.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata;
 2 | 
 3 | import cn.idev.excel.write.metadata.style.WriteFont;
 4 | 
 5 | /**
 6 |  *
 7 |  * @author jipengfei
 8 |  * @deprecated please use {@link WriteFont}
 9 |  */
10 | @Deprecated
11 | public class Font {
12 | 
13 |     /**
14 |      */
15 |     private String fontName;
16 | 
17 |     /**
18 |      */
19 |     private short fontHeightInPoints;
20 | 
21 |     /**
22 |      */
23 |     private boolean bold;
24 | 
25 |     public String getFontName() {
26 |         return fontName;
27 |     }
28 | 
29 |     public void setFontName(String fontName) {
30 |         this.fontName = fontName;
31 |     }
32 | 
33 |     public short getFontHeightInPoints() {
34 |         return fontHeightInPoints;
35 |     }
36 | 
37 |     public void setFontHeightInPoints(short fontHeightInPoints) {
38 |         this.fontHeightInPoints = fontHeightInPoints;
39 |     }
40 | 
41 |     public boolean isBold() {
42 |         return bold;
43 |     }
44 | 
45 |     public void setBold(boolean bold) {
46 |         this.bold = bold;
47 |     }
48 | }
49 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/Holder.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata;
 2 | 
 3 | import cn.idev.excel.enums.HolderEnum;
 4 | 
 5 | /**
 6 |  *
 7 |  * Get the corresponding holder
 8 |  *
 9 |  * @author Jiaju Zhuang
10 |  **/
11 | public interface Holder {
12 | 
13 |     /**
14 |      * What holder is the return
15 |      *
16 |      * @return Holder enum.
17 |      */
18 |     HolderEnum holderType();
19 | 
20 | }
21 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/NullObject.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata;
 2 | 
 3 | /**
 4 |  * Null object.
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  */
 8 | public class NullObject {
 9 | }
10 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/data/CommentData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata.data;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * comment
 9 |  *
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class CommentData extends ClientAnchorData {
16 |     /**
17 |      * Name of the original comment author
18 |      */
19 |     private String author;
20 |     /**
21 |      * rich text string
22 |      */
23 |     private RichTextStringData richTextStringData;
24 | }
25 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/data/FormulaData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata.data;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * formula
 9 |  *
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class FormulaData {
16 |     /**
17 |      * formula
18 |      */
19 |     private String formulaValue;
20 | 
21 |     @Override
22 |     public FormulaData clone() {
23 |         FormulaData formulaData = new FormulaData();
24 |         formulaData.setFormulaValue(getFormulaValue());
25 |         return formulaData;
26 |     }
27 | }
28 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/property/ColumnWidthProperty.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata.property;
 2 | 
 3 | import cn.idev.excel.annotation.write.style.ColumnWidth;
 4 | 
 5 | /**
 6 |  * Configuration from annotations
 7 |  *
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | public class ColumnWidthProperty {
11 |     private Integer width;
12 | 
13 |     public ColumnWidthProperty(Integer width) {
14 |         this.width = width;
15 |     }
16 | 
17 |     public static ColumnWidthProperty build(ColumnWidth columnWidth) {
18 |         if (columnWidth == null || columnWidth.value() < 0) {
19 |             return null;
20 |         }
21 |         return new ColumnWidthProperty(columnWidth.value());
22 |     }
23 | 
24 |     public Integer getWidth() {
25 |         return width;
26 |     }
27 | 
28 |     public void setWidth(Integer width) {
29 |         this.width = width;
30 |     }
31 | }
32 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/property/DateTimeFormatProperty.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata.property;
 2 | 
 3 | import cn.idev.excel.annotation.format.DateTimeFormat;
 4 | import cn.idev.excel.util.BooleanUtils;
 5 | 
 6 | import lombok.EqualsAndHashCode;
 7 | import lombok.Getter;
 8 | import lombok.Setter;
 9 | 
10 | /**
11 |  * Configuration from annotations
12 |  *
13 |  * @author Jiaju Zhuang
14 |  */
15 | @Getter
16 | @Setter
17 | @EqualsAndHashCode
18 | public class DateTimeFormatProperty {
19 |     private String format;
20 |     private Boolean use1904windowing;
21 | 
22 |     public DateTimeFormatProperty(String format, Boolean use1904windowing) {
23 |         this.format = format;
24 |         this.use1904windowing = use1904windowing;
25 |     }
26 | 
27 |     public static DateTimeFormatProperty build(DateTimeFormat dateTimeFormat) {
28 |         if (dateTimeFormat == null) {
29 |             return null;
30 |         }
31 |         return new DateTimeFormatProperty(dateTimeFormat.value(),
32 |             BooleanUtils.isTrue(dateTimeFormat.use1904windowing().getBooleanValue()));
33 |     }
34 | }
35 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/property/ExcelContentProperty.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata.property;
 2 | 
 3 | import java.lang.reflect.Field;
 4 | 
 5 | import cn.idev.excel.converters.Converter;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * @author jipengfei
13 |  */
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class ExcelContentProperty {
18 |     public static final ExcelContentProperty EMPTY = new ExcelContentProperty();
19 | 
20 |     /**
21 |      * Java field
22 |      */
23 |     private Field field;
24 |     /**
25 |      * Custom defined converters
26 |      */
27 |     private Converter<?> converter;
28 |     /**
29 |      * date time format
30 |      */
31 |     private DateTimeFormatProperty dateTimeFormatProperty;
32 |     /**
33 |      * number format
34 |      */
35 |     private NumberFormatProperty numberFormatProperty;
36 |     /**
37 |      * Content style
38 |      */
39 |     private StyleProperty contentStyleProperty;
40 |     /**
41 |      * Content font
42 |      */
43 |     private FontProperty contentFontProperty;
44 | }
45 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/property/NumberFormatProperty.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata.property;
 2 | 
 3 | import java.math.RoundingMode;
 4 | 
 5 | import cn.idev.excel.annotation.format.NumberFormat;
 6 | 
 7 | /**
 8 |  * Configuration from annotations
 9 |  *
10 |  * @author Jiaju Zhuang
11 |  */
12 | public class NumberFormatProperty {
13 |     private String format;
14 |     private RoundingMode roundingMode;
15 | 
16 |     public NumberFormatProperty(String format, RoundingMode roundingMode) {
17 |         this.format = format;
18 |         this.roundingMode = roundingMode;
19 |     }
20 | 
21 |     public static NumberFormatProperty build(NumberFormat numberFormat) {
22 |         if (numberFormat == null) {
23 |             return null;
24 |         }
25 |         return new NumberFormatProperty(numberFormat.value(), numberFormat.roundingMode());
26 |     }
27 | 
28 |     public String getFormat() {
29 |         return format;
30 |     }
31 | 
32 |     public void setFormat(String format) {
33 |         this.format = format;
34 |     }
35 | 
36 |     public RoundingMode getRoundingMode() {
37 |         return roundingMode;
38 |     }
39 | 
40 |     public void setRoundingMode(RoundingMode roundingMode) {
41 |         this.roundingMode = roundingMode;
42 |     }
43 | }
44 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/metadata/property/RowHeightProperty.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.metadata.property;
 2 | 
 3 | import cn.idev.excel.annotation.write.style.ContentRowHeight;
 4 | import cn.idev.excel.annotation.write.style.HeadRowHeight;
 5 | 
 6 | /**
 7 |  * Configuration from annotations
 8 |  *
 9 |  * @author Jiaju Zhuang
10 |  */
11 | public class RowHeightProperty {
12 |     private Short height;
13 | 
14 |     public RowHeightProperty(Short height) {
15 |         this.height = height;
16 |     }
17 | 
18 |     public static RowHeightProperty build(HeadRowHeight headRowHeight) {
19 |         if (headRowHeight == null || headRowHeight.value() < 0) {
20 |             return null;
21 |         }
22 |         return new RowHeightProperty(headRowHeight.value());
23 |     }
24 | 
25 |     public static RowHeightProperty build(ContentRowHeight contentRowHeight) {
26 |         if (contentRowHeight == null || contentRowHeight.value() < 0) {
27 |             return null;
28 |         }
29 |         return new RowHeightProperty(contentRowHeight.value());
30 |     }
31 | 
32 |     public Short getHeight() {
33 |         return height;
34 |     }
35 | 
36 |     public void setHeight(Short height) {
37 |         this.height = height;
38 |     }
39 | }
40 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/read/listener/IgnoreExceptionReadListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.read.listener;
 2 | 
 3 | import cn.idev.excel.context.AnalysisContext;
 4 | 
 5 | /**
 6 |  * Interface to listen for read results
 7 |  *
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | public interface IgnoreExceptionReadListener<T> extends ReadListener<T> {
11 | 
12 |     /**
13 |      * All listeners receive this method when any one Listener does an error report. If an exception is thrown here, the
14 |      * entire read will terminate.
15 |      *
16 |      * @param exception
17 |      * @param context
18 |      * @throws Exception
19 |      */
20 |     @Override
21 |     default void onException(Exception exception, AnalysisContext context) throws Exception {}
22 | 
23 | }
24 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/read/metadata/ReadBasicParameter.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.read.metadata;
 2 | 
 3 | import java.util.ArrayList;
 4 | import java.util.List;
 5 | 
 6 | import cn.idev.excel.metadata.BasicParameter;
 7 | import cn.idev.excel.read.listener.ReadListener;
 8 | import lombok.EqualsAndHashCode;
 9 | import lombok.Getter;
10 | import lombok.Setter;
11 | 
12 | /**
13 |  * Read basic parameter
14 |  *
15 |  * @author Jiaju Zhuang
16 |  **/
17 | @Getter
18 | @Setter
19 | @EqualsAndHashCode
20 | public class ReadBasicParameter extends BasicParameter {
21 |     /**
22 |      * Count the number of added heads when read sheet.
23 |      *
24 |      * <p>
25 |      * 0 - This Sheet has no head ,since the first row are the data
26 |      * <p>
27 |      * 1 - This Sheet has one row head , this is the default
28 |      * <p>
29 |      * 2 - This Sheet has two row head ,since the third row is the data
30 |      */
31 |     private Integer headRowNumber;
32 |     /**
33 |      * Custom type listener run after default
34 |      */
35 |     private List<ReadListener<?>> customReadListenerList;
36 | 
37 |     public ReadBasicParameter() {
38 |         customReadListenerList = new ArrayList<>();
39 |     }
40 | }
41 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/read/metadata/holder/ReadHolder.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.read.metadata.holder;
 2 | 
 3 | import java.util.List;
 4 | 
 5 | import cn.idev.excel.metadata.ConfigurationHolder;
 6 | import cn.idev.excel.read.listener.ReadListener;
 7 | import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
 8 | 
 9 | /**
10 |  * Get the corresponding Holder
11 |  *
12 |  * @author Jiaju Zhuang
13 |  **/
14 | public interface ReadHolder extends ConfigurationHolder {
15 |     /**
16 |      * What handler does the currently operated cell need to execute
17 |      *
18 |      * @return Current {@link ReadListener}
19 |      */
20 |     List<ReadListener<?>> readListenerList();
21 | 
22 |     /**
23 |      * What {@link ExcelReadHeadProperty} does the currently operated cell need to execute
24 |      *
25 |      * @return Current {@link ExcelReadHeadProperty}
26 |      */
27 |     ExcelReadHeadProperty excelReadHeadProperty();
28 | 
29 | }
30 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/read/metadata/holder/csv/CsvReadSheetHolder.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.read.metadata.holder.csv;
 2 | 
 3 | import cn.idev.excel.read.metadata.ReadSheet;
 4 | import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
 5 | import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * sheet holder
13 |  *
14 |  * @author Jiaju Zhuang
15 |  */
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | public class CsvReadSheetHolder extends ReadSheetHolder {
20 | 
21 |     public CsvReadSheetHolder(ReadSheet readSheet, ReadWorkbookHolder readWorkbookHolder) {
22 |         super(readSheet, readWorkbookHolder);
23 |     }
24 | }
25 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/read/metadata/holder/csv/CsvReadWorkbookHolder.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.read.metadata.holder.csv;
 2 | 
 3 | import cn.idev.excel.read.metadata.ReadWorkbook;
 4 | import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
 5 | import cn.idev.excel.support.ExcelTypeEnum;
 6 | import lombok.EqualsAndHashCode;
 7 | import lombok.Getter;
 8 | import lombok.Setter;
 9 | import org.apache.commons.csv.CSVFormat;
10 | import org.apache.commons.csv.CSVParser;
11 | 
12 | /**
13 |  * Workbook holder
14 |  *
15 |  * @author Jiaju Zhuang
16 |  */
17 | @Getter
18 | @Setter
19 | @EqualsAndHashCode
20 | public class CsvReadWorkbookHolder extends ReadWorkbookHolder {
21 | 
22 |     private CSVFormat csvFormat;
23 |     private CSVParser csvParser;
24 | 
25 |     public CsvReadWorkbookHolder(ReadWorkbook readWorkbook) {
26 |         super(readWorkbook);
27 |         setExcelType(ExcelTypeEnum.CSV);
28 |         this.csvFormat = readWorkbook.getCsvFormat() == null ? CSVFormat.DEFAULT : readWorkbook.getCsvFormat();
29 |     }
30 | }
31 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/read/metadata/property/ExcelReadHeadProperty.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.read.metadata.property;
 2 | 
 3 | import java.util.List;
 4 | 
 5 | import cn.idev.excel.metadata.ConfigurationHolder;
 6 | import cn.idev.excel.metadata.property.ExcelHeadProperty;
 7 | 
 8 | /**
 9 |  * Define the header attribute of excel
10 |  *
11 |  * @author jipengfei
12 |  */
13 | public class ExcelReadHeadProperty extends ExcelHeadProperty {
14 | 
15 |     public ExcelReadHeadProperty(ConfigurationHolder configurationHolder, Class headClazz, List<List<String>> head) {
16 |         super(configurationHolder, headClazz, head);
17 |     }
18 | }
19 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/read/processor/AnalysisEventProcessor.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.read.processor;
 2 | 
 3 | import cn.idev.excel.context.AnalysisContext;
 4 | 
 5 | /**
 6 |  * Event processor
 7 |  *
 8 |  * @author jipengfei
 9 |  */
10 | public interface AnalysisEventProcessor {
11 |     /**
12 |      * Read extra information
13 |      *
14 |      * @param analysisContext
15 |      */
16 |     void extra(AnalysisContext analysisContext);
17 | 
18 |     /**
19 |      * End row
20 |      *
21 |      * @param analysisContext
22 |      */
23 |     void endRow(AnalysisContext analysisContext);
24 | 
25 |     /**
26 |      * Notify after all analysed
27 |      *
28 |      * @param analysisContext Analysis context
29 |      */
30 |     void endSheet(AnalysisContext analysisContext);
31 | }
32 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/util/IntUtils.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.util;
 2 | 
 3 | /**
 4 |  * Int utils
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  **/
 8 | public class IntUtils {
 9 |     private IntUtils() {}
10 | 
11 | 
12 |     /**
13 |      * The largest power of two that can be represented as an {@code int}.
14 |      *
15 |      * @since 10.0
16 |      */
17 |     public static final int MAX_POWER_OF_TWO = 1 << (Integer.SIZE - 2);
18 | 
19 |     /**
20 |      * Returns the {@code int} nearest in value to {@code value}.
21 |      *
22 |      * @param value any {@code long} value
23 |      * @return the same value cast to {@code int} if it is in the range of the {@code int} type,
24 |      *     {@link Integer#MAX_VALUE} if it is too large, or {@link Integer#MIN_VALUE} if it is too
25 |      *     small
26 |      */
27 |     public static int saturatedCast(long value) {
28 |         if (value > Integer.MAX_VALUE) {
29 |             return Integer.MAX_VALUE;
30 |         }
31 |         if (value < Integer.MIN_VALUE) {
32 |             return Integer.MIN_VALUE;
33 |         }
34 |         return (int) value;
35 |     }
36 | }
37 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/executor/ExcelWriteExecutor.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.executor;
 2 | 
 3 | /**
 4 |  * Excel write Executor
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  */
 8 | public interface ExcelWriteExecutor {
 9 | }
10 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/handler/AbstractRowWriteHandler.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.handler;
 2 | 
 3 | import cn.idev.excel.write.metadata.holder.WriteSheetHolder;
 4 | import cn.idev.excel.write.metadata.holder.WriteTableHolder;
 5 | 
 6 | import org.apache.poi.ss.usermodel.Row;
 7 | 
 8 | /**
 9 |  * Abstract row write handler
10 |  *
11 |  * @author Jiaju Zhuang
12 |  * @deprecated Please use it directly {@link RowWriteHandler}
13 |  **/
14 | @Deprecated
15 | public abstract class AbstractRowWriteHandler implements RowWriteHandler {
16 |     @Override
17 |     public void beforeRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Integer rowIndex,
18 |         Integer relativeRowIndex, Boolean isHead) {
19 | 
20 |     }
21 | 
22 |     @Override
23 |     public void afterRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row,
24 |         Integer relativeRowIndex, Boolean isHead) {
25 | 
26 |     }
27 | 
28 |     @Override
29 |     public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row,
30 |         Integer relativeRowIndex, Boolean isHead) {
31 | 
32 |     }
33 | }
34 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/handler/AbstractSheetWriteHandler.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.handler;
 2 | 
 3 | import cn.idev.excel.write.metadata.holder.WriteSheetHolder;
 4 | import cn.idev.excel.write.metadata.holder.WriteWorkbookHolder;
 5 | 
 6 | /**
 7 |  * Abstract sheet write handler
 8 |  *
 9 |  * @author Jiaju Zhuang
10 |  * @deprecated Please use it directly {@link SheetWriteHandler}
11 |  **/
12 | @Deprecated
13 | public abstract class AbstractSheetWriteHandler implements SheetWriteHandler {
14 |     @Override
15 |     public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
16 | 
17 |     }
18 | 
19 |     @Override
20 |     public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
21 | 
22 |     }
23 | }
24 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/handler/AbstractWorkbookWriteHandler.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.handler;
 2 | 
 3 | import cn.idev.excel.write.metadata.holder.WriteWorkbookHolder;
 4 | 
 5 | /**
 6 |  * Abstract workbook write handler
 7 |  *
 8 |  * @author Jiaju Zhuang
 9 |  * @deprecated Please use it directly {@link WorkbookWriteHandler}
10 |  **/
11 | @Deprecated
12 | public abstract class AbstractWorkbookWriteHandler implements WorkbookWriteHandler {
13 | 
14 |     @Override
15 |     public void beforeWorkbookCreate() {
16 | 
17 |     }
18 | 
19 |     @Override
20 |     public void afterWorkbookCreate(WriteWorkbookHolder writeWorkbookHolder) {
21 | 
22 |     }
23 | 
24 |     @Override
25 |     public void afterWorkbookDispose(WriteWorkbookHolder writeWorkbookHolder) {
26 | 
27 |     }
28 | }
29 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/handler/WriteHandler.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.handler;
 2 | 
 3 | import cn.idev.excel.event.Handler;
 4 | 
 5 | /**
 6 |  * intercepts handle excel write
 7 |  *
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | public interface WriteHandler extends Handler {}
11 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/handler/context/SheetWriteHandlerContext.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.handler.context;
 2 | 
 3 | import cn.idev.excel.context.WriteContext;
 4 | import cn.idev.excel.write.metadata.holder.WriteSheetHolder;
 5 | import cn.idev.excel.write.metadata.holder.WriteWorkbookHolder;
 6 | 
 7 | import lombok.AllArgsConstructor;
 8 | import lombok.EqualsAndHashCode;
 9 | import lombok.Getter;
10 | import lombok.Setter;
11 | 
12 | /**
13 |  * sheet context
14 |  *
15 |  * @author Jiaju Zhuang
16 |  */
17 | @Getter
18 | @Setter
19 | @EqualsAndHashCode
20 | @AllArgsConstructor
21 | public class SheetWriteHandlerContext {
22 |     /**
23 |      * write context
24 |      */
25 |     private WriteContext writeContext;
26 |     /**
27 |      * workbook
28 |      */
29 |     private WriteWorkbookHolder writeWorkbookHolder;
30 |     /**
31 |      * sheet
32 |      */
33 |     private WriteSheetHolder writeSheetHolder;
34 | }
35 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/handler/context/WorkbookWriteHandlerContext.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.handler.context;
 2 | 
 3 | import cn.idev.excel.context.WriteContext;
 4 | import cn.idev.excel.write.metadata.holder.WriteWorkbookHolder;
 5 | 
 6 | import lombok.AllArgsConstructor;
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * workbook context
13 |  *
14 |  * @author Jiaju Zhuang
15 |  */
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | @AllArgsConstructor
20 | public class WorkbookWriteHandlerContext {
21 |     /**
22 |      * write context
23 |      */
24 |     private WriteContext writeContext;
25 |     /**
26 |      * workbook
27 |      */
28 |     private WriteWorkbookHolder writeWorkbookHolder;
29 | }
30 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/handler/impl/DefaultRowWriteHandler.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.handler.impl;
 2 | 
 3 | import cn.idev.excel.write.handler.RowWriteHandler;
 4 | import cn.idev.excel.write.handler.context.RowWriteHandlerContext;
 5 | 
 6 | import lombok.extern.slf4j.Slf4j;
 7 | 
 8 | /**
 9 |  * Default row handler.
10 |  *
11 |  * @author Jiaju Zhuang
12 |  */
13 | @Slf4j
14 | public class DefaultRowWriteHandler implements RowWriteHandler {
15 | 
16 |     @Override
17 |     public void afterRowDispose(RowWriteHandlerContext context) {
18 |         context.getWriteSheetHolder().setLastRowIndex(context.getRowIndex());
19 |     }
20 | 
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/merge/AbstractMergeStrategy.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.merge;
 2 | 
 3 | import cn.idev.excel.write.handler.CellWriteHandler;
 4 | import cn.idev.excel.write.handler.context.CellWriteHandlerContext;
 5 | import cn.idev.excel.metadata.Head;
 6 | 
 7 | import org.apache.poi.ss.usermodel.Cell;
 8 | import org.apache.poi.ss.usermodel.Sheet;
 9 | 
10 | /**
11 |  * Merge strategy
12 |  *
13 |  * @author Jiaju Zhuang
14 |  */
15 | public abstract class AbstractMergeStrategy implements CellWriteHandler {
16 | 
17 |     @Override
18 |     public void afterCellDispose(CellWriteHandlerContext context) {
19 |         if (context.getHead()) {
20 |             return;
21 |         }
22 |         merge(context.getWriteSheetHolder().getSheet(), context.getCell(), context.getHeadData(),
23 |             context.getRelativeRowIndex());
24 |     }
25 | 
26 |     /**
27 |      * merge
28 |      *
29 |      * @param sheet
30 |      * @param cell
31 |      * @param head
32 |      * @param relativeRowIndex
33 |      */
34 |     protected abstract void merge(Sheet sheet, Cell cell, Head head, Integer relativeRowIndex);
35 | }
36 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/metadata/CollectionRowData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.metadata;
 2 | 
 3 | import java.util.Collection;
 4 | 
 5 | /**
 6 |  * A collection row of data.
 7 |  *
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | public class CollectionRowData implements RowData {
11 | 
12 |     private final Object[] array;
13 | 
14 |     public CollectionRowData(Collection<?> collection) {
15 |         this.array = collection.toArray();
16 |     }
17 | 
18 |     @Override
19 |     public Object get(int index) {
20 |         return array[index];
21 |     }
22 | 
23 |     @Override
24 |     public int size() {
25 |         return array.length;
26 |     }
27 | 
28 |     @Override
29 |     public boolean isEmpty() {
30 |         return array.length == 0;
31 |     }
32 | }
33 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/metadata/MapRowData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.metadata;
 2 | 
 3 | import java.util.Map;
 4 | 
 5 | /**
 6 |  * A map row of data.
 7 |  *
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | public class MapRowData implements RowData {
11 | 
12 |     private final Map<Integer, ?> map;
13 | 
14 |     public MapRowData(Map<Integer, ?> map) {
15 |         this.map = map;
16 |     }
17 | 
18 |     @Override
19 |     public Object get(int index) {
20 |         return map.get(index);
21 |     }
22 | 
23 |     @Override
24 |     public int size() {
25 |         return map.size();
26 |     }
27 | 
28 |     @Override
29 |     public boolean isEmpty() {
30 |         return map.isEmpty();
31 |     }
32 | 
33 | }
34 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/metadata/RowData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.metadata;
 2 | 
 3 | /**
 4 |  * A row of data.
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  */
 8 | public interface RowData {
 9 | 
10 |     /**
11 |      * Returns the value to which the specified key is mapped,
12 |      * or {@code null} if this map contains no mapping for the key.
13 |      *
14 |      * @param index
15 |      * @return data
16 |      */
17 |     Object get(int index);
18 | 
19 |     /**
20 |      * Returns the number of elements in this collection.  If this collection
21 |      * contains more than <code>Integer.MAX_VALUE</code> elements, returns
22 |      * <code>Integer.MAX_VALUE</code>.
23 |      *
24 |      * @return the number of elements in this collection
25 |      */
26 |     int size();
27 | 
28 |     /**
29 |      * Returns <code>true</code> if this collection contains no elements.
30 |      *
31 |      * @return <code>true</code> if this collection contains no elements
32 |      */
33 |     boolean isEmpty();
34 | 
35 | }
36 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/metadata/WriteSheet.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.metadata;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * Write sheet
 9 |  *
10 |  * @author jipengfei
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class WriteSheet extends WriteBasicParameter {
16 |     /**
17 |      * Starting from 0
18 |      */
19 |     private Integer sheetNo;
20 |     /**
21 |      * sheet name
22 |      */
23 |     private String sheetName;
24 | }
25 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/metadata/WriteTable.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.metadata;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * table
 9 |  *
10 |  * @author jipengfei
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class WriteTable extends WriteBasicParameter {
16 |     /**
17 |      * Starting from 0
18 |      */
19 |     private Integer tableNo;
20 | }
21 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/metadata/fill/FillWrapper.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.metadata.fill;
 2 | 
 3 | import java.util.Collection;
 4 | 
 5 | /**
 6 |  * Multiple lists are supported when packing
 7 |  *
 8 |  * @author Jiaju Zhuang
 9 |  **/
10 | public class FillWrapper {
11 |     /**
12 |      * The collection prefix that needs to be filled.
13 |      */
14 |     private String name;
15 |     /**
16 |      * Data that needs to be filled.
17 |      */
18 |     private Collection collectionData;
19 | 
20 |     public FillWrapper(Collection collectionData) {
21 |         this.collectionData = collectionData;
22 |     }
23 | 
24 |     public FillWrapper(String name, Collection collectionData) {
25 |         this.name = name;
26 |         this.collectionData = collectionData;
27 |     }
28 | 
29 |     public String getName() {
30 |         return name;
31 |     }
32 | 
33 |     public void setName(String name) {
34 |         this.name = name;
35 |     }
36 | 
37 |     public Collection getCollectionData() {
38 |         return collectionData;
39 |     }
40 | 
41 |     public void setCollectionData(Collection collectionData) {
42 |         this.collectionData = collectionData;
43 |     }
44 | }
45 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/style/column/SimpleColumnWidthStyleStrategy.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.style.column;
 2 | 
 3 | import cn.idev.excel.metadata.Head;
 4 | 
 5 | /**
 6 |  * All the columns are the same width
 7 |  *
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | public class SimpleColumnWidthStyleStrategy extends AbstractHeadColumnWidthStyleStrategy {
11 |     private final Integer columnWidth;
12 | 
13 |     /**
14 |      *
15 |      * @param columnWidth
16 |      */
17 |     public SimpleColumnWidthStyleStrategy(Integer columnWidth) {
18 |         this.columnWidth = columnWidth;
19 |     }
20 | 
21 |     @Override
22 |     protected Integer columnWidth(Head head, Integer columnIndex) {
23 |         return columnWidth;
24 |     }
25 | }
26 | 


--------------------------------------------------------------------------------
/fastexcel-core/src/main/java/cn/idev/excel/write/style/row/SimpleRowHeightStyleStrategy.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.write.style.row;
 2 | 
 3 | import org.apache.poi.ss.usermodel.Row;
 4 | 
 5 | /**
 6 |  * Set the head column high and content column high
 7 |  *
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | public class SimpleRowHeightStyleStrategy extends AbstractRowHeightStyleStrategy {
11 |     private final Short headRowHeight;
12 |     private final Short contentRowHeight;
13 | 
14 |     public SimpleRowHeightStyleStrategy(Short headRowHeight, Short contentRowHeight) {
15 |         this.headRowHeight = headRowHeight;
16 |         this.contentRowHeight = contentRowHeight;
17 |     }
18 | 
19 |     @Override
20 |     protected void setHeadColumnHeight(Row row, int relativeRowIndex) {
21 |         if (headRowHeight != null) {
22 |             row.setHeightInPoints(headRowHeight);
23 |         }
24 |     }
25 | 
26 |     @Override
27 |     protected void setContentColumnHeight(Row row, int relativeRowIndex) {
28 |         if (contentRowHeight != null) {
29 |             row.setHeightInPoints(contentRowHeight);
30 |         }
31 |     }
32 | 
33 | }
34 | 


--------------------------------------------------------------------------------
/fastexcel-support/README.md:
--------------------------------------------------------------------------------
1 | # easyexcel-support
2 | 
3 | 外部依赖的代码,目前就一个cglib,由于cglib不支持jdk高版本,所以单独复制了一份


--------------------------------------------------------------------------------
/fastexcel-support/README_EN.md:
--------------------------------------------------------------------------------
1 | # easyexcel-support
2 | 
3 | External dependencies: Currently, there is only one dependency, cglib. Since cglib does not support higher versions of the JDK, a separate copy has been made.


--------------------------------------------------------------------------------
/fastexcel-support/src/main/java/cn/idev/excel/support/Empty.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.support;
 2 | 
 3 | /**
 4 |  * empty
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  */
 8 | public class Empty {
 9 | }
10 | 


--------------------------------------------------------------------------------
/fastexcel-test/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/README.md


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/annotation/AnnotationData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.annotation;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelIgnore;
 6 | import cn.idev.excel.annotation.ExcelProperty;
 7 | import cn.idev.excel.annotation.format.DateTimeFormat;
 8 | import cn.idev.excel.annotation.format.NumberFormat;
 9 | import cn.idev.excel.annotation.write.style.ColumnWidth;
10 | import cn.idev.excel.annotation.write.style.ContentRowHeight;
11 | import cn.idev.excel.annotation.write.style.HeadRowHeight;
12 | 
13 | import lombok.EqualsAndHashCode;
14 | import lombok.Getter;
15 | import lombok.Setter;
16 | 
17 | /**
18 |  * @author Jiaju Zhuang
19 |  */
20 | @Getter
21 | @Setter
22 | @EqualsAndHashCode
23 | @ColumnWidth(50)
24 | @HeadRowHeight(50)
25 | @ContentRowHeight(100)
26 | public class AnnotationData {
27 |     @ExcelProperty("日期")
28 |     @DateTimeFormat("yyyy年MM月dd日HH时mm分ss秒")
29 |     private Date date;
30 | 
31 |     @ExcelProperty(value = "数字")
32 |     @NumberFormat("#.##%")
33 |     private Double number;
34 | 
35 |     @ExcelIgnore
36 |     private String ignore;
37 |     private static final String staticFinal = "test";
38 |     private transient String transientString;
39 | }
40 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/annotation/AnnotationIndexAndNameData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.annotation;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class AnnotationIndexAndNameData {
16 |     @ExcelProperty(value = "第四个", index = 4)
17 |     private String index4;
18 |     @ExcelProperty(value = "第二个")
19 |     private String index2;
20 |     @ExcelProperty(index = 0)
21 |     private String index0;
22 |     @ExcelProperty(value = "第一个", index = 1)
23 |     private String index1;
24 | }
25 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/bom/BomData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.bom;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | @Getter
10 | @Setter
11 | @EqualsAndHashCode
12 | public class BomData {
13 |     @ExcelProperty("姓名")
14 |     private String name;
15 |     @ExcelProperty("年纪")
16 |     private Long age;
17 | }
18 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/cache/CacheData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.cache;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class CacheData {
16 |     @ExcelProperty("姓名")
17 |     private String name;
18 | 
19 |     @ExcelProperty("年龄")
20 |     private Long age;
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/cache/CacheInvokeData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.cache;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class CacheInvokeData {
16 |     @ExcelProperty("姓名")
17 |     private String name;
18 | 
19 |     @ExcelProperty("年龄")
20 |     private Long age;
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/cache/CacheInvokeMemoryData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.cache;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class CacheInvokeMemoryData {
16 |     @ExcelProperty("姓名")
17 |     private String name;
18 | 
19 |     @ExcelProperty("年龄")
20 |     private Long age;
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/celldata/CellDataReadData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.celldata;
 2 | 
 3 | import cn.idev.excel.annotation.format.DateTimeFormat;
 4 | import cn.idev.excel.metadata.data.ReadCellData;
 5 | 
 6 | import lombok.EqualsAndHashCode;
 7 | import lombok.Getter;
 8 | import lombok.Setter;
 9 | 
10 | /**
11 |  * @author Jiaju Zhuang
12 |  */
13 | @Getter
14 | @Setter
15 | @EqualsAndHashCode
16 | public class CellDataReadData {
17 |     @DateTimeFormat("yyyy年MM月dd日")
18 |     private ReadCellData<String> date;
19 |     private ReadCellData<Integer> integer1;
20 |     private Integer integer2;
21 |     private ReadCellData<?> formulaValue;
22 | }
23 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/celldata/CellDataWriteData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.celldata;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.format.DateTimeFormat;
 6 | import cn.idev.excel.metadata.data.WriteCellData;
 7 | 
 8 | import lombok.EqualsAndHashCode;
 9 | import lombok.Getter;
10 | import lombok.Setter;
11 | 
12 | /**
13 |  * @author Jiaju Zhuang
14 |  */
15 | @Getter
16 | @Setter
17 | @EqualsAndHashCode
18 | public class CellDataWriteData {
19 |     @DateTimeFormat("yyyy年MM月dd日")
20 |     private WriteCellData<Date> date;
21 |     private WriteCellData<Integer> integer1;
22 |     private Integer integer2;
23 |     private WriteCellData<?> formulaValue;
24 | }
25 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/charset/CharsetData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.charset;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | @Getter
10 | @Setter
11 | @EqualsAndHashCode
12 | public class CharsetData {
13 |     @ExcelProperty("姓名")
14 |     private String name;
15 |     @ExcelProperty("年纪")
16 |     private Integer age;
17 | }
18 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/converter/ConverterTest.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.converter;
 2 | 
 3 | import java.math.BigDecimal;
 4 | 
 5 | import cn.idev.excel.converters.WriteConverterContext;
 6 | import cn.idev.excel.converters.floatconverter.FloatNumberConverter;
 7 | import cn.idev.excel.metadata.data.WriteCellData;
 8 | 
 9 | import org.junit.jupiter.api.Assertions;
10 | import org.junit.jupiter.api.MethodOrderer;
11 | import org.junit.jupiter.api.Test;
12 | import org.junit.jupiter.api.TestMethodOrder;
13 | 
14 | /**
15 |  * @author Jiaju Zhuang
16 |  */
17 | @TestMethodOrder(MethodOrderer.MethodName.class)
18 | public class ConverterTest {
19 | 
20 |     @Test
21 |     public void t01FloatNumberConverter() {
22 |         FloatNumberConverter floatNumberConverter = new FloatNumberConverter();
23 |         WriteConverterContext<Float> context = new WriteConverterContext<>();
24 |         context.setValue(95.62F);
25 |         WriteCellData<?> writeCellData = floatNumberConverter.convertToExcelData(context);
26 |         Assertions.assertEquals(0, writeCellData.getNumberValue().compareTo(new BigDecimal("95.62")));
27 |     }
28 | 
29 | }
30 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/converter/CustomConverterWriteData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.converter;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | import lombok.EqualsAndHashCode;
 5 | import lombok.Getter;
 6 | import lombok.Setter;
 7 | 
 8 | import java.sql.Timestamp;
 9 | 
10 | @Getter
11 | @Setter
12 | @EqualsAndHashCode
13 | public class CustomConverterWriteData {
14 |     @ExcelProperty(value = "时间戳-字符串", converter = TimestampStringConverter.class)
15 |     private Timestamp timestampStringData;
16 |     @ExcelProperty(value = "时间戳-数字", converter = TimestampNumberConverter.class)
17 |     private Timestamp timestampNumberData;
18 | }
19 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/converter/ImageData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.converter;
 2 | 
 3 | import java.io.File;
 4 | import java.io.InputStream;
 5 | 
 6 | import cn.idev.excel.annotation.ExcelProperty;
 7 | import cn.idev.excel.annotation.write.style.ColumnWidth;
 8 | import cn.idev.excel.annotation.write.style.ContentRowHeight;
 9 | import cn.idev.excel.converters.string.StringImageConverter;
10 | 
11 | import lombok.EqualsAndHashCode;
12 | import lombok.Getter;
13 | import lombok.Setter;
14 | 
15 | /**
16 |  * @author Jiaju Zhuang
17 |  */
18 | @Getter
19 | @Setter
20 | @EqualsAndHashCode
21 | @ContentRowHeight(500)
22 | @ColumnWidth(500 / 8)
23 | public class ImageData {
24 |     private File file;
25 |     private InputStream inputStream;
26 |     @ExcelProperty(converter = StringImageConverter.class)
27 |     private String string;
28 |     private byte[] byteArray;
29 | }
30 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/dataformat/DateFormatData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.dataformat;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | @Getter
11 | @Setter
12 | @EqualsAndHashCode
13 | public class DateFormatData {
14 |     private String date;
15 |     private String dateStringCn;
16 |     private String dateStringCn2;
17 |     private String dateStringUs;
18 |     private String number;
19 |     private String numberStringCn;
20 |     private String numberStringUs;
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/encrypt/EncryptData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.encrypt;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class EncryptData {
16 |     @ExcelProperty("姓名")
17 |     private String name;
18 | }
19 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/exception/ExceptionData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.exception;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class ExceptionData {
16 |     @ExcelProperty("姓名")
17 |     private String name;
18 | }
19 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/exception/ExceptionThrowDataListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.exception;
 2 | 
 3 | import java.util.ArrayList;
 4 | import java.util.List;
 5 | 
 6 | import cn.idev.excel.read.listener.ReadListener;
 7 | import cn.idev.excel.context.AnalysisContext;
 8 | 
 9 | import org.slf4j.Logger;
10 | import org.slf4j.LoggerFactory;
11 | 
12 | /**
13 |  * @author Jiaju Zhuang
14 |  */
15 | public class ExceptionThrowDataListener implements ReadListener<ExceptionData> {
16 |     private static final Logger LOGGER = LoggerFactory.getLogger(ExceptionData.class);
17 |     List<ExceptionData> list = new ArrayList<ExceptionData>();
18 | 
19 |     @Override
20 |     public void invoke(ExceptionData data, AnalysisContext context) {
21 |         list.add(data);
22 |         if (list.size() == 5) {
23 |             int i = 5 / 0;
24 |         }
25 |     }
26 | 
27 |     @Override
28 |     public void doAfterAllAnalysed(AnalysisContext context) {
29 |     }
30 | }
31 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/excludeorinclude/ExcludeOrIncludeData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.excludeorinclude;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class ExcludeOrIncludeData {
16 |     @ExcelProperty(order = 1)
17 |     private String column1;
18 |     @ExcelProperty(order = 2)
19 |     private String column2;
20 |     @ExcelProperty(order = 3)
21 |     private String column3;
22 |     @ExcelProperty(order = 4)
23 |     private String column4;
24 | }
25 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/extra/ExtraData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.extra;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | @Getter
11 | @Setter
12 | @EqualsAndHashCode
13 | public class ExtraData {
14 | 
15 |     private String row1;
16 | 
17 |     private String row2;
18 | }
19 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/fill/FillData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.fill;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | import cn.idev.excel.annotation.format.NumberFormat;
 5 | import cn.idev.excel.converters.doubleconverter.DoubleStringConverter;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * @author Jiaju Zhuang
13 |  */
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class FillData {
18 |     private String name;
19 |     @NumberFormat("#")
20 |     @ExcelProperty(converter = DoubleStringConverter.class)
21 |     private Double number;
22 |     private String empty;
23 | }
24 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/fill/style/FillStyleData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.fill.style;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class FillStyleData {
16 |     private String name;
17 |     private Double number;
18 |     private Date date;
19 |     private String empty;
20 | }
21 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/handler/WriteHandlerData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.handler;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class WriteHandlerData {
16 |     @ExcelProperty("姓名")
17 |     private String name;
18 | }
19 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/head/ComplexDataListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.head;
 2 | 
 3 | import java.util.ArrayList;
 4 | import java.util.List;
 5 | 
 6 | import cn.idev.excel.event.AnalysisEventListener;
 7 | import cn.idev.excel.context.AnalysisContext;
 8 | import com.alibaba.fastjson2.JSON;
 9 | 
10 | import org.junit.jupiter.api.Assertions;
11 | import org.slf4j.Logger;
12 | import org.slf4j.LoggerFactory;
13 | 
14 | /**
15 |  * @author Jiaju Zhuang
16 |  */
17 | public class ComplexDataListener extends AnalysisEventListener<ComplexHeadData> {
18 |     private static final Logger LOGGER = LoggerFactory.getLogger(ComplexHeadData.class);
19 |     List<ComplexHeadData> list = new ArrayList<ComplexHeadData>();
20 | 
21 |     @Override
22 |     public void invoke(ComplexHeadData data, AnalysisContext context) {
23 |         list.add(data);
24 |     }
25 | 
26 |     @Override
27 |     public void doAfterAllAnalysed(AnalysisContext context) {
28 |         Assertions.assertEquals(list.size(), 1);
29 |         ComplexHeadData data = list.get(0);
30 |         Assertions.assertEquals(data.getString4(), "字符串4");
31 |         LOGGER.debug("First row:{}", JSON.toJSONString(list.get(0)));
32 |     }
33 | }
34 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/head/ComplexHeadData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.head;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class ComplexHeadData {
16 |     @ExcelProperty({"顶格", "顶格", "两格"})
17 |     private String string0;
18 |     @ExcelProperty({"顶格", "顶格", "两格"})
19 |     private String string1;
20 |     @ExcelProperty({"顶格", "四联", "四联"})
21 |     private String string2;
22 |     @ExcelProperty({"顶格", "四联", "四联"})
23 |     private String string3;
24 |     @ExcelProperty({"顶格"})
25 |     private String string4;
26 | }
27 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/head/MaxHeadSizeData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.head;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | import lombok.EqualsAndHashCode;
 5 | import lombok.Getter;
 6 | import lombok.Setter;
 7 | 
 8 | @Getter
 9 | @Setter
10 | @EqualsAndHashCode
11 | public class MaxHeadSizeData {
12 |     @ExcelProperty({"名称"})
13 |     private String string0;
14 |     @ExcelProperty({"区域"})
15 |     private String string1;
16 |     @ExcelProperty({"所属项目"})
17 |     private String string2;
18 |     @ExcelProperty({"所属维保单位"})
19 |     private String string3;
20 |     @ExcelProperty({"序列号"})
21 |     private String string4;
22 |     @ExcelProperty({"到期时间"})
23 |     private String string5;
24 | }
25 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/head/NoHeadData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.head;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class NoHeadData {
16 |     @ExcelProperty("字符串")
17 |     private String string;
18 | }
19 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/head/NoHeadDataListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.head;
 2 | 
 3 | import java.util.ArrayList;
 4 | import java.util.List;
 5 | 
 6 | import cn.idev.excel.event.AnalysisEventListener;
 7 | import cn.idev.excel.context.AnalysisContext;
 8 | import com.alibaba.fastjson2.JSON;
 9 | 
10 | import org.junit.jupiter.api.Assertions;
11 | import org.slf4j.Logger;
12 | import org.slf4j.LoggerFactory;
13 | 
14 | /**
15 |  * @author Jiaju Zhuang
16 |  */
17 | public class NoHeadDataListener extends AnalysisEventListener<NoHeadData> {
18 |     private static final Logger LOGGER = LoggerFactory.getLogger(NoHeadData.class);
19 |     List<NoHeadData> list = new ArrayList<NoHeadData>();
20 | 
21 |     @Override
22 |     public void invoke(NoHeadData data, AnalysisContext context) {
23 |         list.add(data);
24 |     }
25 | 
26 |     @Override
27 |     public void doAfterAllAnalysed(AnalysisContext context) {
28 |         Assertions.assertEquals(list.size(), 1);
29 |         NoHeadData data = list.get(0);
30 |         Assertions.assertEquals(data.getString(), "字符串0");
31 |         LOGGER.debug("First row:{}", JSON.toJSONString(list.get(0)));
32 |     }
33 | }
34 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/hiddensheets/HiddenSheetsData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.hiddensheets;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | @Getter
 8 | @Setter
 9 | @EqualsAndHashCode
10 | public class HiddenSheetsData {
11 |     private String title;
12 | }
13 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/hiddensheets/HiddenSheetsListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.hiddensheets;
 2 | 
 3 | import cn.idev.excel.context.AnalysisContext;
 4 | import cn.idev.excel.event.AnalysisEventListener;
 5 | import com.alibaba.fastjson2.JSON;
 6 | import lombok.extern.slf4j.Slf4j;
 7 | import org.junit.jupiter.api.Assertions;
 8 | 
 9 | import java.util.ArrayList;
10 | import java.util.List;
11 | 
12 | @Slf4j
13 | public class HiddenSheetsListener extends AnalysisEventListener<HiddenSheetsData> {
14 |     List<HiddenSheetsData> list = new ArrayList<>();
15 | 
16 |     @Override
17 |     public void invoke(HiddenSheetsData data, AnalysisContext context) {
18 |         list.add(data);
19 |     }
20 | 
21 |     @Override
22 |     public void doAfterAllAnalysed(AnalysisContext context) {
23 |         log.info("A form is read finished.");
24 |         Assertions.assertEquals("data01", list.get(0).getTitle());
25 |         log.info("All row:{}", JSON.toJSONString(list));
26 |     }
27 | 
28 |     public List<HiddenSheetsData> getList() {
29 |         return list;
30 |     }
31 | 
32 |     public void setList(List<HiddenSheetsData> list) {
33 |         this.list = list;
34 |     }
35 | }
36 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/large/LargeData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.large;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | @Getter
11 | @Setter
12 | @EqualsAndHashCode
13 | public class LargeData {
14 | 
15 |     private String str1;
16 | 
17 |     private String str2;
18 | 
19 |     private String str3;
20 | 
21 |     private String str4;
22 | 
23 |     private String str5;
24 | 
25 |     private String str6;
26 | 
27 |     private String str7;
28 | 
29 |     private String str8;
30 | 
31 |     private String str9;
32 | 
33 |     private String str10;
34 | 
35 |     private String str11;
36 | 
37 |     private String str12;
38 | 
39 |     private String str13;
40 | 
41 |     private String str14;
42 | 
43 |     private String str15;
44 | 
45 |     private String str16;
46 | 
47 |     private String str17;
48 | 
49 |     private String str18;
50 | 
51 |     private String str19;
52 | 
53 |     private String str20;
54 | 
55 |     private String str21;
56 | 
57 |     private String str22;
58 | 
59 |     private String str23;
60 | 
61 |     private String str24;
62 | 
63 |     private String str25;
64 | }
65 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/multiplesheets/MultipleSheetsData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.multiplesheets;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | @Getter
11 | @Setter
12 | @EqualsAndHashCode
13 | public class MultipleSheetsData {
14 |     private String title;
15 | }
16 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/noncamel/UnCamelData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.noncamel;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | @Getter
11 | @Setter
12 | @EqualsAndHashCode
13 | public class UnCamelData {
14 |     private String string1;
15 |     private String String2;
16 |     private String sTring3;
17 |     private String STring4;
18 |     private String STRING5;
19 |     private String STRing6;
20 | }
21 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/parameter/ParameterData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.parameter;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class ParameterData {
16 |     @ExcelProperty("姓名")
17 |     private String name;
18 | }
19 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/repetition/RepetitionData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.repetition;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class RepetitionData {
16 |     @ExcelProperty("字符串")
17 |     private String string;
18 | }
19 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/simple/SimpleData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.simple;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * mock data format for simple read/write
11 |  * <p>
12 |  * Use ExcelProperty {@link ExcelProperty} to mark headers
13 |  * </p>
14 |  *
15 |  * @author Jiaju Zhuang
16 |  */
17 | @Getter
18 | @Setter
19 | @EqualsAndHashCode
20 | public class SimpleData {
21 |     @ExcelProperty("姓名")
22 |     private String name;
23 | }
24 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/simple/SimpleDataSheetNameListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.simple;
 2 | 
 3 | import java.util.ArrayList;
 4 | import java.util.List;
 5 | 
 6 | import cn.idev.excel.event.AnalysisEventListener;
 7 | import cn.idev.excel.context.AnalysisContext;
 8 | import com.alibaba.fastjson2.JSON;
 9 | 
10 | import org.junit.jupiter.api.Assertions;
11 | import org.slf4j.Logger;
12 | import org.slf4j.LoggerFactory;
13 | 
14 | /**
15 |  * @author Jiaju Zhuang
16 |  */
17 | public class SimpleDataSheetNameListener extends AnalysisEventListener<SimpleData> {
18 |     private static final Logger LOGGER = LoggerFactory.getLogger(SimpleDataSheetNameListener.class);
19 |     List<SimpleData> list = new ArrayList<SimpleData>();
20 | 
21 |     @Override
22 |     public void invoke(SimpleData data, AnalysisContext context) {
23 |         list.add(data);
24 |     }
25 | 
26 |     @Override
27 |     public void doAfterAllAnalysed(AnalysisContext context) {
28 |         Assertions.assertEquals(list.size(), 1);
29 |         Assertions.assertEquals(list.get(0).getName(), "张三");
30 |         LOGGER.debug("First row:{}", JSON.toJSONString(list.get(0)));
31 |     }
32 | }
33 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/skip/SkipData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.skip;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class SkipData {
16 | 
17 |     @ExcelProperty("姓名")
18 |     private String name;
19 | }
20 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/sort/SortData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.sort;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class SortData {
16 |     private String column5;
17 |     private String column6;
18 |     @ExcelProperty(order = 100)
19 |     private String column4;
20 |     @ExcelProperty(order = 99)
21 |     private String column3;
22 |     @ExcelProperty(value = "column2", index = 1)
23 |     private String column2;
24 |     @ExcelProperty(value = "column1", index = 0)
25 |     private String column1;
26 | }
27 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/style/StyleData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.style;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | import cn.idev.excel.annotation.write.style.HeadFontStyle;
 5 | import cn.idev.excel.annotation.write.style.HeadStyle;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * @author Jiaju Zhuang
13 |  */
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | @HeadStyle
18 | @HeadFontStyle
19 | public class StyleData {
20 |     @ExcelProperty("字符串")
21 |     private String string;
22 |     @ExcelProperty("字符串1")
23 |     private String string1;
24 | }
25 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/style/StyleDataListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.style;
 2 | 
 3 | import java.util.ArrayList;
 4 | import java.util.List;
 5 | 
 6 | import cn.idev.excel.event.AnalysisEventListener;
 7 | import cn.idev.excel.test.core.simple.SimpleDataListener;
 8 | import cn.idev.excel.context.AnalysisContext;
 9 | import com.alibaba.fastjson2.JSON;
10 | 
11 | import org.junit.jupiter.api.Assertions;
12 | import org.slf4j.Logger;
13 | import org.slf4j.LoggerFactory;
14 | 
15 | /**
16 |  * @author Jiaju Zhuang
17 |  */
18 | public class StyleDataListener extends AnalysisEventListener<StyleData> {
19 |     private static final Logger LOGGER = LoggerFactory.getLogger(SimpleDataListener.class);
20 |     List<StyleData> list = new ArrayList<StyleData>();
21 | 
22 |     @Override
23 |     public void invoke(StyleData data, AnalysisContext context) {
24 |         list.add(data);
25 |     }
26 | 
27 |     @Override
28 |     public void doAfterAllAnalysed(AnalysisContext context) {
29 |         Assertions.assertEquals(list.size(), 2);
30 |         Assertions.assertEquals(list.get(0).getString(), "字符串0");
31 |         Assertions.assertEquals(list.get(1).getString(), "字符串1");
32 |         LOGGER.debug("First row:{}", JSON.toJSONString(list.get(0)));
33 |     }
34 | }
35 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/core/template/TemplateData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.core.template;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class TemplateData {
16 |     @ExcelProperty("字符串0")
17 |     private String string0;
18 |     @ExcelProperty("字符串1")
19 |     private String string1;
20 | }
21 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/fill/FillData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.fill;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class FillData {
16 |     private String name;
17 |     private double number;
18 |     private Date date;
19 | 
20 | }
21 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/CellDataReadDemoData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.read;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.metadata.data.CellData;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * 基础数据类.这里的排序和excel里面的排序一致
13 |  *
14 |  * @author Jiaju Zhuang
15 |  **/
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | public class CellDataReadDemoData {
20 |     private CellData<String> string;
21 |     // 这里注意 虽然是日期 但是 类型 存储的是number 因为excel 存储的就是number
22 |     private CellData<Date> date;
23 |     private CellData<Double> doubleData;
24 |     // 这里并不一定能完美的获取 有些公式是依赖性的 可能会读不到 这个问题后续会修复
25 |     private CellData<String> formulaValue;
26 | }
27 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/ConverterData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.read;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | import cn.idev.excel.annotation.format.DateTimeFormat;
 5 | import cn.idev.excel.annotation.format.NumberFormat;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * Basic data class. The order here is consistent with the order in the Excel file.
13 |  *
14 |  * @author Jiaju Zhuang
15 |  **/
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | public class ConverterData {
20 | 
21 |     /**
22 |      * I use a custom converter. No matter what is passed from the database, I prepend "Custom:".
23 |      */
24 |     @ExcelProperty(converter = CustomStringStringConverter.class)
25 |     private String string;
26 | 
27 |     /**
28 |      * I use a string to receive the date so that it can be formatted. I want to receive the date in the format of yyyy-MM-dd HH:mm:ss.
29 |      */
30 |     @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
31 |     private String date;
32 | 
33 |     /**
34 |      * I want to receive a number in percentage format.
35 |      */
36 |     @NumberFormat("#.##%")
37 |     private String doubleData;
38 | }
39 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/DemoChainAccessorsData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.read;
 2 | 
 3 | import lombok.Data;
 4 | import lombok.experimental.Accessors;
 5 | 
 6 | import java.util.Date;
 7 | 
 8 | /**
 9 |  * 基础数据类.这里的排序和excel里面的排序一致
10 |  *
11 |  * @author Jiaju Zhuang
12 |  **/
13 | @Data
14 | @Accessors(chain = true)
15 | public class DemoChainAccessorsData {
16 |     private String string;
17 |     private Date date;
18 |     private Double doubleData;
19 | }
20 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/DemoCompatibleHeaderData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.read;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | import lombok.Data;
 5 | 
 6 | import java.util.Date;
 7 | 
 8 | /**
 9 |  * Compatible header data class.
10 |  */
11 | @Data
12 | public class DemoCompatibleHeaderData {
13 | 
14 |     @ExcelProperty("String")
15 |     private String string;
16 | 
17 |     @ExcelProperty("Date")
18 |     private Date date;
19 | 
20 |     @ExcelProperty("DoubleData")
21 |     private Double doubleData;
22 | 
23 | }
24 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/DemoDAO.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.read;
 2 | 
 3 | import java.util.List;
 4 | 
 5 | /**
 6 |  * 假设这个是你的DAO存储。当然还要这个类让spring管理,当然你不用需要存储,也不需要这个类。
 7 |  *
 8 |  * @author Jiaju Zhuang
 9 |  **/
10 | public class DemoDAO {
11 | 
12 |     public void save(List<DemoData> list) {
13 |         // 如果是mybatis,尽量别直接调用多次insert,自己写一个mapper里面新增一个方法batchInsert,所有数据一次性插入
14 |     }
15 | }
16 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/DemoData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.read;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * 基础数据类.这里的排序和excel里面的排序一致
11 |  *
12 |  * @author Jiaju Zhuang
13 |  **/
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class DemoData {
18 |     private String string;
19 |     private Date date;
20 |     private Double doubleData;
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/DemoDataAnother.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.read;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | import lombok.ToString;
 7 | 
 8 | @Getter
 9 | @Setter
10 | @EqualsAndHashCode
11 | @ToString
12 | public class DemoDataAnother {
13 |     private String strA;
14 |     private String strB;
15 |     private String strC;
16 | }
17 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/DemoExtraData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.read;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | @Getter
11 | @Setter
12 | @EqualsAndHashCode
13 | public class DemoExtraData {
14 | 
15 |     private String row1;
16 | 
17 |     private String row2;
18 | }
19 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/ExceptionDemoData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.read;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | import java.util.Date;
 8 | 
 9 | /**
10 |  * Basic data class. The order here is consistent with the order in the Excel file.
11 |  *
12 |  * @author Jiaju Zhuang
13 |  **/
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class ExceptionDemoData {
18 | 
19 |     /**
20 |      * Using a Date to receive a string will definitely cause an error.
21 |      */
22 |     private Date date;
23 | }
24 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/GenericHeaderTypeDataListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.read;
 2 | 
 3 | import cn.idev.excel.context.AnalysisContext;
 4 | import cn.idev.excel.read.listener.ReadListener;
 5 | import lombok.extern.slf4j.Slf4j;
 6 | 
 7 | /**
 8 |  * A data listener example that specifies the header type through generics.
 9 |  *
10 |  * @param <T>
11 |  */
12 | @Slf4j
13 | public class GenericHeaderTypeDataListener<T> implements ReadListener<T> {
14 | 
15 |     private final Class<T> headerClass;
16 | 
17 |     private GenericHeaderTypeDataListener(Class<T> headerClass) {
18 |         this.headerClass = headerClass;
19 |     }
20 | 
21 | 
22 |     @Override
23 |     public void invoke(T data, AnalysisContext context) {
24 |         log.info("data:{}", data);
25 |         // Execute business logic
26 |     }
27 | 
28 |     @Override
29 |     public void doAfterAllAnalysed(AnalysisContext context) {
30 |         // Perform cleanup tasks
31 |     }
32 | 
33 |     public static <T> GenericHeaderTypeDataListener<T> build(Class<T> excelHeaderClass) {
34 |         return new GenericHeaderTypeDataListener<>(excelHeaderClass);
35 |     }
36 | 
37 |     public Class<T> getHeaderClass() {
38 |         return headerClass;
39 |     }
40 | }
41 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/IndexOrNameData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.read;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelProperty;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * Basic data class
13 |  *
14 |  * @author Jiaju Zhuang
15 |  **/
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | public class IndexOrNameData {
20 |     /**
21 |      * Force reading the third column. It is not recommended to use both index and name at the same time.
22 |      * Either use index only or use name only for matching within a single object.
23 |      */
24 |     @ExcelProperty(index = 2)
25 |     private Double doubleData;
26 |     /**
27 |      * Match by name. Note that if the name is duplicated, only one field will be populated with data.
28 |      */
29 |     @ExcelProperty("String")
30 |     private String string;
31 | 
32 |     @ExcelProperty("Date")
33 |     private Date date;
34 | }
35 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/Sample.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.read;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.NoArgsConstructor;
 6 | import lombok.Setter;
 7 | 
 8 | @Getter
 9 | @Setter
10 | @EqualsAndHashCode
11 | @NoArgsConstructor
12 | public class Sample {
13 |     
14 |     private String header;
15 | }


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/web/DownloadData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.web;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelProperty;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * 基础数据类
13 |  *
14 |  * @author Jiaju Zhuang
15 |  **/
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | public class DownloadData {
20 |     @ExcelProperty("字符串标题")
21 |     private String string;
22 |     @ExcelProperty("日期标题")
23 |     private Date date;
24 |     @ExcelProperty("数字标题")
25 |     private Double doubleData;
26 | }
27 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/web/EasyexcelApplication.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.web;
 2 | 
 3 | import org.springframework.boot.SpringApplication;
 4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 | 
 6 | @SpringBootApplication
 7 | public class EasyexcelApplication {
 8 | 
 9 |     public static void main(String[] args) {
10 |         SpringApplication.run(EasyexcelApplication.class, args);
11 |     }
12 | }
13 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/web/UploadDAO.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.web;
 2 | 
 3 | import java.util.List;
 4 | 
 5 | import org.springframework.stereotype.Repository;
 6 | 
 7 | /**
 8 |  * 假设这个是你的DAO存储。当然还要这个类让spring管理,当然你不用需要存储,也不需要这个类。
 9 |  *
10 |  * @author Jiaju Zhuang
11 |  **/
12 | @Repository
13 | public class UploadDAO {
14 | 
15 |     public void save(List<UploadData> list) {
16 |         // 如果是mybatis,尽量别直接调用多次insert,自己写一个mapper里面新增一个方法batchInsert,所有数据一次性插入
17 |     }
18 | }
19 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/web/UploadData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.web;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * 基础数据类
11 |  *
12 |  * @author Jiaju Zhuang
13 |  **/
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class UploadData {
18 |     private String string;
19 |     private Date date;
20 |     private Double doubleData;
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/write/ColorDemoData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.write;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | import cn.idev.excel.annotation.write.style.HeadFontStyle;
 5 | import lombok.AllArgsConstructor;
 6 | import lombok.EqualsAndHashCode;
 7 | import lombok.NoArgsConstructor;
 8 | import lombok.Setter;
 9 | import lombok.Getter;
10 | import org.apache.poi.ss.usermodel.Font;
11 | 
12 | /**
13 |  * Basic data class for test color
14 |  *
15 |  **/
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | @AllArgsConstructor
20 | @NoArgsConstructor
21 | public class ColorDemoData {
22 | 
23 | 
24 |     @ExcelProperty("姓名")
25 |     private String name;
26 |     @ExcelProperty("年龄")
27 |     @HeadFontStyle(color = Font.COLOR_RED)
28 |     private Integer age;
29 |     @ExcelProperty("性别")
30 |     private String sex;
31 | }
32 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/write/ComplexHeadData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.write;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelProperty;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * 复杂头数据.这里最终效果是第一行就一个主标题,第二行分类
13 |  *
14 |  * @author Jiaju Zhuang
15 |  **/
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | public class ComplexHeadData {
20 |     @ExcelProperty({"主标题", "字符串标题"})
21 |     private String string;
22 |     @ExcelProperty({"主标题", "日期标题"})
23 |     private Date date;
24 |     @ExcelProperty({"主标题", "数字标题"})
25 |     private Double doubleData;
26 | }
27 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/write/ConverterData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.write;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelProperty;
 6 | import cn.idev.excel.annotation.format.DateTimeFormat;
 7 | import cn.idev.excel.annotation.format.NumberFormat;
 8 | 
 9 | import lombok.EqualsAndHashCode;
10 | import lombok.Getter;
11 | import lombok.Setter;
12 | 
13 | /**
14 |  * 基础数据类.这里的排序和excel里面的排序一致
15 |  *
16 |  * @author Jiaju Zhuang
17 |  **/
18 | @Getter
19 | @Setter
20 | @EqualsAndHashCode
21 | public class ConverterData {
22 |     /**
23 |      * 我想所有的 字符串起前面加上"自定义:"三个字
24 |      */
25 |     @ExcelProperty(value = "字符串标题", converter = CustomStringStringConverter.class)
26 |     private String string;
27 |     /**
28 |      * 我想写到excel 用年月日的格式
29 |      */
30 |     @DateTimeFormat("yyyy年MM月dd日HH时mm分ss秒")
31 |     @ExcelProperty("日期标题")
32 |     private Date date;
33 |     /**
34 |      * 我想写到excel 用百分比表示
35 |      */
36 |     @NumberFormat("#.##%")
37 |     @ExcelProperty(value = "数字标题")
38 |     private Double doubleData;
39 | }
40 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/write/DemoData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.write;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelIgnore;
 4 | import cn.idev.excel.annotation.ExcelProperty;
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | import java.util.Date;
10 | 
11 | /**
12 |  * Basic data class
13 |  *
14 |  * @author Jiaju Zhuang
15 |  **/
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | public class DemoData {
20 |     /**
21 |      * String Title
22 |      */
23 |     @ExcelProperty("String Title")
24 |     private String string;
25 | 
26 |     /**
27 |      * Date Title
28 |      */
29 |     @ExcelProperty("Date Title")
30 |     private Date date;
31 | 
32 |     /**
33 |      * Number Title
34 |      */
35 |     @ExcelProperty("Number Title")
36 |     private Double doubleData;
37 | 
38 |     /**
39 |      * Ignore this field
40 |      */
41 |     @ExcelIgnore
42 |     private String ignore;
43 | }
44 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/write/DemoMergeData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.write;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelProperty;
 6 | import cn.idev.excel.annotation.write.style.ContentLoopMerge;
 7 | 
 8 | import lombok.EqualsAndHashCode;
 9 | import lombok.Getter;
10 | import lombok.Setter;
11 | 
12 | /**
13 |  * 样式的数据类
14 |  *
15 |  * @author Jiaju Zhuang
16 |  **/
17 | @Getter
18 | @Setter
19 | @EqualsAndHashCode
20 | // 将第6-7行的2-3列合并成一个单元格
21 | // @OnceAbsoluteMerge(firstRowIndex = 5, lastRowIndex = 6, firstColumnIndex = 1, lastColumnIndex = 2)
22 | public class DemoMergeData {
23 |     // 这一列 每隔2行 合并单元格
24 |     @ContentLoopMerge(eachRow = 2)
25 |     @ExcelProperty("字符串标题")
26 |     private String string;
27 |     @ExcelProperty("日期标题")
28 |     private Date date;
29 |     @ExcelProperty("数字标题")
30 |     private Double doubleData;
31 | }
32 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/write/ImageDataWithAnnotation.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.write;
 2 | 
 3 | import java.io.File;
 4 | import java.io.InputStream;
 5 | import java.net.URL;
 6 | 
 7 | import cn.idev.excel.annotation.write.style.ContentRowHeight;
 8 | import cn.idev.excel.converters.string.StringImageConverter;
 9 | import cn.idev.excel.annotation.ExcelProperty;
10 | import cn.idev.excel.annotation.write.style.ColumnWidth;
11 | 
12 | import lombok.EqualsAndHashCode;
13 | import lombok.Getter;
14 | import lombok.Setter;
15 | 
16 | /**
17 |  * 图片导出类
18 |  */
19 | @Getter
20 | @Setter
21 | @EqualsAndHashCode
22 | @ContentRowHeight(100)
23 | @ColumnWidth(100 / 8)
24 | public class ImageDataWithAnnotation {
25 |     private File file;
26 |     private InputStream inputStream;
27 |     /**
28 |      * 如果string类型 必须指定转换器,string默认转换成string
29 |      */
30 |     @ExcelProperty(converter = StringImageConverter.class)
31 |     private String string;
32 |     private byte[] byteArray;
33 |     /**
34 |      * 根据url导出
35 |      *
36 |      * @since 2.1.1
37 |      */
38 |     private URL url;
39 | }
40 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/write/IndexData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.write;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelProperty;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * 基础数据类
13 |  *
14 |  * @author Jiaju Zhuang
15 |  **/
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | public class IndexData {
20 |     @ExcelProperty(value = "字符串标题", index = 0)
21 |     private String string;
22 |     @ExcelProperty(value = "日期标题", index = 1)
23 |     private Date date;
24 |     /**
25 |      * 这里设置3 会导致第二列空的
26 |      */
27 |     @ExcelProperty(value = "数字标题", index = 3)
28 |     private Double doubleData;
29 | }
30 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/write/LongestMatchColumnWidthData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.write;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelProperty;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * 基础数据类
13 |  *
14 |  * @author Jiaju Zhuang
15 |  **/
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | public class LongestMatchColumnWidthData {
20 |     @ExcelProperty("字符串标题")
21 |     private String string;
22 |     @ExcelProperty("日期标题很长日期标题很长日期标题很长很长")
23 |     private Date date;
24 |     @ExcelProperty("数字")
25 |     private Double doubleData;
26 | }
27 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/write/WidthAndHeightData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.write;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelProperty;
 6 | import cn.idev.excel.annotation.write.style.ColumnWidth;
 7 | import cn.idev.excel.annotation.write.style.ContentRowHeight;
 8 | import cn.idev.excel.annotation.write.style.HeadRowHeight;
 9 | 
10 | import lombok.EqualsAndHashCode;
11 | import lombok.Getter;
12 | import lombok.Setter;
13 | 
14 | /**
15 |  * 基础数据类
16 |  *
17 |  * @author Jiaju Zhuang
18 |  **/
19 | @Getter
20 | @Setter
21 | @EqualsAndHashCode
22 | @ContentRowHeight(10)
23 | @HeadRowHeight(20)
24 | @ColumnWidth(25)
25 | public class WidthAndHeightData {
26 |     @ExcelProperty("字符串标题")
27 |     private String string;
28 |     @ExcelProperty("日期标题")
29 |     private Date date;
30 |     /**
31 |      * 宽度为50
32 |      */
33 |     @ColumnWidth(50)
34 |     @ExcelProperty("数字标题")
35 |     private Double doubleData;
36 | }
37 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/write/WriteCellDemoData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.write;
 2 | 
 3 | import cn.idev.excel.metadata.data.WriteCellData;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * 根据WriteCellData写
11 |  *
12 |  * @author Jiaju Zhuang
13 |  */
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class WriteCellDemoData {
18 |     /**
19 |      * 超链接
20 |      *
21 |      * @since 3.0.0-beta1
22 |      */
23 |     private WriteCellData<String> hyperlink;
24 | 
25 |     /**
26 |      * 备注
27 |      *
28 |      * @since 3.0.0-beta1
29 |      */
30 |     private WriteCellData<String> commentData;
31 | 
32 |     /**
33 |      * 公式
34 |      *
35 |      * @since 3.0.0-beta1
36 |      */
37 |     private WriteCellData<String> formulaData;
38 | 
39 |     /**
40 |      * 指定单元格的样式。当然样式 也可以用注解等方式。
41 |      *
42 |      * @since 3.0.0-beta1
43 |      */
44 |     private WriteCellData<String> writeCellStyle;
45 | 
46 |     /**
47 |      * 指定一个单元格有多个样式
48 |      *
49 |      * @since 3.0.0-beta1
50 |      */
51 |     private WriteCellData<String> richText;
52 | }
53 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/demo/write/WriteWithColorTest.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.demo.write;
 2 | 
 3 | import cn.idev.excel.EasyExcel;
 4 | import cn.idev.excel.test.util.TestFileUtil;
 5 | import org.junit.jupiter.api.Test;
 6 | 
 7 | import java.util.LinkedList;
 8 | import java.util.List;
 9 | 
10 | /**
11 |  * Class for testing colors
12 |  *
13 |  */
14 | public class WriteWithColorTest {
15 | 
16 | 
17 |     @Test
18 |     public void write() {
19 |         String fileName = TestFileUtil.getPath() + "simpleWrite" + System.currentTimeMillis() + ".xlsx";
20 |         EasyExcel.write(fileName, ColorDemoData.class)
21 |             .sheet("模板")
22 |             .doWrite(this::data);
23 |         System.out.println(fileName);
24 |     }
25 | 
26 |     private List<ColorDemoData> data() {
27 |         List<ColorDemoData> list = new LinkedList<>();
28 |         for (int i = 0; i < 10; i++) {
29 |             list.add(new ColorDemoData("name" + i, i, "男"));
30 |         }
31 |         return list;
32 |     }
33 | 
34 | }
35 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/CamlData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * TODO
 9 |  *
10 |  * @author 是仪
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class CamlData {
16 |     private String string1;
17 |     private String String2;
18 |     private String sTring3;
19 |     private String STring4;
20 |     private String STRING5;
21 |     private String STRing6;
22 | }
23 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/DemoData2.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp;
 2 | 
 3 | import java.math.BigDecimal;
 4 | import java.util.Date;
 5 | 
 6 | import cn.idev.excel.annotation.ExcelIgnore;
 7 | import cn.idev.excel.annotation.ExcelProperty;
 8 | 
 9 | import lombok.EqualsAndHashCode;
10 | import lombok.Getter;
11 | import lombok.Setter;
12 | 
13 | /**
14 |  * 基础数据类
15 |  *
16 |  * @author Jiaju Zhuang
17 |  **/
18 | @Getter
19 | @Setter
20 | @EqualsAndHashCode
21 | public class DemoData2 {
22 |     @ExcelProperty("字符串标题")
23 |     private String string;
24 |     @ExcelProperty("日期标题")
25 |     private Date date;
26 |     @ExcelProperty("数字标题")
27 |     private Double doubleData;
28 |     @ExcelProperty("数字标题2")
29 |     private BigDecimal bigDecimal;
30 |     /**
31 |      * 忽略这个字段
32 |      */
33 |     @ExcelIgnore
34 |     private String ignore;
35 | }
36 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/DemoData3.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp;
 2 | 
 3 | import java.time.LocalDateTime;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelProperty;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * 基础数据类
13 |  *
14 |  * @author Jiaju Zhuang
15 |  **/
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | public class DemoData3 {
20 |     @ExcelProperty("日期时间标题")
21 |     private LocalDateTime localDateTime;
22 | }
23 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/LockData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp;
 2 | 
 3 | import cn.idev.excel.annotation.format.NumberFormat;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * 基础数据类.这里的排序和excel里面的排序一致
11 |  *
12 |  * @author Jiaju Zhuang
13 |  **/
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class LockData {
18 |     @NumberFormat("#.##%")
19 |     private Double string0;
20 |     private String string1;
21 |     private String string2;
22 |     private String string3;
23 |     private String string4;
24 |     private String string5;
25 |     private String string6;
26 |     private String string7;
27 |     private String string8;
28 | 
29 | }
30 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/StyleData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp;
 2 | 
 3 | import java.util.List;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  **/
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class StyleData {
16 |     private byte[] byteValue;
17 |     private Byte[] byteValue2;
18 |     private byte byteValue1;
19 |     private Byte byteValue4;
20 |     private byte byteValue3;
21 |     private String[] ss;
22 |     private List<String> s1s;
23 | }
24 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/TempFillData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp;
 2 | 
 3 | import cn.idev.excel.annotation.write.style.ContentRowHeight;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | @ContentRowHeight(30)
16 | public class TempFillData {
17 |     private String name;
18 |     private double number;
19 | }
20 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/bug/DataType.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.bug;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author jiaosong
11 |  * @desc
12 |  * @date 2021/4/6
13 |  */
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class DataType {
18 |     /**
19 |      * 任务id
20 |      */
21 |     @ExcelProperty("任务ID")
22 |     private Integer id;
23 | 
24 |     @ExcelProperty("多余字段1")
25 |     private String firstSurplus;
26 | 
27 |     @ExcelProperty("多余字段2")
28 |     private String secSurplus;
29 | 
30 |     @ExcelProperty("多余字段3")
31 |     private String thirdSurplus;
32 | 
33 |     @ExcelProperty(value = "备注1")
34 |     private String firstRemark;
35 | 
36 |     @ExcelProperty(value = "备注2")
37 |     private String secRemark;
38 | }
39 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/bug/ExcelCreat.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.bug;
 2 | 
 3 | import java.io.FileNotFoundException;
 4 | import java.io.FileOutputStream;
 5 | import java.util.Collections;
 6 | import java.util.List;
 7 | 
 8 | import cn.idev.excel.EasyExcel;
 9 | import cn.idev.excel.ExcelWriter;
10 | import cn.idev.excel.write.metadata.WriteSheet;
11 | 
12 | /**
13 |  * @author jiaosong
14 |  * @desc
15 |  * @date 2020/4/6
16 |  */
17 | public class ExcelCreat {
18 | 
19 |     public static void main(String[] args) throws FileNotFoundException {
20 |         List<DataType> data = getData();
21 |         ExcelWriter excelWriter = null;
22 |         excelWriter = EasyExcel.write(new FileOutputStream("all.xlsx")).build();
23 |         WriteSheet writeSheet = EasyExcel.writerSheet(1, "test")
24 |             .head(HeadType.class)
25 |             .build();
26 |         excelWriter.write(data, writeSheet);
27 |         excelWriter.finish();
28 |     }
29 | 
30 |     private static List<DataType> getData() {
31 |         DataType vo = new DataType();
32 |         vo.setId(738);
33 |         vo.setFirstRemark("1222");
34 |         vo.setSecRemark("22222");
35 |         return Collections.singletonList(vo);
36 |     }
37 | }
38 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/bug/HeadType.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.bug;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * @author jiaosong
11 |  * @desc
12 |  * @date 2021/4/6
13 |  */
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class HeadType {
18 | 
19 |     /**
20 |      * 任务id
21 |      */
22 |     @ExcelProperty("任务ID")
23 |     private Integer id;
24 | 
25 |     @ExcelProperty(value = "备注1")
26 |     private String firstRemark;
27 | 
28 |     @ExcelProperty(value = "备注2")
29 |     private String secRemark;
30 | 
31 | }
32 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/csv/CsvData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.csv;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelIgnore;
 6 | import cn.idev.excel.annotation.ExcelProperty;
 7 | 
 8 | import lombok.EqualsAndHashCode;
 9 | import lombok.Getter;
10 | import lombok.Setter;
11 | 
12 | /**
13 |  * TODO
14 |  *
15 |  * @author Jiaju Zhuang
16 |  */
17 | @Getter
18 | @Setter
19 | @EqualsAndHashCode
20 | public class CsvData {
21 |     @ExcelProperty("字符串标题")
22 |     private String string;
23 |     @ExcelProperty("日期标题")
24 |     private Date date;
25 |     @ExcelProperty("数字标题")
26 |     private Double doubleData;
27 |     /**
28 |      * 忽略这个字段
29 |      */
30 |     @ExcelIgnore
31 |     private String ignore;
32 | }
33 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/data/DataType.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.data;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | @Getter
10 | @Setter
11 | @EqualsAndHashCode
12 | public class DataType {
13 |     /**
14 |      * 任务id
15 |      */
16 |     @ExcelProperty("任务ID")
17 |     private Integer id;
18 | 
19 |     @ExcelProperty("多余字段1")
20 |     private String firstSurplus;
21 | 
22 |     @ExcelProperty("多余字段2")
23 |     private String secSurplus;
24 | 
25 |     @ExcelProperty("多余字段3")
26 |     private String thirdSurplus;
27 | 
28 |     @ExcelProperty(value = "备注1")
29 |     private String firstRemark;
30 | 
31 |     @ExcelProperty(value = "备注2")
32 |     private String secRemark;
33 | }
34 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/data/HeadType.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.data;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | @Getter
10 | @Setter
11 | @EqualsAndHashCode
12 | public class HeadType {
13 | 
14 |     /**
15 |      * 任务id
16 |      */
17 |     @ExcelProperty("任务ID")
18 |     private Integer id;
19 | 
20 |     @ExcelProperty(value = "备注1")
21 |     private String firstRemark;
22 | 
23 |     @ExcelProperty(value = "备注2")
24 |     private String secRemark;
25 | 
26 | }
27 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/dataformat/DataFormatData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.dataformat;
 2 | 
 3 | import cn.idev.excel.metadata.data.ReadCellData;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * TODO
11 |  *
12 |  * @author 罗成
13 |  **/
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class DataFormatData {
18 |     private ReadCellData<String> date;
19 |     private ReadCellData<String> num;
20 | }
21 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/fill/FillData2.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.fill;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * @author Jiaju Zhuang
 9 |  */
10 | @Getter
11 | @Setter
12 | @EqualsAndHashCode
13 | public class FillData2 {
14 |     private String test;
15 | }
16 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/issue1662/Data1662.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.issue1662;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelProperty;
 6 | 
 7 | import lombok.AllArgsConstructor;
 8 | import lombok.EqualsAndHashCode;
 9 | import lombok.Getter;
10 | import lombok.NoArgsConstructor;
11 | import lombok.Setter;
12 | 
13 | @Getter
14 | @Setter
15 | @EqualsAndHashCode
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | public class Data1662 {
19 |     @ExcelProperty(index = 0)
20 |     private String str;
21 |     @ExcelProperty(index = 1)
22 |     private Date date;
23 |     @ExcelProperty(index = 2)
24 |     private double r;
25 | }
26 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/issue1663/FillData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.issue1663;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | @Getter
 8 | @Setter
 9 | @EqualsAndHashCode
10 | public class FillData {
11 |     private String name;
12 |     private double number;
13 | }
14 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/issue2319/Issue2319.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.issue2319;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | @Getter
 8 | @Setter
 9 | @EqualsAndHashCode
10 | public class Issue2319 {
11 |     private String num1;
12 |     private String num2;
13 | }


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/issue2443/Issue2443.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.issue2443;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | @Getter
 8 | @Setter
 9 | @EqualsAndHashCode
10 | public class Issue2443 {
11 |     private int a;
12 |     private int b;
13 | }
14 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/large/LargeData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.large;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.NoArgsConstructor;
 6 | import lombok.Setter;
 7 | 
 8 | /**
 9 |  * @author Jiaju Zhuang
10 |  */
11 | @Getter
12 | @Setter
13 | @EqualsAndHashCode
14 | @NoArgsConstructor
15 | public class LargeData {
16 | 
17 |     private String str1;
18 | 
19 |     private String str2;
20 | 
21 |     private String str3;
22 | 
23 |     private String str4;
24 | 
25 |     private String str5;
26 | 
27 |     private String str6;
28 | 
29 |     private String str7;
30 | 
31 |     private String str8;
32 | 
33 |     private String str9;
34 | 
35 |     private String str10;
36 | 
37 |     private String str11;
38 | 
39 |     private String str12;
40 | 
41 |     private String str13;
42 | 
43 |     private String str14;
44 | 
45 |     private String str15;
46 | 
47 |     private String str16;
48 | 
49 |     private String str17;
50 | 
51 |     private String str18;
52 | 
53 |     private String str19;
54 | 
55 |     private String str20;
56 | 
57 |     private String str21;
58 | 
59 |     private String str22;
60 | 
61 |     private String str23;
62 | 
63 |     private String str24;
64 | 
65 |     private String str25;
66 | }
67 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/large/LargeDataListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.large;
 2 | 
 3 | import cn.idev.excel.event.AnalysisEventListener;
 4 | import cn.idev.excel.context.AnalysisContext;
 5 | import com.alibaba.fastjson2.JSON;
 6 | 
 7 | import org.slf4j.Logger;
 8 | import org.slf4j.LoggerFactory;
 9 | 
10 | /**
11 |  * @author Jiaju Zhuang
12 |  */
13 | public class LargeDataListener extends AnalysisEventListener<LargeData> {
14 |     private static final Logger LOGGER = LoggerFactory.getLogger(LargeDataListener.class);
15 |     private int count = 0;
16 | 
17 |     @Override
18 |     public void invoke(LargeData data, AnalysisContext context) {
19 |         if (count == 0) {
20 |             LOGGER.info("First row:{}", JSON.toJSONString(data));
21 |         }
22 |         count++;
23 |         if (count % 100000 == 0) {
24 |             LOGGER.info("Already read:{}", count);
25 |         }
26 |     }
27 | 
28 |     @Override
29 |     public void doAfterAllAnalysed(AnalysisContext context) {
30 |         LOGGER.info("Large row count:{}", count);
31 |     }
32 | }
33 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/large/NoModelLargeDataListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.large;
 2 | 
 3 | import java.util.Map;
 4 | 
 5 | import cn.idev.excel.event.AnalysisEventListener;
 6 | import cn.idev.excel.context.AnalysisContext;
 7 | import com.alibaba.fastjson2.JSON;
 8 | 
 9 | import org.slf4j.Logger;
10 | import org.slf4j.LoggerFactory;
11 | 
12 | /**
13 |  * @author Jiaju Zhuang
14 |  */
15 | public class NoModelLargeDataListener extends AnalysisEventListener<Map<Integer, String>> {
16 | 
17 |     private static final Logger LOGGER = LoggerFactory.getLogger(NoModelLargeDataListener.class);
18 |     private int count = 0;
19 | 
20 |     @Override
21 |     public void invoke(Map<Integer, String> data, AnalysisContext context) {
22 |         if (count == 0) {
23 |             LOGGER.info("First row:{}", JSON.toJSONString(data));
24 |         }
25 |         count++;
26 |         if (count % 100000 == 0) {
27 |             LOGGER.info("Already read:{}", count);
28 |         }
29 |     }
30 | 
31 |     @Override
32 |     public void doAfterAllAnalysed(AnalysisContext context) {
33 |         LOGGER.info("Large row count:{}", count);
34 |     }
35 | }
36 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/poi/TestCell.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.poi;
 2 | 
 3 | import java.util.List;
 4 | 
 5 | import cn.idev.excel.metadata.data.CellData;
 6 | 
 7 | import lombok.EqualsAndHashCode;
 8 | import lombok.Getter;
 9 | import lombok.Setter;
10 | 
11 | /**
12 |  * TODO
13 |  *
14 |  * @author 罗成
15 |  **/
16 | @Getter
17 | @Setter
18 | @EqualsAndHashCode
19 | public class TestCell {
20 |     private CellData<?> c1;
21 |     private CellData<List<String>> c2;
22 | }
23 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/read/HeadReadData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.read;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * 临时测试
11 |  *
12 |  * @author Jiaju Zhuang
13 |  **/
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class HeadReadData {
18 |     @ExcelProperty({"主标题", "数据1"})
19 |     private String h1;
20 |     @ExcelProperty({"主标题", "数据2"})
21 |     private String h2;
22 | }
23 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/read/TestListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.read;
 2 | 
 3 | import cn.idev.excel.event.AnalysisEventListener;
 4 | import cn.idev.excel.context.AnalysisContext;
 5 | import com.alibaba.fastjson2.JSON;
 6 | 
 7 | import lombok.extern.slf4j.Slf4j;
 8 | 
 9 | /**
10 |  * TODO
11 |  *
12 |  * @author JiaJu Zhuang
13 |  * @date 2020/4/9 16:33
14 |  **/
15 | @Slf4j
16 | public class TestListener extends AnalysisEventListener {
17 | 
18 |     @Override
19 |     public void invoke(Object o, AnalysisContext analysisContext) {
20 |         log.info("解析一条:{}", JSON.toJSONString(o));
21 |     }
22 | 
23 |     @Override
24 |     public void doAfterAllAnalysed(AnalysisContext analysisContext) {
25 | 
26 |     }
27 | }
28 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/simple/DemoData1.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.simple;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelIgnore;
 6 | import cn.idev.excel.annotation.ExcelProperty;
 7 | import cn.idev.excel.annotation.write.style.HeadStyle;
 8 | import cn.idev.excel.enums.poi.FillPatternTypeEnum;
 9 | 
10 | import lombok.EqualsAndHashCode;
11 | import lombok.Getter;
12 | import lombok.Setter;
13 | 
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class DemoData1 {
18 |     @ExcelProperty("字符串标题")
19 |     @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 42)
20 |     private String string;
21 |     @ExcelProperty("日期标题")
22 |     private Date date;
23 |     @ExcelProperty("数字标题")
24 |     private Double doubleData;
25 |     /**
26 |      * 忽略这个字段
27 |      */
28 |     @ExcelIgnore
29 |     private String ignore;
30 | }
31 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/simple/DemoData2.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.simple;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import cn.idev.excel.annotation.ExcelIgnore;
 6 | import cn.idev.excel.annotation.ExcelProperty;
 7 | import cn.idev.excel.annotation.write.style.HeadStyle;
 8 | import cn.idev.excel.enums.poi.FillPatternTypeEnum;
 9 | 
10 | import lombok.EqualsAndHashCode;
11 | import lombok.Getter;
12 | import lombok.Setter;
13 | 
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class DemoData2 {
18 |     @ExcelProperty("字符串标题")
19 |     @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 42)
20 |     private String string;
21 |     @ExcelProperty("日期标题")
22 |     private Date date;
23 |     @ExcelProperty("数字标题")
24 |     private Double doubleData;
25 |     /**
26 |      * 忽略这个字段
27 |      */
28 |     @ExcelIgnore
29 |     private String ignore;
30 | }
31 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/simple/HgListener.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.simple;
 2 | 
 3 | import java.util.Map;
 4 | 
 5 | import cn.idev.excel.event.AnalysisEventListener;
 6 | import cn.idev.excel.context.AnalysisContext;
 7 | import com.alibaba.fastjson2.JSON;
 8 | 
 9 | import org.slf4j.Logger;
10 | import org.slf4j.LoggerFactory;
11 | 
12 | /**
13 |  * 模板的读取类
14 |  *
15 |  * @author Jiaju Zhuang
16 |  */
17 | public class HgListener extends AnalysisEventListener<Map<Integer, String>> {
18 |     private static final Logger LOGGER = LoggerFactory.getLogger(HgListener.class);
19 |     /**
20 |      * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收
21 |      */
22 |     private static final int BATCH_COUNT = 5;
23 | 
24 |     @Override
25 |     public void invoke(Map<Integer, String> data, AnalysisContext context) {
26 |         LOGGER.info("index:{}", context.readRowHolder().getRowIndex());
27 |         LOGGER.info("解析到一条数据:{}", JSON.toJSONString(data));
28 |     }
29 | 
30 |     @Override
31 |     public void doAfterAllAnalysed(AnalysisContext context) {
32 |         LOGGER.info("所有数据解析完成!");
33 |     }
34 | 
35 | }
36 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/simple/JsonData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.simple;
 2 | 
 3 | import lombok.EqualsAndHashCode;
 4 | import lombok.Getter;
 5 | import lombok.Setter;
 6 | 
 7 | /**
 8 |  * TODO
 9 |  *
10 |  * @author Jiaju Zhuang
11 |  **/
12 | @Getter
13 | @Setter
14 | @EqualsAndHashCode
15 | public class JsonData {
16 |     private String SS1;
17 |     private String sS2;
18 |     private String ss3;
19 | }
20 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/simple/WriteData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.simple;
 2 | 
 3 | import java.util.Date;
 4 | 
 5 | import lombok.EqualsAndHashCode;
 6 | import lombok.Getter;
 7 | import lombok.Setter;
 8 | 
 9 | /**
10 |  * write data
11 |  *
12 |  * @author Jiaju Zhuang
13 |  **/
14 | @Getter
15 | @Setter
16 | @EqualsAndHashCode
17 | public class WriteData {
18 |     //    @ContentStyle(locked = true)
19 |     private Date dd;
20 |     //    @ContentStyle(locked = false)
21 |     private float f1;
22 | }
23 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/simple/WriteHandler.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.simple;
 2 | 
 3 | import cn.idev.excel.write.handler.SheetWriteHandler;
 4 | import cn.idev.excel.write.metadata.holder.WriteSheetHolder;
 5 | import cn.idev.excel.write.metadata.holder.WriteWorkbookHolder;
 6 | 
 7 | import lombok.extern.slf4j.Slf4j;
 8 | 
 9 | /**
10 |  * @author Jiaju Zhuang
11 |  */
12 | @Slf4j
13 | public class WriteHandler implements SheetWriteHandler {
14 | 
15 |     @Override
16 |     public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder,
17 |         WriteSheetHolder writeSheetHolder) {
18 |         log.info("锁住");
19 |         writeSheetHolder.getSheet().protectSheet("edit");
20 |     }
21 | }
22 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/temp/write/TempWriteData.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.temp.write;
 2 | 
 3 | import cn.idev.excel.annotation.ExcelProperty;
 4 | import cn.idev.excel.annotation.write.style.ContentStyle;
 5 | import cn.idev.excel.annotation.write.style.HeadStyle;
 6 | import cn.idev.excel.enums.BooleanEnum;
 7 | 
 8 | import lombok.Data;
 9 | 
10 | @Data
11 | //@Accessors(chain = true)
12 | public class TempWriteData {
13 |     private String name1;
14 | 
15 |     @ExcelProperty("     换行\r\n \\ \r\n的名字")
16 |     @HeadStyle(wrapped = BooleanEnum.TRUE)
17 |     @ContentStyle(wrapped = BooleanEnum.TRUE)
18 |     private String name;
19 | }
20 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/java/cn/idev/excel/test/util/TestUtil.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.test.util;
 2 | 
 3 | import java.text.ParseException;
 4 | import java.time.LocalDate;
 5 | import java.time.LocalDateTime;
 6 | import java.util.Date;
 7 | 
 8 | import cn.idev.excel.util.DateUtils;
 9 | 
10 | import lombok.extern.slf4j.Slf4j;
11 | 
12 | /**
13 |  * test util
14 |  *
15 |  * @author Jiaju Zhuang
16 |  */
17 | @Slf4j
18 | public class TestUtil {
19 | 
20 |     public static final Date TEST_DATE;
21 |     public static final LocalDate TEST_LOCAL_DATE = LocalDate.of(2020, 1, 1);
22 |     public static final LocalDateTime TEST_LOCAL_DATE_TIME = LocalDateTime.of(2020, 1, 1, 1, 1, 1);
23 | 
24 |     static {
25 |         try {
26 |             TEST_DATE = DateUtils.parseDate("2020-01-01 01:01:01");
27 |         } catch (ParseException e) {
28 |             log.error("init TestUtil error.", e);
29 |             throw new RuntimeException(e);
30 |         }
31 |     }
32 | 
33 | }
34 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/bom/no_bom.csv:
--------------------------------------------------------------------------------
 1 | 姓名,年纪
 2 | 姓名0,20
 3 | 姓名1,20
 4 | 姓名2,20
 5 | 姓名3,20
 6 | 姓名4,20
 7 | 姓名5,20
 8 | 姓名6,20
 9 | 姓名7,20
10 | 姓名8,20
11 | 姓名9,20


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/bom/office_bom.csv:
--------------------------------------------------------------------------------
 1 | 姓名,年纪
 2 | 姓名0,20
 3 | 姓名1,20
 4 | 姓名2,20
 5 | 姓名3,20
 6 | 姓名4,20
 7 | 姓名5,20
 8 | 姓名6,20
 9 | 姓名7,20
10 | 姓名8,20
11 | 姓名9,20


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/cache/headt1.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/cache/headt1.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/cache/t2.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/cache/t2.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/comment/comment.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/comment/comment.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/comment/comment.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/comment/comment.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/compatibility/t01.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/compatibility/t01.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/compatibility/t02.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/compatibility/t02.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/compatibility/t03.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/compatibility/t03.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/compatibility/t04.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/compatibility/t04.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/compatibility/t05.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/compatibility/t05.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/compatibility/t06.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/compatibility/t06.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/compatibility/t07.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/compatibility/t07.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/compatibility/t09.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/compatibility/t09.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/converter/converter03.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/converter/converter03.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/converter/converter07.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/converter/converter07.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/converter/converterCsv.csv:
--------------------------------------------------------------------------------
1 | 大数的布尔(不支持),大数的数字,大数的字符串,大整数的布尔(不支持),大整数的数字,大整数的字符串,布尔的布尔,布尔的数字(不支持),布尔的字符串,字节的布尔(不支持),字节的数字,字节的字符串,日期的数字,日期的字符串,本地日期的数字,本地日期的字符串,双精度浮点的布尔(不支持),双精度浮点的数字,双精度浮点的字符串,浮点的布尔(不支持),浮点的数字,浮点的字符串,整型的布尔(不支持),整型的数字,整型的字符串,长整型的布尔(不支持),长整型的数字,长整型的字符串,短整型的布尔(不支持),短整型的数字,短整型的字符串,字符串的布尔,字符串的数字,字符串的字符串,字符串的错误,字符串的数字公式,字符串的字符串公式,字符串的数字日期
2 | 1,1,1,1,1,1,TRUE,TRUE,TRUE,1,1,1,2020-01-01 01:01:01,2020-01-01 01:01:01,2020-01-01 01:01:01,2020-01-01 01:01:01,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,TRUE,1,测试,#VALUE!,2,1测试,2020-01-01 01:01:01


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/converter/img.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/converter/img.jpg


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/csv/simple-delimiter.csv:
--------------------------------------------------------------------------------
 1 | 字符串标题#日期标题#数字标题
 2 | String0#2020-01-01 01:01:00#1
 3 | String1#2020-01-02 01:01:00#2
 4 | String2#2020-01-03 01:01:00#3
 5 | String3#2020-01-04 01:01:00#4
 6 | String4#2020-01-05 01:01:00#5
 7 | String5#2020-01-06 01:01:00#6
 8 | String6#2020-01-07 01:01:00#7
 9 | String7#2020-01-08 01:01:00#8
10 | String8#2020-01-09 01:01:00#9
11 | String9#2020-01-10 01:01:00#10


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/csv/simple-quote.csv:
--------------------------------------------------------------------------------
 1 | "字符串标题","日期标题","数字标题"
 2 | "String0,""quote""","2020-01-01 01:01:00",1
 3 | "String1","2020-01-02 01:01:00",2
 4 | "String2","2020-01-03 01:01:00",3
 5 | "String3","2020-01-04 01:01:00",4
 6 | "String4","2020-01-05 01:01:00",5
 7 | "String5","2020-01-06 01:01:00",6
 8 | "String6","2020-01-07 01:01:00",7
 9 | "String7","2020-01-08 01:01:00",8
10 | "String8","2020-01-09 01:01:00",9
11 | "String9","2020-01-10 01:01:00",10


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/csv/simple.csv:
--------------------------------------------------------------------------------
 1 | 字符串标题,日期标题,数字标题
 2 | String0,2020-01-01 01:01:00,1
 3 | String1,2020-01-02 01:01:00,2
 4 | String2,2020-01-03 01:01:00,3
 5 | String3,2020-01-04 01:01:00,4
 6 | String4,2020-01-05 01:01:00,5
 7 | String5,2020-01-06 01:01:00,6
 8 | String6,2020-01-07 01:01:00,7
 9 | String7,2020-01-08 01:01:00,8
10 | String8,2020-01-09 01:01:00,9
11 | String9,2020-01-10 01:01:00,10


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/dataformat/dataformat.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/dataformat/dataformat.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/dataformat/dataformat.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/dataformat/dataformat.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/dataformat/dataformatv2.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/dataformat/dataformatv2.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/cellDataDemo.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/demo/cellDataDemo.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/demo.csv:
--------------------------------------------------------------------------------
 1 | String,Date,Number
 2 | String0,2020-01-01 01:01:00,1
 3 | String1,2020-01-02 01:01:00,2
 4 | String2,2020-01-03 01:01:00,3
 5 | String3,2020-01-04 01:01:00,4
 6 | String4,2020-01-05 01:01:00,5
 7 | String5,2020-01-06 01:01:00,6
 8 | String6,2020-01-07 01:01:00,7
 9 | String7,2020-01-08 01:01:00,8
10 | String8,2020-01-09 01:01:00,9
11 | String9,2020-01-10 01:01:00,10


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/demo.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/demo/demo.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/extra.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/demo/extra.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/fill/complex.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/demo/fill/complex.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/fill/complexFillWithTable.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/demo/fill/complexFillWithTable.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/fill/composite.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/demo/fill/composite.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/fill/dateFormat.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/demo/fill/dateFormat.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/fill/horizontal.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/demo/fill/horizontal.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/fill/list.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/demo/fill/list.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/fill/simple.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/demo/fill/simple.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/generic-demo.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/demo/generic-demo.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/demo/pwd_123.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/demo/pwd_123.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/extra/extra.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/extra/extra.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/extra/extra.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/extra/extra.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/extra/extraRelationships.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/extra/extraRelationships.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/annotation.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/annotation.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/annotation.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/annotation.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/byName.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/byName.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/byName.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/byName.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/complex.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/complex.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/complex.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/complex.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/composite.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/composite.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/composite.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/composite.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/horizontal.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/horizontal.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/horizontal.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/horizontal.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/simple.csv:
--------------------------------------------------------------------------------
1 | Name,Number,Complex,Ignored,Empty
2 | {name},{number},{name} is {number} years old this year,\{name\} ignored, {name},Empty{.empty}


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/simple.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/simple.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/simple.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/simple.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/style.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/style.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/fill/style.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/fill/style.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/hiddensheets/hiddensheets.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/hiddensheets/hiddensheets.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/hiddensheets/hiddensheets.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/hiddensheets/hiddensheets.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/large/fill.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/large/fill.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/large/large07.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/large/large07.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/logback.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <configuration>
 3 |     <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
 4 | 
 5 |     <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
 6 |         <encoder>
 7 |             <pattern>${CONSOLE_LOG_PATTERN}</pattern>
 8 |             <charset>utf8</charset>
 9 |         </encoder>
10 |     </appender>
11 | 
12 |     <root level="DEBUG">
13 |         <appender-ref ref="CONSOLE"/>
14 |     </root>
15 | </configuration>
16 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/multiplesheets/multiplesheets.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/multiplesheets/multiplesheets.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/multiplesheets/multiplesheets.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/multiplesheets/multiplesheets.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/poi/last_row_number_test.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/poi/last_row_number_test.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/poi/last_row_number_xssf_date_test.csv:
--------------------------------------------------------------------------------
 1 | 2025/3/25,2025/3/25,2025/3/25,2025/3/25,2025/3/25,2025/3/25,,,,testssdf是士大夫否t
 2 | 2025/3/26,1909/2/15,1909/2/15,2025/3/26,2025/3/26,2025/3/26,,,,
 3 | 2025/3/27,2025/3/27,2025/3/27,2025/3/27,2025/3/27,2025/3/27,,,,
 4 | 2025/3/28,2025/3/28,2025/3/28,2025/3/28,2025/3/28,2025/3/28,,,,
 5 | 2025/3/29,2025/3/29,2025/3/29,2025/3/29,2025/3/29,2025/3/29,,,,
 6 | 2025/3/30,2025/3/30,2025/3/30,2025/3/30,2025/3/30,2025/3/30,,,,
 7 | 2025/3/31,2025/3/31,2025/3/31,2025/3/31,2025/3/31,2025/3/31,,,,
 8 | 2025/4/1,2025/4/1,2025/4/1,2025/4/1,2025/4/1,2025/4/1,,,,
 9 | 2025/4/2,2025/4/2,2025/4/2,2025/4/2,2025/4/2,2025/4/2,,,,
10 | 2025/4/3,2025/4/3,2025/4/3,2025/4/3,2025/4/3,2025/4/3,,,,
11 | 


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/poi/last_row_number_xssf_date_test.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/poi/last_row_number_xssf_date_test.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/poi/last_row_number_xssf_date_test.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/poi/last_row_number_xssf_date_test.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/poi/last_row_number_xssf_test.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/poi/last_row_number_xssf_test.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/repeat/repeat.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/repeat/repeat.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/repeat/repeat.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/repeat/repeat.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/simple/LargeData.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/simple/LargeData.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/simple/no_model_10000_rows.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/simple/no_model_10000_rows.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/simple/simple07.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/simple/simple07.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/style/styleTest.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/style/styleTest.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/style/styleTest.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/style/styleTest.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/temp/issue1663/template.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/temp/issue1663/template.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/temp/issue220/test01.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/temp/issue220/test01.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/temp/issue220/test02.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/temp/issue220/test02.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/temp/issue220/test03.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/temp/issue220/test03.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/temp/issue2319/test1.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/temp/issue2319/test1.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/temp/issue2319/test2.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/temp/issue2319/test2.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/temp/issue2443/date1.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/temp/issue2443/date1.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/temp/issue2443/date2.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/temp/issue2443/date2.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/temp/lock_data.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/temp/lock_data.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/temp/number_format.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/temp/number_format.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/template/template03.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/template/template03.xls


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/template/template07.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/template/template07.xlsx


--------------------------------------------------------------------------------
/fastexcel-test/src/test/resources/web/io.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/fastexcel-test/src/test/resources/web/io.xlsx


--------------------------------------------------------------------------------
/fastexcel/pom.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <project xmlns="http://maven.apache.org/POM/4.0.0"
 3 |          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4 |          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5 |     <modelVersion>4.0.0</modelVersion>
 6 | 
 7 |     <parent>
 8 |         <groupId>cn.idev.excel</groupId>
 9 |         <artifactId>fastexcel-parent</artifactId>
10 |         <version>1.2.0</version>
11 |         <relativePath>../pom.xml</relativePath>
12 |     </parent>
13 | 
14 |     <artifactId>fastexcel</artifactId>
15 |     <name>fastexcel</name>
16 | 
17 |     <dependencies>
18 |         <dependency>
19 |             <groupId>cn.idev.excel</groupId>
20 |             <artifactId>fastexcel-core</artifactId>
21 |             <version>${project.version}</version>
22 |         </dependency>
23 |     </dependencies>
24 | 
25 | </project>
26 | 


--------------------------------------------------------------------------------
/fastexcel/src/main/java/cn/idev/excel/easyexcelplus/Empty.java:
--------------------------------------------------------------------------------
 1 | package cn.idev.excel.easyexcelplus;
 2 | 
 3 | /**
 4 |  * empty
 5 |  *
 6 |  * @author Jiaju Zhuang
 7 |  */
 8 | public class Empty {
 9 | }
10 | 


--------------------------------------------------------------------------------
/img/readme/large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/img/readme/large.png


--------------------------------------------------------------------------------
/img/style/eclipse/step.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/img/style/eclipse/step.jpg


--------------------------------------------------------------------------------
/img/style/idea/step1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/img/style/idea/step1.png


--------------------------------------------------------------------------------
/img/style/idea/step2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/img/style/idea/step2.png


--------------------------------------------------------------------------------
/img/style/idea/step3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/img/style/idea/step3.png


--------------------------------------------------------------------------------
/lombok.config:
--------------------------------------------------------------------------------
1 | lombok.toString.callSuper = CALL
2 | lombok.equalsAndHashCode.callSuper= CALL


--------------------------------------------------------------------------------
/style/STYLE.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fast-excel/fastexcel/5fff78481381bd9ebc25719967fb2766ce9e88b7/style/STYLE.md


--------------------------------------------------------------------------------