Repository navigation
Feature
- feat: support freeze pane via @FreezePane or register WriteHandler on write by @bengbengbalabalabeng in #916
- feat: split StringImageConverter into Pathname and Base64 by @bengbengbalabalabeng in #934
- feat: add support for column index limit in ReadSheet by @sapienza88 in #942
- feat: add fluent header api for no-bean mode by @bengbengbalabalabeng in #943
- feat: cache date and number formatters by @Duansg in #948
- feat: add support for column-based reading of XLS files by @sapienza88 in #981
- feat: add support for column-based reading of CSV files by @sapienza88 in #982
- feat: add java.time.LocalTime converters by @leehaut in #1032
- feat: require an allowlist for remote URL images by @psxjoy in #1035
- feat: registered EscapeHexCellWriteHandler in DefaultWriteHandlerLoader for XLSX by @delei in #1044
Bug Fixes
- fix: fix error in using relativeHeadRowIndex for writing tables only by @32154678925 in #810
- fix: correct SheetWriteHandler.afterSheetDispose to avoid repeated execution by @bengbengbalabalabeng in #900
- fix: avoid recursive hashCode in write holder contexts by @skytin1004 in #911
- fix: support SQL date types in WriteCellData by @skytin1004 in #912
- fix: CsvCell crashes on java.sql.Date/Time due to unsupported toInstant() by @alaahong in #954
- fix: clone DataFormatData in WriteCellStyle.merge to avoid mutating cached annotation style by @nkuprins in #957
- fix: XLS BIFF8 encryption not applied due to premature password clearing by @alaahong in #959
- fix: reset cached batch in PageReadListener between sheets to avoid duplicate rows by @nkuprins in #961
- fix: remove redundant buffer copy in IoUtils.toByteArray(InputStream) by @nkuprins in #963
- fix: descriptive error for unrecognized cell type attribute by @nkuprins in #965
- fix: copy default read converter map to isolate per-reader custom converters by @Aias00 in #972
- fix: mark CsvCell Calendar value as a date to avoid silent empty write by @Aias00 in #974
- fix: remove indexFieldMap entry by field key, not running counter by @Aias00 in #977
- fix: eliminate implicit numeric cast warning in date generation by @xleoken in #990
- fix: decode xHHHH escapes when reading inline string cells by @nkuprins in #991
- fix: remove the broken star history chart by @nkuprins in #998
- fix: prioritize subclass fields and ignore superclass annotations on field shadowing by @bengbengbalabalabeng in #1007
- fix: read XLS literal error cells as errors instead of booleans by @codeAnqiang-ma in #1011
- fix: resolve Windows fill template copy failures (#1021) by @Mikkey-f in #1034
- fix: finding issues during 2.1.0 RC by @alaahong in #1049
- fix: copy sheet-level read params to sheet holder by @nkuprins in #1052
- fix: fall back to global 1904 windowing when @DateTimeFormat default is used (#1042) by @Mikkey-f in #1054
- fix: bundle Incubating NOTICE with EasyExcel attribution in jars by @alaahong in #1066
- fix: make DataFormatter cache configuration-aware by @skytin1004 in #1068
- fix: remove deprecated unDraw SVG assets (#1112) by @alaahong in #1125
Refactor
- refactor: manage password handling in Excel processing by @psxjoy in #928
- refactor: encapsulate xlsx boolean cell parsing in CellData by @nkuprins in #964
- refactor: generate trivial accessors with Lombok by @nkuprins in #995
- refactor: simplify hex escape pattern scanning by @nkuprins in #1003
- refactor: unify and overload readSheet methods for flexible usage by @delei in #1014
- refactor: replace includeColumnIndexes list lookup with ColumnIndexResolver by @bengbengbalabalabeng in #1015
- refactor: remove fesod-examples module by @delei in #1028
- refactor: reuse Head#field in ModelBuildEventListener field-assignment fallback by @bengbengbalabalabeng in #1031
- refactor: extract sanitisation part for improved readability by @nkuprins in #1061
- refactor: extract format-string date detection out of DateUtils by @nkuprins in #1077
Documentation
- docs(blog): add blog for migration with OpenRewrite by @bengbengbalabalabeng in #910
- docs: update download page for release 2.0.2-incubating by @delei in #922
- docs(blog): add CVE-2026-49328 security advisory by @bengbengbalabalabeng in #933
- Column Support Feat Docs by @sapienza88 in #949
- docs: add Copilot repository and code review instructions by @alaahong in #958
- docs: Update the release version document by @delei in #967
- docs: upgrade website dependencies and CI by @delei in #968
- docs: update code-review instructions for HeadBuilder and wildcard imports by @bengbengbalabalabeng in #970
- docs: expand the write/fill pages and replace their screenshots with grids by @nkuprins in #979
- style: redesign homepage hero as a spreadsheet grid by @nkuprins in #983
- docs: bump npm dependencies to address component vulnerability risks by @delei in #984
- docs: remove redundant blank line by @xleoken in #992
- docs: remove redundant blank line in java code block by @xleoken in #996
- docs: add both chinese and english versions of docs for the includeCo… by @sapienza88 in #1008
- docs: add class and module changes section to FastExcel migration guide (#857) by @Mikkey-f in #1041
- docs: add License headers to website files and assets by @delei in #1043
- docs: maintain KEYS only in the release directory by @alaahong in #1050
- docs(website): upgrade admonition: caution to warning by @bengbengbalabalabeng in #1053
- docs: update brand logos and maturity model assessment by @delei in #1055
- docs: refactor the team page on the website by @delei in #1146
Test
- [Test] Add testkit infrastructure and refactor unit tests with JUnit 5 parameterized patterns by @GOODBOY008 in #901
- chore(test): remove wildcard imports by @bengbengbalabalabeng in #938
- test: Assert valid excel file with expected column count by @sapienza88 in #945
- Test: expand unit coverage for scalar converters in ConverterTest by @leehaut in #999
- test: add tests for EscapeHexCellWriteHandler by @nkuprins in #1001
Build & Chore
- chore: merge 2.0.2-incubating into main branch by @psxjoy in #930
- chore: update copyright year to 2026 in footer and NOTICE files by @psxjoy in #939
- ci: add ASF allowlist check by @delei in #966
- dependency: upgrade assertj-core to 3.27.7 to fix XXE vulnerability by @alaahong in #969
- Update dependabot configuration for GitHub Actions by @pjfanning in #1022
- chore: update pnpm action-setup to specific commit by @delei in #1030
- feat: upgrade slf4j to 2.0.18 and replace logback with slf4j-simple (#905) by @Mikkey-f in #1046
- chore: remove unused mockserver-netty test dependency by @leehaut in #1060
- chore: update gitattributes to exclude non-source files by @delei in #1067
- chore: prepare 2.1.0-incubating release by @alaahong in #1084
- build: set fixed project.build.outputTimestamp for reproducible builds by @alaahong in #1094
- build: drop repetitive comment on project.build.outputTimestamp by @alaahong in #1095
- chore: remove outdated licensing information from pom.xml by @psxjoy in #1122
- chore: exclude website from source archives by @skytin1004 in #1123
- chore: include DISCLAIMER in JAR META-INF (#1108) by @alaahong in #1124
- chore: include DISCLAIMER in sources JAR META-INF (#1108) by @alaahong in #1145
- Bump com.alibaba.fastjson2:fastjson2 from 2.0.61 to 2.0.65 (#909, #980, #987, #1074)
- Bump org.jacoco:jacoco-maven-plugin from 0.8.14 to 0.8.15 (#931)
- Bump org.apache.maven.wrapper:maven-wrapper from 3.1.0 to 3.1.1 (#1013)
- Bump GitHub Actions workflows: setup-node, upload-artifact, actions-netlify, markdownlint-cli2, codeql-action, stale, checkout, cache, setup-java (#1023-#1027, #1037-#1039, #1047)
- Bump org.slf4j dependencies: slf4j-api, jcl-over-slf4j, log4j-over-slf4j, slf4j-simple from 2.0.18 to 2.0.20 (#1071-#1073, #1081, #1141-#1144)
New Contributors
- @32154678925 made their first contribution in #810
- @skytin1004 made their first contribution in #897
- @sapienza88 made their first contribution in #942
- @Duansg made their first contribution in #948
- @nkuprins made their first contribution in #957
- @Aias00 made their first contribution in #972
- @xleoken made their first contribution in #990
- @leehaut made their first contribution in #999
- @codeAnqiang-ma made their first contribution in #1011
- @Mikkey-f made their first contribution in #1034
Full Changelog: 2.0.2-incubating...2.1.0-incubating