You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fesod.apache.org by gi...@apache.org on 2026/07/08 11:47:02 UTC
(fesod) 01/01: deploy: d7fae5a40f5a537582663df86c50cf413154a5f6
This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a commit to branch gh-pages
in repository https://gitbox.apache.org/repos/asf/fesod.git
commit 92eddd881ac20339c848a4d9a7fd6e1ce2ac2304
Author: psxjoy <ps...@users.noreply.github.com>
AuthorDate: Wed Jul 8 11:46:55 2026 +0000
deploy: d7fae5a40f5a537582663df86c50cf413154a5f6
---
.asf.yaml | 52 ++
.nojekyll | 0
404.html | 25 +
assets/css/styles.b60a225f.css | 1 +
...fesod-logo-e09e531bdeeb40e7484aaa6dba7f672f.png | Bin 0 -> 40755 bytes
...fesod-logo-e965e5189d96bd03fa69a35f3d899546.svg | 1 +
...-logo-icon-3285667fcb12e822454e1e8bc1296eed.png | Bin 0 -> 15935 bytes
...-logo-icon-fe2b95b7518918c8494bba4f27944e16.svg | 1 +
...0250917-01-e2db1d5bffc9ab4c98ce8f55ece35090.png | Bin 0 -> 335411 bytes
...0250917-02-8ffdd34d6cbc80004f5404c95a83de58.png | Bin 0 -> 40889 bytes
...StyleWrite-daf422cde61cef375e3a694c3c64a0cb.png | Bin 0 -> 56825 bytes
...mmentWrite-d6757c6db4d4ee3ba71d9df3904e489f.png | Bin 0 -> 53531 bytes
...ble_result-21cb25bd329df76baf680fd0f94ef43b.png | Bin 0 -> 31232 bytes
...ill_result-3908e6375dce9ca1e29fdcc1eb7ba0b6.png | Bin 0 -> 32716 bytes
...xHeadWrite-ee9a9996adfccb73ce2bd8fd03bda05d.png | Bin 0 -> 56538 bytes
...eFill_file-ba1c7222a9c310e389363a04777fa279.png | Bin 0 -> 18904 bytes
...ill_result-94a945a637d60e2b0e8c055c83f92d8e.png | Bin 0 -> 49857 bytes
...erterWrite-3246357a06c3ba04afb519b820c19bb2.png | Bin 0 -> 80499 bytes
...ndlerWrite-c05ff79257df5ba72a311793a6e9db60.png | Bin 0 -> 53697 bytes
...cHeadWrite-b33468bf605a16abf195c740309137e3.png | Bin 0 -> 63141 bytes
...cludeWrite-bea7b205e7748fd8b55311383c344df1.png | Bin 0 -> 32442 bytes
...il-setting-64fa2bef013a1817489ee6195d293a97.png | Bin 0 -> 166719 bytes
...StyleWrite-082ae37a51bd9252f6900ab754387401.png | Bin 0 -> 39403 bytes
...ill_result-6c236308703bda3338b429425b18c2a4.png | Bin 0 -> 14550 bytes
.../icla-01-83a226e824e1b9a9d08813f21b882e31.png | Bin 0 -> 41209 bytes
.../icla-02-e761fe1f9d7c718f085b70b9fba8fc39.png | Bin 0 -> 47829 bytes
.../icla-03-c8df2f12ca6b2bc591a4e73aced61280.png | Bin 0 -> 64617 bytes
.../icla-04-4925b6c82e6383ae69d9e1b0b92d2145.png | Bin 0 -> 21166 bytes
.../imgWrite-3ef200f147e8e4f0cf2bb83c82256ce9.png | Bin 0 -> 40697 bytes
...indexWrite-bb3b8cbf0c5a06371b7fa9917fb3cd33.png | Bin 0 -> 56419 bytes
...ink-github-d7d62b2548477c375730056807eacc89.png | Bin 0 -> 30463 bytes
...ill_result-c126158195ba15c7ad37c143c1f2940b.png | Bin 0 -> 37910 bytes
...mergeWrite-976e024ef4e1613c6dab373937cc56ff.png | Bin 0 -> 48814 bytes
...ModelWrite-3d55fb6adc6efbc37febcf23526f89c8.png | Bin 0 -> 65511 bytes
...eatedWrite-1d4a6ee40db8a53e80ac1330fc50e79a.png | Bin 0 -> 56050 bytes
...set-passwd-e8828118db9277c6fe25a82a5a0bb3da.png | Bin 0 -> 180046 bytes
...-committer-20873b578f8c3b1853cd24d52171ca44.png | Bin 0 -> 14561 bytes
...tableWrite-1b3814878a3fc0ef244f767899675190.png | Bin 0 -> 109269 bytes
...eightWrite-77c049fb68d1ac806c1ba21e82c45f45.png | Bin 0 -> 58569 bytes
...lDataWrite-4dacef4c542b683bc9477c595ba19c4c.png | Bin 0 -> 26177 bytes
assets/js/0058b4c6.b96e0e7d.js | 1 +
assets/js/01a85c17.d7491999.js | 1 +
assets/js/035672d3.649bd1fd.js | 1 +
assets/js/0553a1a7.b1a76c0a.js | 1 +
assets/js/0fc1e0ab.e542372c.js | 1 +
assets/js/10e1fcd2.9c501fd7.js | 1 +
assets/js/1138.c48de42e.js | 1 +
assets/js/1370.4f78401d.js | 1 +
assets/js/138e0e15.d55cec6c.js | 1 +
assets/js/1599.9d2bd257.js | 1 +
assets/js/16d33c03.c3743802.js | 1 +
assets/js/17896441.34872c4b.js | 1 +
assets/js/1a4e3797.de955a9c.js | 1 +
assets/js/1ed9728e.8526c3f9.js | 1 +
assets/js/213c1e68.d3282dfd.js | 1 +
assets/js/2163.373b6f28.js | 1 +
assets/js/2180.6d43d945.js | 1 +
assets/js/2327.6fe960e3.js | 1 +
assets/js/2411.3c30de49.js | 1 +
assets/js/2706.ad6cb2ab.js | 1 +
assets/js/299aa024.9674f888.js | 1 +
assets/js/2c1e9c28.1667532d.js | 1 +
assets/js/305e64c1.52cf3d6f.js | 1 +
assets/js/3308.6471d5c2.js | 1 +
assets/js/3346.1d00631c.js | 1 +
assets/js/3399376c.7b85ebd1.js | 1 +
assets/js/34338452.c13ca031.js | 1 +
assets/js/35aaf8c2.dfa27dff.js | 1 +
assets/js/36994c47.3ef3ca34.js | 1 +
assets/js/3725.c8202e46.js | 1 +
assets/js/372d2263.3e472946.js | 1 +
assets/js/3767.3ead19cf.js | 1 +
assets/js/38165d4c.905ce001.js | 1 +
assets/js/3899.735e5d49.js | 1 +
assets/js/3a2db09e.2b72905d.js | 1 +
assets/js/3cb2f586.91b3ce5f.js | 1 +
assets/js/3ff09b31.1592b3a3.js | 1 +
assets/js/4167.a9ef84a0.js | 1 +
assets/js/4359.8484e2c8.js | 1 +
assets/js/4383cab8.c72ae81d.js | 1 +
assets/js/4390.acadbd72.js | 1 +
assets/js/4413.d7894937.js | 1 +
assets/js/4453.a5e03112.js | 1 +
assets/js/4632.376b5333.js | 1 +
assets/js/47edf924.f4eb7915.js | 1 +
assets/js/483.d60b17af.js | 1 +
assets/js/4860.84e1296c.js | 1 +
assets/js/4885.1bf14774.js | 1 +
assets/js/498dc5b3.5293f417.js | 1 +
assets/js/4a783ec1.5f4a60ed.js | 1 +
assets/js/4b935b7f.702a8e7d.js | 1 +
assets/js/5168.507ca0f1.js | 1 +
assets/js/5179.83669c4a.js | 1 +
assets/js/5182.3ba5d0dc.js | 1 +
assets/js/54d6a969.aa06abd9.js | 1 +
assets/js/552b812f.3fb113ed.js | 1 +
assets/js/5742f295.82898b71.js | 1 +
assets/js/5771c448.5fb90913.js | 1 +
assets/js/57b9d056.53dd0dbe.js | 1 +
assets/js/57e3af1f.88cf7770.js | 1 +
assets/js/5820.45fb341a.js | 1 +
assets/js/5dfaa6dd.a576bf5d.js | 1 +
assets/js/5e95c892.5918deae.js | 1 +
assets/js/6143.1a358e0a.js | 1 +
assets/js/621db11d.04cb0412.js | 1 +
assets/js/6270108c.01fffcb1.js | 1 +
assets/js/6340.c6fd1275.js | 1 +
assets/js/6376.073dc1a0.js | 1 +
assets/js/638.4fbe4037.js | 2 +
assets/js/638.4fbe4037.js.LICENSE.txt | 9 +
assets/js/64ca138b.58872a80.js | 1 +
assets/js/654.218e21d7.js | 1 +
assets/js/6603.a0b87fa9.js | 1 +
assets/js/66e7b107.1edc0961.js | 1 +
assets/js/6761.16fbb525.js | 1 +
assets/js/67ac9947.5726d1ba.js | 1 +
assets/js/6873.59611be8.js | 1 +
assets/js/6875c492.3ebfea58.js | 1 +
assets/js/6961.cddc7e61.js | 1 +
assets/js/7009b5d3.26741af9.js | 1 +
assets/js/7039.abab4d73.js | 1 +
assets/js/7204.0c6d9d17.js | 1 +
assets/js/7565.b3e7b0b9.js | 2 +
assets/js/7565.b3e7b0b9.js.LICENSE.txt | 76 +++
assets/js/7616.98115675.js | 1 +
assets/js/764.b090c00c.js | 1 +
assets/js/7666.0a41fa50.js | 2 +
assets/js/7666.0a41fa50.js.LICENSE.txt | 1 +
assets/js/7811.457ee06b.js | 1 +
assets/js/7876.e4773970.js | 1 +
assets/js/8071.ec71538d.js | 1 +
assets/js/814f3328.e45bfb4b.js | 1 +
assets/js/83b4fe73.e625fa03.js | 1 +
assets/js/84450331.ecb2f23e.js | 1 +
assets/js/87165530.5d4459fd.js | 1 +
assets/js/87c901a1.1b200d40.js | 1 +
assets/js/8907.e9f01efb.js | 1 +
assets/js/8ccf8dfc.0f8431a3.js | 1 +
assets/js/8ff8400d.3f3c3edc.js | 1 +
assets/js/903f555a.b19d647c.js | 1 +
assets/js/9056.59050bcd.js | 1 +
assets/js/908b89db.a83f7618.js | 1 +
assets/js/9569.a6887cc4.js | 1 +
assets/js/967.7303b75f.js | 1 +
assets/js/9748.7748ba70.js | 1 +
assets/js/98b2b410.bfd04cde.js | 1 +
assets/js/98b33ad6.3ddc8b9f.js | 1 +
assets/js/9951.2f90a075.js | 2 +
assets/js/9951.2f90a075.js.LICENSE.txt | 1 +
assets/js/9b316f1b.a4388443.js | 1 +
assets/js/9d86e7fa.f13644ca.js | 1 +
assets/js/9e4087bc.ad055f19.js | 1 +
assets/js/a0cc137d.eaa999b1.js | 1 +
assets/js/a2915123.e09743f7.js | 1 +
assets/js/a3e235df.5bd71cf4.js | 1 +
assets/js/a468a806.ef9cfe94.js | 1 +
assets/js/a4b4544e.084a4c73.js | 1 +
assets/js/a6aa9e1f.8d6f1ef0.js | 1 +
assets/js/a7456010.6632754d.js | 1 +
assets/js/a7bd4aaa.36725923.js | 1 +
assets/js/a8dd066c.ea72796c.js | 1 +
assets/js/a94703ab.b4862c17.js | 1 +
assets/js/a9f50754.b189a9b7.js | 1 +
assets/js/aba21aa0.9a1fa3c5.js | 1 +
assets/js/abce2868.c62b8f3e.js | 1 +
assets/js/acecf23e.00e0664e.js | 1 +
assets/js/ae338ae9.0ee72603.js | 1 +
assets/js/bfc739f4.5175fa64.js | 1 +
assets/js/c15d9823.1cd17019.js | 1 +
assets/js/c3aa4345.7eed781f.js | 1 +
assets/js/c4f5d8e4.2e936112.js | 1 +
assets/js/c639369e.81b6d7eb.js | 1 +
assets/js/c72637f2.1099692d.js | 1 +
assets/js/c8d101a0.4a4773f4.js | 1 +
assets/js/c9cac9d9.99ff49d7.js | 1 +
assets/js/c9de33a5.bcc8dc22.js | 1 +
assets/js/ccc49370.6c7128d4.js | 1 +
assets/js/cfa642a3.9170652c.js | 1 +
assets/js/d2436a2b.8f688944.js | 1 +
assets/js/d5273c26.7915cbcf.js | 1 +
assets/js/d55aa8bb.6964b481.js | 1 +
assets/js/d90696c9.331a3e08.js | 1 +
assets/js/db358d00.0dd04f6a.js | 1 +
assets/js/db72292f.d707e4d6.js | 1 +
assets/js/de3da009.2d46bc1f.js | 1 +
assets/js/e0719818.d59443b3.js | 1 +
assets/js/e1dda140.2afe6241.js | 1 +
assets/js/e2f5eafd.2b185076.js | 1 +
assets/js/ea334bcf.06ffe794.js | 1 +
assets/js/edc931f8.b95e3c9d.js | 1 +
assets/js/ef8b811a.569a47b8.js | 1 +
assets/js/f81c1134.270d2f5b.js | 1 +
assets/js/f9e23376.44d09b2b.js | 1 +
assets/js/fae1940b.910d7893.js | 1 +
assets/js/fc8fba91.0b92981b.js | 1 +
assets/js/fe9a19b4.5034b816.js | 1 +
assets/js/ff3732e9.a049db1c.js | 1 +
assets/js/main.873ff924.js | 2 +
assets/js/main.873ff924.js.LICENSE.txt | 138 +++++
assets/js/runtime~main.a45376a7.js | 1 +
.../17/fesod-entered-apache-incubator/index.html | 103 ++++
.../index.html | 98 ++++
blog/2026/02/27/welcome-new-committer/index.html | 54 ++
blog/2026/04/29/from-user-to-committer/index.html | 49 ++
.../index.html | 76 +++
blog/2026/06/11/cve-2026-49328/index.html | 55 ++
blog/archive/index.html | 25 +
blog/atom.xml | 376 ++++++++++++++
blog/authors/index.html | 25 +
blog/feed.json | 101 ++++
blog/index.html | 40 ++
blog/rss.xml | 362 +++++++++++++
blog/tags/announcement/index.html | 33 ++
blog/tags/apache/index.html | 30 ++
blog/tags/committer/index.html | 30 ++
blog/tags/cve-2026-49328/index.html | 25 +
blog/tags/fastexcel/index.html | 27 +
blog/tags/fesod/index.html | 32 ++
blog/tags/index.html | 25 +
blog/tags/migration/index.html | 27 +
blog/tags/opensource/index.html | 30 ++
blog/tags/release/index.html | 26 +
blog/tags/security/index.html | 25 +
community/brand/index.html | 30 ++
community/committer/become-committer/index.html | 88 ++++
community/committer/icla/index.html | 84 +++
community/committer/onboarding/index.html | 74 +++
.../contribution/code-review-guide/index.html | 54 ++
community/contribution/commit-format/index.html | 55 ++
community/contribution/contribute-code/index.html | 83 +++
community/contribution/contribute-doc/index.html | 75 +++
community/contribution/index.html | 83 +++
community/feedback/index.html | 68 +++
community/index.html | 87 ++++
community/maturity/index.html | 317 ++++++++++++
community/pmc/become-pmc-member/index.html | 54 ++
community/pmc/nominate-committer/index.html | 88 ++++
community/pmc/onboarding/index.html | 42 ++
community/release/release-version/index.html | 130 +++++
community/release/verify-release/index.html | 109 ++++
community/security/index.html | 43 ++
docs/download/index.html | 95 ++++
docs/index.html | 52 ++
docs/migration/from-fastexcel/index.html | 575 +++++++++++++++++++++
docs/quickstart/guide/index.html | 98 ++++
docs/quickstart/simple-example/index.html | 31 ++
docs/sheet/advanced/custom-converter/index.html | 66 +++
docs/sheet/advanced/large-file/index.html | 42 ++
docs/sheet/advanced/password/index.html | 42 ++
docs/sheet/fill/index.html | 88 ++++
docs/sheet/help/annotation/index.html | 402 ++++++++++++++
docs/sheet/help/core-class/index.html | 390 ++++++++++++++
docs/sheet/help/faq/index.html | 299 +++++++++++
docs/sheet/help/large-data/index.html | 68 +++
docs/sheet/help/parameter/index.html | 443 ++++++++++++++++
docs/sheet/read/converter/index.html | 36 ++
docs/sheet/read/csv/index.html | 108 ++++
docs/sheet/read/exception/index.html | 32 ++
docs/sheet/read/extra/index.html | 49 ++
docs/sheet/read/format/index.html | 109 ++++
docs/sheet/read/head/index.html | 46 ++
docs/sheet/read/num-rows/index.html | 39 ++
docs/sheet/read/pojo/index.html | 51 ++
docs/sheet/read/sheet/index.html | 55 ++
docs/sheet/read/simple/index.html | 74 +++
docs/sheet/read/spring/index.html | 55 ++
docs/sheet/write/converter/index.html | 51 ++
docs/sheet/write/csv/index.html | 108 ++++
docs/sheet/write/extra/index.html | 82 +++
docs/sheet/write/format/index.html | 35 ++
docs/sheet/write/head/index.html | 61 +++
docs/sheet/write/image/index.html | 35 ++
docs/sheet/write/merge/index.html | 75 +++
docs/sheet/write/pojo/index.html | 55 ++
docs/sheet/write/sheet/index.html | 52 ++
docs/sheet/write/simple/index.html | 43 ++
docs/sheet/write/spring/index.html | 32 ++
docs/sheet/write/style/index.html | 69 +++
img/apache-incubator.svg | 155 ++++++
img/blog/20250917-01.png | Bin 0 -> 335411 bytes
img/blog/20250917-02.png | Bin 0 -> 40889 bytes
img/blog/apache-fesod-new-committer.svg | 16 +
img/community/gmail-setting.png | Bin 0 -> 166719 bytes
img/community/icla-01.png | Bin 0 -> 41209 bytes
img/community/icla-02.png | Bin 0 -> 47829 bytes
img/community/icla-03.png | Bin 0 -> 64617 bytes
img/community/icla-04.png | Bin 0 -> 21166 bytes
img/community/link-github.png | Bin 0 -> 30463 bytes
img/community/reset-passwd.png | Bin 0 -> 180046 bytes
img/community/roster-add-committer.png | Bin 0 -> 14561 bytes
img/docs/fill/complexFillWithTable_file.png | Bin 0 -> 8097 bytes
img/docs/fill/complexFillWithTable_result.png | Bin 0 -> 31232 bytes
img/docs/fill/complexFill_file.png | Bin 0 -> 9104 bytes
img/docs/fill/complexFill_result.png | Bin 0 -> 32716 bytes
img/docs/fill/compositeFill_file.png | Bin 0 -> 18904 bytes
img/docs/fill/compositeFill_result.png | Bin 0 -> 49857 bytes
img/docs/fill/horizontalFill_file.png | Bin 0 -> 7897 bytes
img/docs/fill/horizontalFill_result.png | Bin 0 -> 14550 bytes
img/docs/fill/listFill_file.png | Bin 0 -> 4782 bytes
img/docs/fill/listFill_result.png | Bin 0 -> 37910 bytes
img/docs/fill/simpleFill_file.png | Bin 0 -> 8953 bytes
img/docs/fill/simpleFill_result.png | Bin 0 -> 6655 bytes
img/docs/write/annotationStyleWrite.png | Bin 0 -> 56825 bytes
img/docs/write/commentWrite.png | Bin 0 -> 53531 bytes
img/docs/write/complexHeadWrite.png | Bin 0 -> 56538 bytes
img/docs/write/converterWrite.png | Bin 0 -> 80499 bytes
img/docs/write/customHandlerWrite.png | Bin 0 -> 53697 bytes
img/docs/write/dynamicHeadWrite.png | Bin 0 -> 63141 bytes
img/docs/write/excludeOrIncludeWrite.png | Bin 0 -> 32442 bytes
img/docs/write/handlerStyleWrite.png | Bin 0 -> 39403 bytes
img/docs/write/ignore_row.png | Bin 0 -> 31100 bytes
img/docs/write/imgWrite.png | Bin 0 -> 40697 bytes
img/docs/write/indexRow.png | Bin 0 -> 56637 bytes
img/docs/write/indexWrite.png | Bin 0 -> 56419 bytes
img/docs/write/mergeWrite.png | Bin 0 -> 48814 bytes
img/docs/write/noModelWrite.png | Bin 0 -> 65511 bytes
img/docs/write/repeatedWrite.png | Bin 0 -> 56050 bytes
img/docs/write/tableWrite.png | Bin 0 -> 109269 bytes
img/docs/write/templateWrite.png | Bin 0 -> 71970 bytes
img/docs/write/widthAndHeightWrite.png | Bin 0 -> 58569 bytes
img/docs/write/writeCellDataWrite.png | Bin 0 -> 26177 bytes
img/favicon.ico | Bin 0 -> 15406 bytes
img/github_icon.svg | 21 +
img/index/undraw_files.svg | 1 +
img/index/undraw_programming.svg | 125 +++++
img/index/undraw_spreadsheet.svg | 1 +
img/logo/fesod-logo-icon-white.png | Bin 0 -> 13489 bytes
img/logo/fesod-logo-icon.png | Bin 0 -> 15935 bytes
img/logo/fesod-logo-icon.svg | 1 +
img/logo/fesod-logo-white-y.png | Bin 0 -> 28116 bytes
img/logo/fesod-logo-white.svg | 1 +
img/logo/fesod-logo-y.png | Bin 0 -> 29073 bytes
img/logo/fesod-logo.png | Bin 0 -> 40755 bytes
img/logo/fesod-logo.svg | 1 +
index.html | 26 +
robots.txt | 2 +
search-index.json | 1 +
search/index.html | 25 +
sitemap.xml | 1 +
team/index.html | 25 +
zh-cn/.nojekyll | 0
zh-cn/404.html | 25 +
zh-cn/assets/css/styles.b60a225f.css | 1 +
...fesod-logo-e09e531bdeeb40e7484aaa6dba7f672f.png | Bin 0 -> 40755 bytes
...fesod-logo-e965e5189d96bd03fa69a35f3d899546.svg | 1 +
...-logo-icon-3285667fcb12e822454e1e8bc1296eed.png | Bin 0 -> 15935 bytes
...-logo-icon-fe2b95b7518918c8494bba4f27944e16.svg | 1 +
...0250917-01-e2db1d5bffc9ab4c98ce8f55ece35090.png | Bin 0 -> 335411 bytes
...0250917-02-8ffdd34d6cbc80004f5404c95a83de58.png | Bin 0 -> 40889 bytes
...StyleWrite-daf422cde61cef375e3a694c3c64a0cb.png | Bin 0 -> 56825 bytes
...mmentWrite-d6757c6db4d4ee3ba71d9df3904e489f.png | Bin 0 -> 53531 bytes
...ble_result-21cb25bd329df76baf680fd0f94ef43b.png | Bin 0 -> 31232 bytes
...ill_result-3908e6375dce9ca1e29fdcc1eb7ba0b6.png | Bin 0 -> 32716 bytes
...xHeadWrite-ee9a9996adfccb73ce2bd8fd03bda05d.png | Bin 0 -> 56538 bytes
...eFill_file-ba1c7222a9c310e389363a04777fa279.png | Bin 0 -> 18904 bytes
...ill_result-94a945a637d60e2b0e8c055c83f92d8e.png | Bin 0 -> 49857 bytes
...erterWrite-3246357a06c3ba04afb519b820c19bb2.png | Bin 0 -> 80499 bytes
...ndlerWrite-c05ff79257df5ba72a311793a6e9db60.png | Bin 0 -> 53697 bytes
...cHeadWrite-b33468bf605a16abf195c740309137e3.png | Bin 0 -> 63141 bytes
...cludeWrite-bea7b205e7748fd8b55311383c344df1.png | Bin 0 -> 32442 bytes
...il-setting-64fa2bef013a1817489ee6195d293a97.png | Bin 0 -> 166719 bytes
...StyleWrite-082ae37a51bd9252f6900ab754387401.png | Bin 0 -> 39403 bytes
...ill_result-6c236308703bda3338b429425b18c2a4.png | Bin 0 -> 14550 bytes
.../icla-01-83a226e824e1b9a9d08813f21b882e31.png | Bin 0 -> 41209 bytes
.../icla-02-e761fe1f9d7c718f085b70b9fba8fc39.png | Bin 0 -> 47829 bytes
.../icla-03-c8df2f12ca6b2bc591a4e73aced61280.png | Bin 0 -> 64617 bytes
.../icla-04-4925b6c82e6383ae69d9e1b0b92d2145.png | Bin 0 -> 21166 bytes
.../imgWrite-3ef200f147e8e4f0cf2bb83c82256ce9.png | Bin 0 -> 40697 bytes
...indexWrite-bb3b8cbf0c5a06371b7fa9917fb3cd33.png | Bin 0 -> 56419 bytes
...ink-github-d7d62b2548477c375730056807eacc89.png | Bin 0 -> 30463 bytes
...ill_result-c126158195ba15c7ad37c143c1f2940b.png | Bin 0 -> 37910 bytes
...mergeWrite-976e024ef4e1613c6dab373937cc56ff.png | Bin 0 -> 48814 bytes
...ModelWrite-3d55fb6adc6efbc37febcf23526f89c8.png | Bin 0 -> 65511 bytes
...eatedWrite-1d4a6ee40db8a53e80ac1330fc50e79a.png | Bin 0 -> 56050 bytes
...set-passwd-e8828118db9277c6fe25a82a5a0bb3da.png | Bin 0 -> 180046 bytes
...-committer-20873b578f8c3b1853cd24d52171ca44.png | Bin 0 -> 14561 bytes
...tableWrite-1b3814878a3fc0ef244f767899675190.png | Bin 0 -> 109269 bytes
...eightWrite-77c049fb68d1ac806c1ba21e82c45f45.png | Bin 0 -> 58569 bytes
...lDataWrite-4dacef4c542b683bc9477c595ba19c4c.png | Bin 0 -> 26177 bytes
zh-cn/assets/js/00e1230c.6d3fe295.js | 1 +
zh-cn/assets/js/01a85c17.d7491999.js | 1 +
zh-cn/assets/js/026e6981.f74e56de.js | 1 +
zh-cn/assets/js/035672d3.649bd1fd.js | 1 +
zh-cn/assets/js/05542247.c391e1e0.js | 1 +
zh-cn/assets/js/0e5da277.49ac25f0.js | 1 +
zh-cn/assets/js/1138.c48de42e.js | 1 +
zh-cn/assets/js/1370.4f78401d.js | 1 +
zh-cn/assets/js/138e0e15.d55cec6c.js | 1 +
zh-cn/assets/js/14fc6b04.9d73c74d.js | 1 +
zh-cn/assets/js/1599.9d2bd257.js | 1 +
zh-cn/assets/js/17896441.34872c4b.js | 1 +
zh-cn/assets/js/18b1fbba.b59051e5.js | 1 +
zh-cn/assets/js/1935f3f4.96a2597c.js | 1 +
zh-cn/assets/js/1a3b291f.adc075df.js | 1 +
zh-cn/assets/js/1a4e3797.de955a9c.js | 1 +
zh-cn/assets/js/2163.8028ec34.js | 1 +
zh-cn/assets/js/2180.6d43d945.js | 1 +
zh-cn/assets/js/21f75b74.3da573a1.js | 1 +
zh-cn/assets/js/2327.6fe960e3.js | 1 +
zh-cn/assets/js/23f7ca76.5501f2e2.js | 1 +
zh-cn/assets/js/2411.3c30de49.js | 1 +
zh-cn/assets/js/2557682e.692a6a81.js | 1 +
zh-cn/assets/js/2706.ad6cb2ab.js | 1 +
zh-cn/assets/js/2bc519fb.65272c49.js | 1 +
zh-cn/assets/js/3050cd25.4eb17c9e.js | 1 +
zh-cn/assets/js/32d423f7.5daf3c8a.js | 1 +
zh-cn/assets/js/3308.6471d5c2.js | 1 +
zh-cn/assets/js/33296af2.b09d6230.js | 1 +
zh-cn/assets/js/3346.1d00631c.js | 1 +
zh-cn/assets/js/35ef6288.d5ede838.js | 1 +
zh-cn/assets/js/3696a4b8.fb2d9d63.js | 1 +
zh-cn/assets/js/36994c47.3ef3ca34.js | 1 +
zh-cn/assets/js/3725.c8202e46.js | 1 +
zh-cn/assets/js/3767.3ead19cf.js | 1 +
zh-cn/assets/js/37f769b0.e16aa5d4.js | 1 +
zh-cn/assets/js/3899.735e5d49.js | 1 +
zh-cn/assets/js/39832ed4.6be28c34.js | 1 +
zh-cn/assets/js/3a6abea9.1ab9c561.js | 1 +
zh-cn/assets/js/3aafc6e9.28a33f84.js | 1 +
zh-cn/assets/js/4167.a9ef84a0.js | 1 +
zh-cn/assets/js/42f9ab63.b6a0359b.js | 1 +
zh-cn/assets/js/4359.8484e2c8.js | 1 +
zh-cn/assets/js/4390.acadbd72.js | 1 +
zh-cn/assets/js/4413.d7894937.js | 1 +
zh-cn/assets/js/4453.a5e03112.js | 1 +
zh-cn/assets/js/4632.376b5333.js | 1 +
zh-cn/assets/js/4823c654.7ce4e44f.js | 1 +
zh-cn/assets/js/483.d60b17af.js | 1 +
zh-cn/assets/js/4860.84e1296c.js | 1 +
zh-cn/assets/js/4885.e23252c0.js | 1 +
zh-cn/assets/js/5168.507ca0f1.js | 1 +
zh-cn/assets/js/516dc88b.9d37fb8c.js | 1 +
zh-cn/assets/js/5179.83669c4a.js | 1 +
zh-cn/assets/js/5182.3ba5d0dc.js | 1 +
zh-cn/assets/js/53c18be7.00478e83.js | 1 +
zh-cn/assets/js/5820.45fb341a.js | 1 +
zh-cn/assets/js/5b656150.7b6e1084.js | 1 +
zh-cn/assets/js/5e6cf37e.8093e908.js | 1 +
zh-cn/assets/js/5e95c892.5918deae.js | 1 +
zh-cn/assets/js/5f5c637e.b0ebe235.js | 1 +
zh-cn/assets/js/6143.1a358e0a.js | 1 +
zh-cn/assets/js/621db11d.04cb0412.js | 1 +
zh-cn/assets/js/6340.c6fd1275.js | 1 +
zh-cn/assets/js/6376.073dc1a0.js | 1 +
zh-cn/assets/js/638.4fbe4037.js | 2 +
zh-cn/assets/js/638.4fbe4037.js.LICENSE.txt | 9 +
zh-cn/assets/js/654.218e21d7.js | 1 +
zh-cn/assets/js/65556891.c361ae63.js | 1 +
zh-cn/assets/js/6603.a0b87fa9.js | 1 +
zh-cn/assets/js/660e9ab8.3c6933a5.js | 1 +
zh-cn/assets/js/6761.16fbb525.js | 1 +
zh-cn/assets/js/6873.59611be8.js | 1 +
zh-cn/assets/js/6875c492.3ebfea58.js | 1 +
zh-cn/assets/js/6961.cddc7e61.js | 1 +
zh-cn/assets/js/6e79d794.8f348c2f.js | 1 +
zh-cn/assets/js/6ea91d84.c98e0467.js | 1 +
zh-cn/assets/js/7039.abab4d73.js | 1 +
zh-cn/assets/js/70652f5d.f6e1bae0.js | 1 +
zh-cn/assets/js/706f3984.1feb8b89.js | 1 +
zh-cn/assets/js/70f646db.f96c4ba0.js | 1 +
zh-cn/assets/js/7204.0c6d9d17.js | 1 +
zh-cn/assets/js/7565.b3e7b0b9.js | 2 +
zh-cn/assets/js/7565.b3e7b0b9.js.LICENSE.txt | 76 +++
zh-cn/assets/js/7616.98115675.js | 1 +
zh-cn/assets/js/7666.02eae326.js | 2 +
zh-cn/assets/js/7666.02eae326.js.LICENSE.txt | 1 +
zh-cn/assets/js/77914434.d265ee42.js | 1 +
zh-cn/assets/js/77ad7f28.eaea1733.js | 1 +
zh-cn/assets/js/7811.457ee06b.js | 1 +
zh-cn/assets/js/7876.e4773970.js | 1 +
zh-cn/assets/js/7ab5af9c.d70d0b44.js | 1 +
zh-cn/assets/js/7bacda60.e67385d1.js | 1 +
zh-cn/assets/js/7c8dfedd.5d40e4bc.js | 1 +
zh-cn/assets/js/8071.ec71538d.js | 1 +
zh-cn/assets/js/814f3328.cda09771.js | 1 +
zh-cn/assets/js/8383.43395cf5.js | 1 +
zh-cn/assets/js/84f1c788.ab649adc.js | 1 +
zh-cn/assets/js/8907.e9f01efb.js | 1 +
zh-cn/assets/js/8a2aa126.d7355a8d.js | 1 +
zh-cn/assets/js/8d9c01b3.7ed8a652.js | 1 +
zh-cn/assets/js/8db46f1a.f62d586d.js | 1 +
zh-cn/assets/js/9056.59050bcd.js | 1 +
zh-cn/assets/js/906a4097.e89dba1a.js | 1 +
zh-cn/assets/js/92380f4a.eeca15ef.js | 1 +
zh-cn/assets/js/932b6cf8.7313a7d1.js | 1 +
zh-cn/assets/js/9569.095623d3.js | 1 +
zh-cn/assets/js/967.7303b75f.js | 1 +
zh-cn/assets/js/9748.7748ba70.js | 1 +
zh-cn/assets/js/97fe7548.c04859e0.js | 1 +
zh-cn/assets/js/9904a28c.a8e55a34.js | 1 +
zh-cn/assets/js/9951.2f90a075.js | 2 +
zh-cn/assets/js/9951.2f90a075.js.LICENSE.txt | 1 +
zh-cn/assets/js/995798e3.f4df5d19.js | 1 +
zh-cn/assets/js/9e4087bc.ad055f19.js | 1 +
zh-cn/assets/js/a08ce007.6e10c957.js | 1 +
zh-cn/assets/js/a1225c8b.ce918398.js | 1 +
zh-cn/assets/js/a1c89fd2.deb5e5f7.js | 1 +
zh-cn/assets/js/a2451e7a.4b43055d.js | 1 +
zh-cn/assets/js/a6aa9e1f.8d6f1ef0.js | 1 +
zh-cn/assets/js/a7456010.6632754d.js | 1 +
zh-cn/assets/js/a7bd4aaa.36725923.js | 1 +
zh-cn/assets/js/a94703ab.b4862c17.js | 1 +
zh-cn/assets/js/aba21aa0.9a1fa3c5.js | 1 +
zh-cn/assets/js/acecf23e.0b6e1d2a.js | 1 +
zh-cn/assets/js/b2fa7a64.757f0e87.js | 1 +
zh-cn/assets/js/b4229a02.14920dd7.js | 1 +
zh-cn/assets/js/b8255b90.b7ff374f.js | 1 +
zh-cn/assets/js/bbd078df.f989c370.js | 1 +
zh-cn/assets/js/be2eec21.b2b9b66c.js | 1 +
zh-cn/assets/js/beba5e5e.023ff40f.js | 1 +
zh-cn/assets/js/bf80cbe7.48f9cfc0.js | 1 +
zh-cn/assets/js/c1ff7703.b71eab86.js | 1 +
zh-cn/assets/js/c4f5d8e4.2e936112.js | 1 +
zh-cn/assets/js/c6f3059b.2a488c99.js | 1 +
zh-cn/assets/js/ccc49370.6c7128d4.js | 1 +
zh-cn/assets/js/cd11f224.23dcd766.js | 1 +
zh-cn/assets/js/d0f020bf.ba0ce588.js | 1 +
zh-cn/assets/js/d58f16ca.f9719753.js | 1 +
zh-cn/assets/js/dce8ecc0.5b1e22bd.js | 1 +
zh-cn/assets/js/df5d2657.84dce0ea.js | 1 +
zh-cn/assets/js/e0719818.d59443b3.js | 1 +
zh-cn/assets/js/e2a2ffd3.ae777abe.js | 1 +
zh-cn/assets/js/e3ca1761.261b97f8.js | 1 +
zh-cn/assets/js/e7985601.0ed17f26.js | 1 +
zh-cn/assets/js/e87656ac.e31bed97.js | 1 +
zh-cn/assets/js/ea6ff1c0.d761beff.js | 1 +
zh-cn/assets/js/ec043a98.f1dd3d3c.js | 1 +
zh-cn/assets/js/ec6079f5.b3099701.js | 1 +
zh-cn/assets/js/ee6d64e6.1885b69c.js | 1 +
zh-cn/assets/js/f0bb121e.7fd5fc48.js | 1 +
zh-cn/assets/js/f133e5e2.ddb697d4.js | 1 +
zh-cn/assets/js/f341d759.b2dc75ba.js | 1 +
zh-cn/assets/js/f59a517c.ed3b1512.js | 1 +
zh-cn/assets/js/f7ff6690.17fff21d.js | 1 +
zh-cn/assets/js/f98e3ca9.8b2c1886.js | 1 +
zh-cn/assets/js/fa69dec0.4efe6ae1.js | 1 +
zh-cn/assets/js/main.0aeb355a.js | 2 +
zh-cn/assets/js/main.0aeb355a.js.LICENSE.txt | 138 +++++
zh-cn/assets/js/runtime~main.c0eb583b.js | 1 +
.../17/fesod-entered-apache-incubator/index.html | 83 +++
.../index.html | 98 ++++
.../2026/02/27/welcome-new-committer/index.html | 54 ++
.../2026/04/29/from-user-to-committer/index.html | 50 ++
.../index.html | 76 +++
zh-cn/blog/2026/06/11/cve-2026-49328/index.html | 55 ++
zh-cn/blog/archive/index.html | 25 +
zh-cn/blog/atom.xml | 357 +++++++++++++
zh-cn/blog/authors/index.html | 25 +
zh-cn/blog/feed.json | 101 ++++
zh-cn/blog/index.html | 38 ++
zh-cn/blog/rss.xml | 343 ++++++++++++
zh-cn/blog/tags/announcement/index.html | 31 ++
zh-cn/blog/tags/apache/index.html | 30 ++
zh-cn/blog/tags/committer/index.html | 30 ++
zh-cn/blog/tags/cve-2026-49328/index.html | 25 +
zh-cn/blog/tags/fastexcel/index.html | 27 +
zh-cn/blog/tags/fesod/index.html | 32 ++
zh-cn/blog/tags/index.html | 25 +
zh-cn/blog/tags/migration/index.html | 27 +
zh-cn/blog/tags/opensource/index.html | 30 ++
zh-cn/blog/tags/release/index.html | 26 +
zh-cn/blog/tags/security/index.html | 25 +
zh-cn/community/brand/index.html | 30 ++
.../committer/become-committer/index.html | 72 +++
zh-cn/community/committer/icla/index.html | 84 +++
zh-cn/community/committer/onboarding/index.html | 74 +++
.../contribution/code-review-guide/index.html | 54 ++
.../contribution/commit-format/index.html | 55 ++
.../contribution/contribute-code/index.html | 84 +++
.../contribution/contribute-doc/index.html | 75 +++
zh-cn/community/contribution/index.html | 80 +++
zh-cn/community/feedback/index.html | 67 +++
zh-cn/community/index.html | 84 +++
zh-cn/community/maturity/index.html | 317 ++++++++++++
zh-cn/community/pmc/become-pmc-member/index.html | 53 ++
zh-cn/community/pmc/nominate-committer/index.html | 84 +++
zh-cn/community/pmc/onboarding/index.html | 42 ++
zh-cn/community/release/release-version/index.html | 149 ++++++
zh-cn/community/release/verify-release/index.html | 119 +++++
zh-cn/community/security/index.html | 41 ++
zh-cn/docs/download/index.html | 96 ++++
zh-cn/docs/index.html | 42 ++
zh-cn/docs/migration/from-fastexcel/index.html | 568 ++++++++++++++++++++
zh-cn/docs/quickstart/guide/index.html | 94 ++++
zh-cn/docs/quickstart/simple-example/index.html | 31 ++
.../sheet/advanced/custom-converter/index.html | 66 +++
zh-cn/docs/sheet/advanced/large-file/index.html | 42 ++
zh-cn/docs/sheet/advanced/password/index.html | 42 ++
zh-cn/docs/sheet/fill/index.html | 87 ++++
zh-cn/docs/sheet/help/annotation/index.html | 396 ++++++++++++++
zh-cn/docs/sheet/help/core-class/index.html | 369 +++++++++++++
zh-cn/docs/sheet/help/faq/index.html | 282 ++++++++++
zh-cn/docs/sheet/help/large-data/index.html | 52 ++
zh-cn/docs/sheet/help/parameter/index.html | 443 ++++++++++++++++
zh-cn/docs/sheet/read/converter/index.html | 35 ++
zh-cn/docs/sheet/read/csv/index.html | 102 ++++
zh-cn/docs/sheet/read/exception/index.html | 32 ++
zh-cn/docs/sheet/read/extra/index.html | 49 ++
zh-cn/docs/sheet/read/format/index.html | 109 ++++
zh-cn/docs/sheet/read/head/index.html | 45 ++
zh-cn/docs/sheet/read/num-rows/index.html | 36 ++
zh-cn/docs/sheet/read/pojo/index.html | 48 ++
zh-cn/docs/sheet/read/sheet/index.html | 51 ++
zh-cn/docs/sheet/read/simple/index.html | 73 +++
zh-cn/docs/sheet/read/spring/index.html | 50 ++
zh-cn/docs/sheet/write/converter/index.html | 51 ++
zh-cn/docs/sheet/write/csv/index.html | 102 ++++
zh-cn/docs/sheet/write/extra/index.html | 82 +++
zh-cn/docs/sheet/write/format/index.html | 35 ++
zh-cn/docs/sheet/write/head/index.html | 61 +++
zh-cn/docs/sheet/write/image/index.html | 35 ++
zh-cn/docs/sheet/write/merge/index.html | 75 +++
zh-cn/docs/sheet/write/pojo/index.html | 54 ++
zh-cn/docs/sheet/write/sheet/index.html | 52 ++
zh-cn/docs/sheet/write/simple/index.html | 42 ++
zh-cn/docs/sheet/write/spring/index.html | 31 ++
zh-cn/docs/sheet/write/style/index.html | 68 +++
zh-cn/img/apache-incubator.svg | 155 ++++++
zh-cn/img/blog/20250917-01.png | Bin 0 -> 335411 bytes
zh-cn/img/blog/20250917-02.png | Bin 0 -> 40889 bytes
zh-cn/img/blog/apache-fesod-new-committer.svg | 16 +
zh-cn/img/community/gmail-setting.png | Bin 0 -> 166719 bytes
zh-cn/img/community/icla-01.png | Bin 0 -> 41209 bytes
zh-cn/img/community/icla-02.png | Bin 0 -> 47829 bytes
zh-cn/img/community/icla-03.png | Bin 0 -> 64617 bytes
zh-cn/img/community/icla-04.png | Bin 0 -> 21166 bytes
zh-cn/img/community/link-github.png | Bin 0 -> 30463 bytes
zh-cn/img/community/reset-passwd.png | Bin 0 -> 180046 bytes
zh-cn/img/community/roster-add-committer.png | Bin 0 -> 14561 bytes
zh-cn/img/docs/fill/complexFillWithTable_file.png | Bin 0 -> 8097 bytes
.../img/docs/fill/complexFillWithTable_result.png | Bin 0 -> 31232 bytes
zh-cn/img/docs/fill/complexFill_file.png | Bin 0 -> 9104 bytes
zh-cn/img/docs/fill/complexFill_result.png | Bin 0 -> 32716 bytes
zh-cn/img/docs/fill/compositeFill_file.png | Bin 0 -> 18904 bytes
zh-cn/img/docs/fill/compositeFill_result.png | Bin 0 -> 49857 bytes
zh-cn/img/docs/fill/horizontalFill_file.png | Bin 0 -> 7897 bytes
zh-cn/img/docs/fill/horizontalFill_result.png | Bin 0 -> 14550 bytes
zh-cn/img/docs/fill/listFill_file.png | Bin 0 -> 4782 bytes
zh-cn/img/docs/fill/listFill_result.png | Bin 0 -> 37910 bytes
zh-cn/img/docs/fill/simpleFill_file.png | Bin 0 -> 8953 bytes
zh-cn/img/docs/fill/simpleFill_result.png | Bin 0 -> 6655 bytes
zh-cn/img/docs/write/annotationStyleWrite.png | Bin 0 -> 56825 bytes
zh-cn/img/docs/write/commentWrite.png | Bin 0 -> 53531 bytes
zh-cn/img/docs/write/complexHeadWrite.png | Bin 0 -> 56538 bytes
zh-cn/img/docs/write/converterWrite.png | Bin 0 -> 80499 bytes
zh-cn/img/docs/write/customHandlerWrite.png | Bin 0 -> 53697 bytes
zh-cn/img/docs/write/dynamicHeadWrite.png | Bin 0 -> 63141 bytes
zh-cn/img/docs/write/excludeOrIncludeWrite.png | Bin 0 -> 32442 bytes
zh-cn/img/docs/write/handlerStyleWrite.png | Bin 0 -> 39403 bytes
zh-cn/img/docs/write/ignore_row.png | Bin 0 -> 31100 bytes
zh-cn/img/docs/write/imgWrite.png | Bin 0 -> 40697 bytes
zh-cn/img/docs/write/indexRow.png | Bin 0 -> 56637 bytes
zh-cn/img/docs/write/indexWrite.png | Bin 0 -> 56419 bytes
zh-cn/img/docs/write/mergeWrite.png | Bin 0 -> 48814 bytes
zh-cn/img/docs/write/noModelWrite.png | Bin 0 -> 65511 bytes
zh-cn/img/docs/write/repeatedWrite.png | Bin 0 -> 56050 bytes
zh-cn/img/docs/write/tableWrite.png | Bin 0 -> 109269 bytes
zh-cn/img/docs/write/templateWrite.png | Bin 0 -> 71970 bytes
zh-cn/img/docs/write/widthAndHeightWrite.png | Bin 0 -> 58569 bytes
zh-cn/img/docs/write/writeCellDataWrite.png | Bin 0 -> 26177 bytes
zh-cn/img/favicon.ico | Bin 0 -> 15406 bytes
zh-cn/img/github_icon.svg | 21 +
zh-cn/img/index/undraw_files.svg | 1 +
zh-cn/img/index/undraw_programming.svg | 125 +++++
zh-cn/img/index/undraw_spreadsheet.svg | 1 +
zh-cn/img/logo/fesod-logo-icon-white.png | Bin 0 -> 13489 bytes
zh-cn/img/logo/fesod-logo-icon.png | Bin 0 -> 15935 bytes
zh-cn/img/logo/fesod-logo-icon.svg | 1 +
zh-cn/img/logo/fesod-logo-white-y.png | Bin 0 -> 28116 bytes
zh-cn/img/logo/fesod-logo-white.svg | 1 +
zh-cn/img/logo/fesod-logo-y.png | Bin 0 -> 29073 bytes
zh-cn/img/logo/fesod-logo.png | Bin 0 -> 40755 bytes
zh-cn/img/logo/fesod-logo.svg | 1 +
zh-cn/index.html | 25 +
zh-cn/robots.txt | 2 +
zh-cn/search-index.json | 1 +
zh-cn/search/index.html | 25 +
zh-cn/sitemap.xml | 1 +
zh-cn/team/index.html | 25 +
679 files changed, 16067 insertions(+)
diff --git a/.asf.yaml b/.asf.yaml
new file mode 100644
index 00000000..563a2156
--- /dev/null
+++ b/.asf.yaml
@@ -0,0 +1,52 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# All configurations could be found here: https://github.com/apache/infrastructure-asfyaml/
+
+github:
+ description: "Fast. Easy. Done. Processing spreadsheets without worrying about large files causing OOM."
+ homepage: https://fesod.apache.org
+ labels:
+ - java
+ - excel
+ - office
+ - poi
+ - xlsx
+ - xls
+ - csv
+ - fast-excel
+ - fastexcel
+ - easyexcel
+ enabled_merge_buttons:
+ squash: true
+ merge: false
+ rebase: false
+ protected_branches:
+ main:
+ required_pull_request_reviews:
+ dismiss_stale_reviews: true
+ required_approving_review_count: 1
+ dependabot_alerts: true
+ dependabot_updates: false
+notifications:
+ commits: commits@fesod.apache.org
+ issues: commits@fesod.apache.org
+ pullrequests: commits@fesod.apache.org
+ discussions: dev@fesod.apache.org
+
+publish:
+ whoami: gh-pages
diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 00000000..e69de29b
diff --git a/404.html b/404.html
new file mode 100644
index 00000000..38eea4ae
--- /dev/null
+++ b/404.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="plugin-native plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Page Not Found | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/404.html"><meta [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/assets/css/styles.b60a225f.css b/assets/css/styles.b60a225f.css
new file mode 100644
index 00000000..9eed2d29
--- /dev/null
+++ b/assets/css/styles.b60a225f.css
@@ -0,0 +1 @@
+@layer docusaurus.infima,docusaurus.theme-common,docusaurus.theme-classic,docusaurus.core,docusaurus.plugin-debug,docusaurus.theme-mermaid,docusaurus.theme-live-codeblock,docusaurus.theme-search-algolia.docsearch,docusaurus.theme-search-algolia;@layer docusaurus.infima{.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown [...]
\ No newline at end of file
diff --git a/assets/files/fesod-logo-e09e531bdeeb40e7484aaa6dba7f672f.png b/assets/files/fesod-logo-e09e531bdeeb40e7484aaa6dba7f672f.png
new file mode 100644
index 00000000..f588317f
Binary files /dev/null and b/assets/files/fesod-logo-e09e531bdeeb40e7484aaa6dba7f672f.png differ
diff --git a/assets/files/fesod-logo-e965e5189d96bd03fa69a35f3d899546.svg b/assets/files/fesod-logo-e965e5189d96bd03fa69a35f3d899546.svg
new file mode 100644
index 00000000..2ffb9418
--- /dev/null
+++ b/assets/files/fesod-logo-e965e5189d96bd03fa69a35f3d899546.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="591" height="180" viewBox="0 0 591 180" fill="none"><path fill="#14824B" d="M95.8897 139.62L66.4027 110.133L66.4027 110.133C69.8119 113.542 69.812 119.07 66.4027 122.479L66.2471 122.635L51.8993 136.983C47.9944 140.887 47.9944 147.218 51.8993 151.123L68.1429 167.367C72.0478 171.272 78.3788 171.272 82.2836 167.367L95.8898 153.761C99.7946 149.856 99.7946 143.525 95.8897 139.62Z"></path><path fil [...]
\ No newline at end of file
diff --git a/assets/files/fesod-logo-icon-3285667fcb12e822454e1e8bc1296eed.png b/assets/files/fesod-logo-icon-3285667fcb12e822454e1e8bc1296eed.png
new file mode 100644
index 00000000..65d71cbc
Binary files /dev/null and b/assets/files/fesod-logo-icon-3285667fcb12e822454e1e8bc1296eed.png differ
diff --git a/assets/files/fesod-logo-icon-fe2b95b7518918c8494bba4f27944e16.svg b/assets/files/fesod-logo-icon-fe2b95b7518918c8494bba4f27944e16.svg
new file mode 100644
index 00000000..6c080ff8
--- /dev/null
+++ b/assets/files/fesod-logo-icon-fe2b95b7518918c8494bba4f27944e16.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="222" height="220" viewBox="0 0 222 220" fill="none"><path fill="#14824B" d="M113.324 163.939L81.7664 132.382L81.7664 132.382C85.415 136.03 85.4151 141.946 81.7665 145.595L81.6 145.761L66.2449 161.116C62.066 165.295 62.066 172.071 66.245 176.25L83.6291 193.634C87.8081 197.813 94.5836 197.813 98.7625 193.634L113.324 179.073C117.503 174.894 117.503 168.118 113.324 163.939Z"></path><path fill-rul [...]
\ No newline at end of file
diff --git a/assets/images/20250917-01-e2db1d5bffc9ab4c98ce8f55ece35090.png b/assets/images/20250917-01-e2db1d5bffc9ab4c98ce8f55ece35090.png
new file mode 100644
index 00000000..9a2f79cc
Binary files /dev/null and b/assets/images/20250917-01-e2db1d5bffc9ab4c98ce8f55ece35090.png differ
diff --git a/assets/images/20250917-02-8ffdd34d6cbc80004f5404c95a83de58.png b/assets/images/20250917-02-8ffdd34d6cbc80004f5404c95a83de58.png
new file mode 100644
index 00000000..8366d55a
Binary files /dev/null and b/assets/images/20250917-02-8ffdd34d6cbc80004f5404c95a83de58.png differ
diff --git a/assets/images/annotationStyleWrite-daf422cde61cef375e3a694c3c64a0cb.png b/assets/images/annotationStyleWrite-daf422cde61cef375e3a694c3c64a0cb.png
new file mode 100644
index 00000000..6aeb9fb5
Binary files /dev/null and b/assets/images/annotationStyleWrite-daf422cde61cef375e3a694c3c64a0cb.png differ
diff --git a/assets/images/commentWrite-d6757c6db4d4ee3ba71d9df3904e489f.png b/assets/images/commentWrite-d6757c6db4d4ee3ba71d9df3904e489f.png
new file mode 100644
index 00000000..9ffcb125
Binary files /dev/null and b/assets/images/commentWrite-d6757c6db4d4ee3ba71d9df3904e489f.png differ
diff --git a/assets/images/complexFillWithTable_result-21cb25bd329df76baf680fd0f94ef43b.png b/assets/images/complexFillWithTable_result-21cb25bd329df76baf680fd0f94ef43b.png
new file mode 100644
index 00000000..dc27781a
Binary files /dev/null and b/assets/images/complexFillWithTable_result-21cb25bd329df76baf680fd0f94ef43b.png differ
diff --git a/assets/images/complexFill_result-3908e6375dce9ca1e29fdcc1eb7ba0b6.png b/assets/images/complexFill_result-3908e6375dce9ca1e29fdcc1eb7ba0b6.png
new file mode 100644
index 00000000..0a9d289b
Binary files /dev/null and b/assets/images/complexFill_result-3908e6375dce9ca1e29fdcc1eb7ba0b6.png differ
diff --git a/assets/images/complexHeadWrite-ee9a9996adfccb73ce2bd8fd03bda05d.png b/assets/images/complexHeadWrite-ee9a9996adfccb73ce2bd8fd03bda05d.png
new file mode 100644
index 00000000..e52d0960
Binary files /dev/null and b/assets/images/complexHeadWrite-ee9a9996adfccb73ce2bd8fd03bda05d.png differ
diff --git a/assets/images/compositeFill_file-ba1c7222a9c310e389363a04777fa279.png b/assets/images/compositeFill_file-ba1c7222a9c310e389363a04777fa279.png
new file mode 100644
index 00000000..0e9f099f
Binary files /dev/null and b/assets/images/compositeFill_file-ba1c7222a9c310e389363a04777fa279.png differ
diff --git a/assets/images/compositeFill_result-94a945a637d60e2b0e8c055c83f92d8e.png b/assets/images/compositeFill_result-94a945a637d60e2b0e8c055c83f92d8e.png
new file mode 100644
index 00000000..316a0022
Binary files /dev/null and b/assets/images/compositeFill_result-94a945a637d60e2b0e8c055c83f92d8e.png differ
diff --git a/assets/images/converterWrite-3246357a06c3ba04afb519b820c19bb2.png b/assets/images/converterWrite-3246357a06c3ba04afb519b820c19bb2.png
new file mode 100644
index 00000000..90196e1a
Binary files /dev/null and b/assets/images/converterWrite-3246357a06c3ba04afb519b820c19bb2.png differ
diff --git a/assets/images/customHandlerWrite-c05ff79257df5ba72a311793a6e9db60.png b/assets/images/customHandlerWrite-c05ff79257df5ba72a311793a6e9db60.png
new file mode 100644
index 00000000..f263d02a
Binary files /dev/null and b/assets/images/customHandlerWrite-c05ff79257df5ba72a311793a6e9db60.png differ
diff --git a/assets/images/dynamicHeadWrite-b33468bf605a16abf195c740309137e3.png b/assets/images/dynamicHeadWrite-b33468bf605a16abf195c740309137e3.png
new file mode 100644
index 00000000..68430370
Binary files /dev/null and b/assets/images/dynamicHeadWrite-b33468bf605a16abf195c740309137e3.png differ
diff --git a/assets/images/excludeOrIncludeWrite-bea7b205e7748fd8b55311383c344df1.png b/assets/images/excludeOrIncludeWrite-bea7b205e7748fd8b55311383c344df1.png
new file mode 100644
index 00000000..8911e5fb
Binary files /dev/null and b/assets/images/excludeOrIncludeWrite-bea7b205e7748fd8b55311383c344df1.png differ
diff --git a/assets/images/gmail-setting-64fa2bef013a1817489ee6195d293a97.png b/assets/images/gmail-setting-64fa2bef013a1817489ee6195d293a97.png
new file mode 100644
index 00000000..95e69220
Binary files /dev/null and b/assets/images/gmail-setting-64fa2bef013a1817489ee6195d293a97.png differ
diff --git a/assets/images/handlerStyleWrite-082ae37a51bd9252f6900ab754387401.png b/assets/images/handlerStyleWrite-082ae37a51bd9252f6900ab754387401.png
new file mode 100644
index 00000000..7f6248f8
Binary files /dev/null and b/assets/images/handlerStyleWrite-082ae37a51bd9252f6900ab754387401.png differ
diff --git a/assets/images/horizontalFill_result-6c236308703bda3338b429425b18c2a4.png b/assets/images/horizontalFill_result-6c236308703bda3338b429425b18c2a4.png
new file mode 100644
index 00000000..e88053d0
Binary files /dev/null and b/assets/images/horizontalFill_result-6c236308703bda3338b429425b18c2a4.png differ
diff --git a/assets/images/icla-01-83a226e824e1b9a9d08813f21b882e31.png b/assets/images/icla-01-83a226e824e1b9a9d08813f21b882e31.png
new file mode 100644
index 00000000..af3bef05
Binary files /dev/null and b/assets/images/icla-01-83a226e824e1b9a9d08813f21b882e31.png differ
diff --git a/assets/images/icla-02-e761fe1f9d7c718f085b70b9fba8fc39.png b/assets/images/icla-02-e761fe1f9d7c718f085b70b9fba8fc39.png
new file mode 100644
index 00000000..f3b91411
Binary files /dev/null and b/assets/images/icla-02-e761fe1f9d7c718f085b70b9fba8fc39.png differ
diff --git a/assets/images/icla-03-c8df2f12ca6b2bc591a4e73aced61280.png b/assets/images/icla-03-c8df2f12ca6b2bc591a4e73aced61280.png
new file mode 100644
index 00000000..7b3da5a3
Binary files /dev/null and b/assets/images/icla-03-c8df2f12ca6b2bc591a4e73aced61280.png differ
diff --git a/assets/images/icla-04-4925b6c82e6383ae69d9e1b0b92d2145.png b/assets/images/icla-04-4925b6c82e6383ae69d9e1b0b92d2145.png
new file mode 100644
index 00000000..49445dd0
Binary files /dev/null and b/assets/images/icla-04-4925b6c82e6383ae69d9e1b0b92d2145.png differ
diff --git a/assets/images/imgWrite-3ef200f147e8e4f0cf2bb83c82256ce9.png b/assets/images/imgWrite-3ef200f147e8e4f0cf2bb83c82256ce9.png
new file mode 100644
index 00000000..9ad021d5
Binary files /dev/null and b/assets/images/imgWrite-3ef200f147e8e4f0cf2bb83c82256ce9.png differ
diff --git a/assets/images/indexWrite-bb3b8cbf0c5a06371b7fa9917fb3cd33.png b/assets/images/indexWrite-bb3b8cbf0c5a06371b7fa9917fb3cd33.png
new file mode 100644
index 00000000..238d9db8
Binary files /dev/null and b/assets/images/indexWrite-bb3b8cbf0c5a06371b7fa9917fb3cd33.png differ
diff --git a/assets/images/link-github-d7d62b2548477c375730056807eacc89.png b/assets/images/link-github-d7d62b2548477c375730056807eacc89.png
new file mode 100644
index 00000000..dce58cea
Binary files /dev/null and b/assets/images/link-github-d7d62b2548477c375730056807eacc89.png differ
diff --git a/assets/images/listFill_result-c126158195ba15c7ad37c143c1f2940b.png b/assets/images/listFill_result-c126158195ba15c7ad37c143c1f2940b.png
new file mode 100644
index 00000000..4cdd60d4
Binary files /dev/null and b/assets/images/listFill_result-c126158195ba15c7ad37c143c1f2940b.png differ
diff --git a/assets/images/mergeWrite-976e024ef4e1613c6dab373937cc56ff.png b/assets/images/mergeWrite-976e024ef4e1613c6dab373937cc56ff.png
new file mode 100644
index 00000000..0249c4f6
Binary files /dev/null and b/assets/images/mergeWrite-976e024ef4e1613c6dab373937cc56ff.png differ
diff --git a/assets/images/noModelWrite-3d55fb6adc6efbc37febcf23526f89c8.png b/assets/images/noModelWrite-3d55fb6adc6efbc37febcf23526f89c8.png
new file mode 100644
index 00000000..6a66c62d
Binary files /dev/null and b/assets/images/noModelWrite-3d55fb6adc6efbc37febcf23526f89c8.png differ
diff --git a/assets/images/repeatedWrite-1d4a6ee40db8a53e80ac1330fc50e79a.png b/assets/images/repeatedWrite-1d4a6ee40db8a53e80ac1330fc50e79a.png
new file mode 100644
index 00000000..df324c96
Binary files /dev/null and b/assets/images/repeatedWrite-1d4a6ee40db8a53e80ac1330fc50e79a.png differ
diff --git a/assets/images/reset-passwd-e8828118db9277c6fe25a82a5a0bb3da.png b/assets/images/reset-passwd-e8828118db9277c6fe25a82a5a0bb3da.png
new file mode 100644
index 00000000..b03d74c9
Binary files /dev/null and b/assets/images/reset-passwd-e8828118db9277c6fe25a82a5a0bb3da.png differ
diff --git a/assets/images/roster-add-committer-20873b578f8c3b1853cd24d52171ca44.png b/assets/images/roster-add-committer-20873b578f8c3b1853cd24d52171ca44.png
new file mode 100644
index 00000000..37e647f2
Binary files /dev/null and b/assets/images/roster-add-committer-20873b578f8c3b1853cd24d52171ca44.png differ
diff --git a/assets/images/tableWrite-1b3814878a3fc0ef244f767899675190.png b/assets/images/tableWrite-1b3814878a3fc0ef244f767899675190.png
new file mode 100644
index 00000000..e1b6f2a8
Binary files /dev/null and b/assets/images/tableWrite-1b3814878a3fc0ef244f767899675190.png differ
diff --git a/assets/images/widthAndHeightWrite-77c049fb68d1ac806c1ba21e82c45f45.png b/assets/images/widthAndHeightWrite-77c049fb68d1ac806c1ba21e82c45f45.png
new file mode 100644
index 00000000..167b5511
Binary files /dev/null and b/assets/images/widthAndHeightWrite-77c049fb68d1ac806c1ba21e82c45f45.png differ
diff --git a/assets/images/writeCellDataWrite-4dacef4c542b683bc9477c595ba19c4c.png b/assets/images/writeCellDataWrite-4dacef4c542b683bc9477c595ba19c4c.png
new file mode 100644
index 00000000..54b2666f
Binary files /dev/null and b/assets/images/writeCellDataWrite-4dacef4c542b683bc9477c595ba19c4c.png differ
diff --git a/assets/js/0058b4c6.b96e0e7d.js b/assets/js/0058b4c6.b96e0e7d.js
new file mode 100644
index 00000000..e3caba71
--- /dev/null
+++ b/assets/js/0058b4c6.b96e0e7d.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[849],{86164(e){e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","href":"/docs/","label":"Introduction","docId":"introduce","unlisted":false},{"type":"link","href":"/docs/download","label":"Download","docId":"download","unlisted":fa [...]
\ No newline at end of file
diff --git a/assets/js/01a85c17.d7491999.js b/assets/js/01a85c17.d7491999.js
new file mode 100644
index 00000000..80db8c87
--- /dev/null
+++ b/assets/js/01a85c17.d7491999.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8209],{19301(e,t,a){a.d(t,{A:()=>c});a(57140);var s=a(13526),n=a(71575);const i="tag_C9v0",r="tagRegular_Xmry",l="tagWithCount_todu";var o=a(35656);function c({permalink:e,label:t,count:a,description:c}){return(0,o.jsxs)(n.A,{rel:"tag",href:e,title:c,className:(0,s.A)(i,a?l:r),children:[t,a&&(0,o.jsx)("span",{children:a})]})}},29522(e,t,a){a.d(t,{in:()=>c,OU:()=>P,Ki:()=>A,kJ:()=>b,x:()=>l,e7:()=>m,J_ [...]
\ No newline at end of file
diff --git a/assets/js/035672d3.649bd1fd.js b/assets/js/035672d3.649bd1fd.js
new file mode 100644
index 00000000..e9a8fc07
--- /dev/null
+++ b/assets/js/035672d3.649bd1fd.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8885],{35828(A,I,e){e.r(I),e.d(I,{default:()=>j});var s=e(57140),Q=e(88301);const a=JSON.parse('{"pmc":[{"githubId":"29803617","gitUrl":"https://github.com/dave2wave","name":"Dave Fisher","isMentor":true},{"githubId":"13284744","gitUrl":"https://github.com/wolfboys","name":"Huajie Wang","isMentor":true},{"githubId":"11783444","gitUrl":"https://github.com/pjfanning","name":"PJ Fanning","isMentor":true} [...]
\ No newline at end of file
diff --git a/assets/js/0553a1a7.b1a76c0a.js b/assets/js/0553a1a7.b1a76c0a.js
new file mode 100644
index 00000000..490e5ea9
--- /dev/null
+++ b/assets/js/0553a1a7.b1a76c0a.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8576],{14337(a){a.exports=JSON.parse('{"tag":{"label":"fesod","permalink":"/blog/tags/fesod","allTagsPath":"/blog/tags","count":3,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/fesod","page":1,"postsPerPage":15,"totalPages":1,"totalCount":3,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/0fc1e0ab.e542372c.js b/assets/js/0fc1e0ab.e542372c.js
new file mode 100644
index 00000000..c15f6de4
--- /dev/null
+++ b/assets/js/0fc1e0ab.e542372c.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[5911],{3668(e,n,i){i.d(n,{A:()=>t});const t=i.p+"assets/images/icla-01-83a226e824e1b9a9d08813f21b882e31.png"},26127(e,n,i){i.d(n,{A:()=>t});const t=i.p+"assets/images/icla-02-e761fe1f9d7c718f085b70b9fba8fc39.png"},28288(e,n,i){i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"committer/icla","title":"Sign iCLA Guide","de [...]
\ No newline at end of file
diff --git a/assets/js/10e1fcd2.9c501fd7.js b/assets/js/10e1fcd2.9c501fd7.js
new file mode 100644
index 00000000..fc531cc9
--- /dev/null
+++ b/assets/js/10e1fcd2.9c501fd7.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1469],{34042(e,i,n){n.d(i,{A:()=>t});const t=n.p+"assets/images/gmail-setting-64fa2bef013a1817489ee6195d293a97.png"},39539(e,i,n){n.d(i,{A:()=>t});const t=n.p+"assets/images/reset-passwd-e8828118db9277c6fe25a82a5a0bb3da.png"},41773(e,i,n){n.r(i),n.d(i,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"committer/onboarding","title":"On [...]
\ No newline at end of file
diff --git a/assets/js/1138.c48de42e.js b/assets/js/1138.c48de42e.js
new file mode 100644
index 00000000..c158c83b
--- /dev/null
+++ b/assets/js/1138.c48de42e.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1138],{61138(t,e,a){a.d(e,{diagram:()=>R});var i,n=a(40764),r=(a(59461),a(87044),a(33865),a(20656),a(31254),a(47538),a(49281),a(39895),a(85030),a(53486)),d=a(85459),s=a(34417),o=a(3170),g=a(54885),h=a(34654),p=(0,s.K2)(t=>t.append("circle").attr("class","start-state").attr("r",(0,d.D7)().state.sizeUnit).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit).attr("cy",(0,d.D7)().state.padding+(0 [...]
\ No newline at end of file
diff --git a/assets/js/1370.4f78401d.js b/assets/js/1370.4f78401d.js
new file mode 100644
index 00000000..ffced8ff
--- /dev/null
+++ b/assets/js/1370.4f78401d.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1370],{29141(e,n,t){t.d(n,{A:()=>i});var r=t(9993);const i=function(e){return(0,r.A)(e,4)}},41370(e,n,t){t.r(n),t.d(n,{render:()=>k});var r=t(20656),i=(t(31254),t(47538)),a=t(49281),o=(t(39895),t(85030),t(53486),t(85459)),d=t(34417),s=t(54885),c=t(30664),g=t(29141),l=t(92498);t(32521);function f(e){var n={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:h(e), [...]
\ No newline at end of file
diff --git a/assets/js/138e0e15.d55cec6c.js b/assets/js/138e0e15.d55cec6c.js
new file mode 100644
index 00000000..627d8379
--- /dev/null
+++ b/assets/js/138e0e15.d55cec6c.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4921],{41597(s){s.exports=JSON.parse('{"name":"@easyops-cn/docusaurus-search-local","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1599.9d2bd257.js b/assets/js/1599.9d2bd257.js
new file mode 100644
index 00000000..685d4a00
--- /dev/null
+++ b/assets/js/1599.9d2bd257.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1599],{29522(e,t,s){s.d(t,{in:()=>c,OU:()=>A,Ki:()=>C,kJ:()=>f,x:()=>l,e7:()=>h,J_:()=>p,Gx:()=>k});var a=s(57140),n=s(17320),i=s(28368),r=s(35656);function l(){const e=(0,i.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}const o=a.createContext(null);function c({children [...]
\ No newline at end of file
diff --git a/assets/js/16d33c03.c3743802.js b/assets/js/16d33c03.c3743802.js
new file mode 100644
index 00000000..aaf5ef63
--- /dev/null
+++ b/assets/js/16d33c03.c3743802.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8708],{2291(e){e.exports=JSON.parse('{"permalink":"/blog/2026/04/29/from-user-to-committer","editUrl":"https://github.com/apache/fesod/edit/main/website/blog/2026-04-29-from-user-to-committer.md","source":"@site/blog/2026-04-29-from-user-to-committer.md","title":"From User to Committer","description":"From User to Committer","date":"2026-04-29T00:00:00.000Z","tags":[{"inline":true,"label":"opensource" [...]
\ No newline at end of file
diff --git a/assets/js/17896441.34872c4b.js b/assets/js/17896441.34872c4b.js
new file mode 100644
index 00000000..538f30aa
--- /dev/null
+++ b/assets/js/17896441.34872c4b.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8401],{2932(e,n,t){t.d(n,{A:()=>x});var s=t(57140),i=t(24282);function a(e){const n=e.map(e=>({...e,parentIndex:-1,children:[]})),t=Array(7).fill(-1);n.forEach((e,n)=>{const s=t.slice(2,e.level);e.parentIndex=Math.max(...s),t[e.level]=n});const s=[];return n.forEach(e=>{const{parentIndex:t,...i}=e;t>=0?n[t].children.push(i):s.push(i)}),s}function r({toc:e,minHeadingLevel:n,maxHeadingLevel:t}){return e [...]
\ No newline at end of file
diff --git a/assets/js/1a4e3797.de955a9c.js b/assets/js/1a4e3797.de955a9c.js
new file mode 100644
index 00000000..5f6e56d5
--- /dev/null
+++ b/assets/js/1a4e3797.de955a9c.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2138],{19963(e,t,r){r.r(t),r.d(t,{default:()=>k});var s=r(57140),a=r(65471),n=r(89773),l=r(90045),c=r(71575),o=r(49848),u=r(91573),i=r(13526),h=r(10559),d=r(846),m=r(11235);const g=function(){const e=(0,d.A)(),t=(0,h.W6)(),r=(0,h.zy)(),{siteConfig:{baseUrl:s}}=(0,a.A)(),n=e?new URLSearchParams(r.search):null,l=n?.get("q")||"",c=n?.get("ctx")||"",o=n?.get("version")||"",u=e=>{const t=new URLSearchParam [...]
\ No newline at end of file
diff --git a/assets/js/1ed9728e.8526c3f9.js b/assets/js/1ed9728e.8526c3f9.js
new file mode 100644
index 00000000..aee7ec41
--- /dev/null
+++ b/assets/js/1ed9728e.8526c3f9.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9958],{25276(T,e,M){M.r(e),M.d(e,{assets:()=>E,contentTitle:()=>a,default:()=>p,frontMatter:()=>N,metadata:()=>U,toc:()=>V});var U=M(36656),R=M(35656),d=M(56610);const N={title:"Welcome Apache Fesod's New Committer",description:"Welcome Apache Fesod's New Committer",authors:["GOODBOY008"],tags:["opensource","apache","committer","fesod"]},a=void 0,E={authorsImageUrls:[void 0]},V=[];function l(T){const [...]
\ No newline at end of file
diff --git a/assets/js/213c1e68.d3282dfd.js b/assets/js/213c1e68.d3282dfd.js
new file mode 100644
index 00000000..80060c54
--- /dev/null
+++ b/assets/js/213c1e68.d3282dfd.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8118],{25458(e,n,s){s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>a,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"release/verify-release","title":"How to Verify Release","description":"\x3c!--","source":"@site/community/release/verify-release.md","sourceDirName":"release","slug":"/release/verify-release","permalink":"/community/release/verify-release","draft":fals [...]
\ No newline at end of file
diff --git a/assets/js/2163.373b6f28.js b/assets/js/2163.373b6f28.js
new file mode 100644
index 00000000..0ac69a14
--- /dev/null
+++ b/assets/js/2163.373b6f28.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,r,t={92163(e,r,t){t.d(r,{BH:()=>n,Ho:()=>p,IH:()=>i,sx:()=>a});var o=t(36430),s=t.n(o);t(84946)(s()),t(31069).A(s()),t(42537)(s());const a=[],n=["zh","en"],i="search-index{dir}.json?_=37eb742a",p=1}},o={};function s(e){var r=o[e];if(void 0!==r)return r.exports;var a=o[e]={exports:{}};return t[e].call(a.exports,a,a.exports,s),a.exports}s.m=t,s.x=()=>{var e=s.O(void 0,[7565],()=>s(71144));return e=s.O(e)},e=[],s.O=(r,t,o,a)=>{if(!t){var n=1/0;for(l=0;l<e.length;l++ [...]
\ No newline at end of file
diff --git a/assets/js/2180.6d43d945.js b/assets/js/2180.6d43d945.js
new file mode 100644
index 00000000..12447047
--- /dev/null
+++ b/assets/js/2180.6d43d945.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2180],{49727(t,e,n){n.d(e,{CP:()=>h,HT:()=>y,PB:()=>u,aC:()=>c,lC:()=>o,m:()=>l,tk:()=>a});var i=n(85459),s=n(34417),r=n(41407),a=(0,s.K2)((t,e)=>{const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),e.name&&n.attr("name",e.name),e.rx&&n.attr("rx",e.rx),e.ry&&n.attr("ry",e.ry),void 0!==e.attrs)for( [...]
\ No newline at end of file
diff --git a/assets/js/2327.6fe960e3.js b/assets/js/2327.6fe960e3.js
new file mode 100644
index 00000000..6007f6b4
--- /dev/null
+++ b/assets/js/2327.6fe960e3.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2327],{22327(t,e,s){s.d(e,{diagram:()=>C});var i=s(90193),n=s(41089),r=s(59461),a=s(87044),u=s(33865),o=(s(20656),s(31254),s(47538)),l=(s(49281),s(39895),s(85030),s(53486)),c=s(85459),h=s(34417),d=s(3170),p=s(30941),g=s(80124),A=class{constructor(){this.vertexCounter=0,this.config=(0,c.D7)(),this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.too [...]
\ No newline at end of file
diff --git a/assets/js/2411.3c30de49.js b/assets/js/2411.3c30de49.js
new file mode 100644
index 00000000..0cecbe86
--- /dev/null
+++ b/assets/js/2411.3c30de49.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2411],{2411(e,t,i){i.r(t),i.d(t,{default:()=>h});i(57140);var n=i(49848),o=i(86184),s=i(89773),a=i(56469),r=i(35656);function h(){const e=(0,n.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.be,{title:e}),(0,r.jsx)(s.A,{children:(0,r.jsx)(a.A,{})})]})}},56469(e,t,i){i.d(t,{A:()=>r});i(57140);var n=i(13526),o=i(49848),s=i(95003),a=i(35656);fun [...]
\ No newline at end of file
diff --git a/assets/js/2706.ad6cb2ab.js b/assets/js/2706.ad6cb2ab.js
new file mode 100644
index 00000000..4d8c692f
--- /dev/null
+++ b/assets/js/2706.ad6cb2ab.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2706],{42706(e,r,s){s.d(r,{diagram:()=>i});var a=s(75182),t=(s(90193),s(59461),s(87044),s(33865),s(20656),s(31254),s(47538),s(49281),s(39895),s(85030),s(53486),s(85459),s(34417)),i={parser:a._$,get db(){return new a.NM},renderer:a.Lh,styles:a.tM,init:(0,t.K2)(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}}}]);
\ No newline at end of file
diff --git a/assets/js/299aa024.9674f888.js b/assets/js/299aa024.9674f888.js
new file mode 100644
index 00000000..fb6a5f7b
--- /dev/null
+++ b/assets/js/299aa024.9674f888.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4807],{32728(e,n,i){i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"quickstart/guide","title":"Guide","description":"\x3c!--","source":"@site/docs/quickstart/guide.md","sourceDirName":"quickstart","slug":"/quickstart/guide","permalink":"/docs/quickstart/guide","draft":false,"unlisted":false,"editUrl":"https://github.co [...]
\ No newline at end of file
diff --git a/assets/js/2c1e9c28.1667532d.js b/assets/js/2c1e9c28.1667532d.js
new file mode 100644
index 00000000..38a4ed60
--- /dev/null
+++ b/assets/js/2c1e9c28.1667532d.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8274],{8215(e,t,i){i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>m,frontMatter:()=>r,metadata:()=>a,toc:()=>c});const a=JSON.parse('{"id":"sheet/write/image","title":"Image","description":"\x3c!--","source":"@site/docs/sheet/write/image.md","sourceDirName":"sheet/write","slug":"/sheet/write/image","permalink":"/docs/sheet/write/image","draft":false,"unlisted":false,"editUrl":"https://githu [...]
\ No newline at end of file
diff --git a/assets/js/305e64c1.52cf3d6f.js b/assets/js/305e64c1.52cf3d6f.js
new file mode 100644
index 00000000..6de9935f
--- /dev/null
+++ b/assets/js/305e64c1.52cf3d6f.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[318],{56610(e,i,t){t.d(i,{R:()=>s,x:()=>a});var r=t(57140);const n={},o=r.createContext(n);function s(e){const i=r.useContext(o);return r.useMemo(function(){return"function"==typeof e?e(i):{...i,...e}},[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),r.createElement(o.Provider,{value:i},e.children)}},90363(e,i,t) [...]
\ No newline at end of file
diff --git a/assets/js/3308.6471d5c2.js b/assets/js/3308.6471d5c2.js
new file mode 100644
index 00000000..bec33502
--- /dev/null
+++ b/assets/js/3308.6471d5c2.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[3308],{13308(t,e,a){a.d(e,{diagram:()=>vt});var r=a(49727),s=a(41089),i=a(32782),n=a(53486),o=a(85459),c=a(34417),l=a(3170),h=a(41407),d=function(){var t=(0,c.K2)(function(t,e,a,r){for(a=a||{},r=t.length;r--;a[t[r]]=e);return a},"o"),e=[1,2],a=[1,3],r=[1,4],s=[2,4],i=[1,9],n=[1,11],o=[1,13],l=[1,14],h=[1,16],d=[1,17],p=[1,18],g=[1,24],u=[1,25],x=[1,26],y=[1,27],m=[1,28],b=[1,29],T=[1,30],f=[1,31],E=[1 [...]
\ No newline at end of file
diff --git a/assets/js/3346.1d00631c.js b/assets/js/3346.1d00631c.js
new file mode 100644
index 00000000..953e41d3
--- /dev/null
+++ b/assets/js/3346.1d00631c.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[3346],{9993(t,e,r){r.d(e,{A:()=>Z});var s=r(6874),n=r(37649),i=r(65187),o=r(27487),a=r(6926);const c=function(t,e){return t&&(0,o.A)(e,(0,a.A)(e),t)};var h=r(47791);const u=function(t,e){return t&&(0,o.A)(e,(0,h.A)(e),t)};var d=r(34730),l=r(88031),_=r(26744);const A=function(t,e){return(0,o.A)(t,(0,_.A)(t),e)};var b=r(68448),p=r(17999),f=r(28145);const v=Object.getOwnPropertySymbols?function(t){for(va [...]
\ No newline at end of file
diff --git a/assets/js/3399376c.7b85ebd1.js b/assets/js/3399376c.7b85ebd1.js
new file mode 100644
index 00000000..9cf5c039
--- /dev/null
+++ b/assets/js/3399376c.7b85ebd1.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2712],{16464(e,t,a){a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>s,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"sheet/help/large-data","title":"Large Data","description":"\x3c!--","source":"@site/docs/sheet/help/large-data.md","sourceDirName":"sheet/help","slug":"/sheet/help/large-data","permalink":"/docs/sheet/help/large-data","draft":false,"unlisted":false,"ed [...]
\ No newline at end of file
diff --git a/assets/js/34338452.c13ca031.js b/assets/js/34338452.c13ca031.js
new file mode 100644
index 00000000..60ac0615
--- /dev/null
+++ b/assets/js/34338452.c13ca031.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7145],{6500(e,t,i){i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"sheet/write/simple","title":"Simple","description":"\x3c!--","source":"@site/docs/sheet/write/simple.md","sourceDirName":"sheet/write","slug":"/sheet/write/simple","permalink":"/docs/sheet/write/simple","draft":false,"unlisted":false,"editUrl":"https:// [...]
\ No newline at end of file
diff --git a/assets/js/35aaf8c2.dfa27dff.js b/assets/js/35aaf8c2.dfa27dff.js
new file mode 100644
index 00000000..da68d4cb
--- /dev/null
+++ b/assets/js/35aaf8c2.dfa27dff.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9076],{56610(e,t,n){n.d(t,{R:()=>l,x:()=>o});var s=n(57140);const i={},r=s.createContext(i);function l(e){const t=s.useContext(r);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),s.createElement(r.Provider,{value:t},e.children)}},98696(e,t,n [...]
\ No newline at end of file
diff --git a/assets/js/36994c47.3ef3ca34.js b/assets/js/36994c47.3ef3ca34.js
new file mode 100644
index 00000000..d54a2cc0
--- /dev/null
+++ b/assets/js/36994c47.3ef3ca34.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9858],{45516(e){e.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/3725.c8202e46.js b/assets/js/3725.c8202e46.js
new file mode 100644
index 00000000..17d113fd
--- /dev/null
+++ b/assets/js/3725.c8202e46.js
@@ -0,0 +1 @@
+(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[3725],{22318(t){var e;e=function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){r [...]
\ No newline at end of file
diff --git a/assets/js/372d2263.3e472946.js b/assets/js/372d2263.3e472946.js
new file mode 100644
index 00000000..6d91fdcc
--- /dev/null
+++ b/assets/js/372d2263.3e472946.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2638],{55415(a){a.exports=JSON.parse('{"tag":{"label":"apache","permalink":"/blog/tags/apache","allTagsPath":"/blog/tags","count":2,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/apache","page":1,"postsPerPage":15,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/3767.3ead19cf.js b/assets/js/3767.3ead19cf.js
new file mode 100644
index 00000000..d859ebcb
--- /dev/null
+++ b/assets/js/3767.3ead19cf.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[3767],{3767(t,e,n){n.d(e,{diagram:()=>Y});var i=n(85459),s=n(34417),r=n(3170),a=n(13212),o=n(58480),c=n(81896),l=function(){var t=(0,s.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,8,10,11,12,14,16,17,20,21],n=[1,9],i=[1,10],r=[1,11],a=[1,12],o=[1,13],c=[1,16],l=[1,17],h={trace:(0,s.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6, [...]
\ No newline at end of file
diff --git a/assets/js/38165d4c.905ce001.js b/assets/js/38165d4c.905ce001.js
new file mode 100644
index 00000000..6c5069e7
--- /dev/null
+++ b/assets/js/38165d4c.905ce001.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1647],{89650(a){a.exports=JSON.parse('{"tag":{"label":"fastexcel","permalink":"/blog/tags/fastexcel","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/fastexcel","page":1,"postsPerPage":15,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/3899.735e5d49.js b/assets/js/3899.735e5d49.js
new file mode 100644
index 00000000..e392ae4e
--- /dev/null
+++ b/assets/js/3899.735e5d49.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[3899],{93899(e,s,a){a.d(s,{createTreemapServices:()=>b.d});var b=a(4659);a(89932)}}]);
\ No newline at end of file
diff --git a/assets/js/3a2db09e.2b72905d.js b/assets/js/3a2db09e.2b72905d.js
new file mode 100644
index 00000000..701fe3cf
--- /dev/null
+++ b/assets/js/3a2db09e.2b72905d.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8121],{68070(e){e.exports=JSON.parse('{"tags":[{"label":"announcement","permalink":"/blog/tags/announcement","count":3},{"label":"security","permalink":"/blog/tags/security","count":1},{"label":"CVE-2026-49328","permalink":"/blog/tags/cve-2026-49328","count":1},{"label":"migration","permalink":"/blog/tags/migration","count":1},{"label":"fastexcel","permalink":"/blog/tags/fastexcel","count":1},{"label" [...]
\ No newline at end of file
diff --git a/assets/js/3cb2f586.91b3ce5f.js b/assets/js/3cb2f586.91b3ce5f.js
new file mode 100644
index 00000000..701eb685
--- /dev/null
+++ b/assets/js/3cb2f586.91b3ce5f.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[3364],{56610(e,n,t){t.d(n,{R:()=>i,x:()=>l});var r=t(57140);const d={},s=r.createContext(d);function i(e){const n=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:i(e.components),r.createElement(s.Provider,{value:n},e.children)}},97926(e,n,t [...]
\ No newline at end of file
diff --git a/assets/js/3ff09b31.1592b3a3.js b/assets/js/3ff09b31.1592b3a3.js
new file mode 100644
index 00000000..ccb09cb8
--- /dev/null
+++ b/assets/js/3ff09b31.1592b3a3.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[5247],{26076(e,n,s){s.r(n),s.d(n,{assets:()=>i,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>o});const t=JSON.parse('{"id":"sheet/read/csv","title":"CSV","description":"\x3c!--","source":"@site/docs/sheet/read/csv.md","sourceDirName":"sheet/read","slug":"/sheet/read/csv","permalink":"/docs/sheet/read/csv","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/f [...]
\ No newline at end of file
diff --git a/assets/js/4167.a9ef84a0.js b/assets/js/4167.a9ef84a0.js
new file mode 100644
index 00000000..d883fadf
--- /dev/null
+++ b/assets/js/4167.a9ef84a0.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4167],{34167(t,i,e){e.d(i,{diagram:()=>it});var s=e(88866),a=e(85030),n=e(53486),h=e(85459),o=e(34417),r=e(3170),l=function(){var t=(0,o.K2)(function(t,i,e,s){for(e=e||{},s=t.length;s--;e[t[s]]=i);return e},"o"),i=[1,10,12,14,16,18,19,21,23],e=[2,6],s=[1,3],a=[1,5],n=[1,6],h=[1,7],r=[1,5,10,12,14,16,18,19,21,23,34,35,36],l=[1,25],c=[1,26],g=[1,28],u=[1,29],x=[1,30],d=[1,31],p=[1,32],f=[1,33],y=[1,34], [...]
\ No newline at end of file
diff --git a/assets/js/4359.8484e2c8.js b/assets/js/4359.8484e2c8.js
new file mode 100644
index 00000000..1081fb3c
--- /dev/null
+++ b/assets/js/4359.8484e2c8.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4359],{59461(t,e,n){n.d(e,{A:()=>r});var i=n(34417),s=n(3170),r=(0,i.K2)((t,e)=>{let n;"sandbox"===e&&(n=(0,s.Ltv)("#i"+t));return("sandbox"===e?(0,s.Ltv)(n.nodes()[0].contentDocument.body):(0,s.Ltv)("body")).select(`[id="${t}"]`)},"getDiagramElement")},84359(t,e,n){n.d(e,{diagram:()=>D});var i=n(59461),s=n(87044),r=n(33865),o=(n(20656),n(31254),n(47538),n(49281),n(39895),n(85030),n(53486),n(85459)),a [...]
\ No newline at end of file
diff --git a/assets/js/4383cab8.c72ae81d.js b/assets/js/4383cab8.c72ae81d.js
new file mode 100644
index 00000000..1073262b
--- /dev/null
+++ b/assets/js/4383cab8.c72ae81d.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6405],{29701(e,n,t){t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>a});const o=JSON.parse('{"id":"contribution/contribute-code","title":"Code Contribution","description":"\x3c!--","source":"@site/community/contribution/contribute-code.md","sourceDirName":"contribution","slug":"/contribution/contribute-code","permalink":"/community/contribution/cont [...]
\ No newline at end of file
diff --git a/assets/js/4390.acadbd72.js b/assets/js/4390.acadbd72.js
new file mode 100644
index 00000000..a1cb8ab4
--- /dev/null
+++ b/assets/js/4390.acadbd72.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4390],{34390(e,r,t){t.d(r,{diagram:()=>i});var a=t(40764),s=(t(59461),t(87044),t(33865),t(20656),t(31254),t(47538),t(49281),t(39895),t(85030),t(53486),t(85459),t(34417)),i={parser:a.Zk,get db(){return new a.u4(2)},renderer:a.q7,styles:a.tM,init:(0,s.K2)(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}}}]);
\ No newline at end of file
diff --git a/assets/js/4413.d7894937.js b/assets/js/4413.d7894937.js
new file mode 100644
index 00000000..dd6328bc
--- /dev/null
+++ b/assets/js/4413.d7894937.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4413],{14413(e,a,r){r.d(a,{diagram:()=>p});var t=r(21420),s=r(88866),n=r(85459),i=r(34417),d=r(96961),o={parse:(0,i.K2)(async e=>{const a=await(0,d.qg)("info",e);i.Rm.debug(a)},"parse")},g={version:t.n.version+""},p={parser:o,db:{getVersion:(0,i.K2)(()=>g.version,"getVersion")},renderer:{draw:(0,i.K2)((e,a,r)=>{i.Rm.debug("rendering info diagram\n"+e);const t=(0,s.D)(a);(0,n.a$)(t,100,400,!0);t.append [...]
\ No newline at end of file
diff --git a/assets/js/4453.a5e03112.js b/assets/js/4453.a5e03112.js
new file mode 100644
index 00000000..fe598078
--- /dev/null
+++ b/assets/js/4453.a5e03112.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4453],{14453(t,e,n){n.d(e,{diagram:()=>I});var i=n(88866),s=n(90193),r=n(41089),o=n(47538),a=(n(49281),n(39895),n(85030),n(53486),n(85459)),c=n(34417),l=n(13212),h=n(58480),g=n(81896),u=function(){var t=(0,c.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[1,4],n=[1,13],i=[1,12],s=[1,15],r=[1,16],o=[1,20],a=[1,19],l=[6,7,8],h=[1,26],g=[1,24],u=[1,25],d=[6,7,11],p=[1,31],y= [...]
\ No newline at end of file
diff --git a/assets/js/4632.376b5333.js b/assets/js/4632.376b5333.js
new file mode 100644
index 00000000..822230f8
--- /dev/null
+++ b/assets/js/4632.376b5333.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4632],{14632(t,e,r){r.d(e,{diagram:()=>we});var a=r(90193),s=r(31254),i=r(49281),n=r(85030),o=r(53486),l=r(85459),c=r(34417),d=r(29141),h=r(30941),g=r(80124),y=r(3170),u=r(34654),p=function(){var t=(0,c.K2)(function(t,e,r,a){for(r=r||{},a=t.length;a--;r[t[a]]=e);return r},"o"),e=[1,15],r=[1,7],a=[1,13],s=[1,14],i=[1,19],n=[1,16],o=[1,17],l=[1,18],d=[8,30],h=[8,10,21,28,29,30,31,39,43,46],g=[1,23],y=[1 [...]
\ No newline at end of file
diff --git a/assets/js/47edf924.f4eb7915.js b/assets/js/47edf924.f4eb7915.js
new file mode 100644
index 00000000..0919dd87
--- /dev/null
+++ b/assets/js/47edf924.f4eb7915.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[5658],{56610(e,r,t){t.d(r,{R:()=>l,x:()=>s});var n=t(57140);const i={},o=n.createContext(i);function l(e){const r=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(r):{...r,...e}},[r,e])}function s(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),n.createElement(o.Provider,{value:r},e.children)}},73713(e,r,t [...]
\ No newline at end of file
diff --git a/assets/js/483.d60b17af.js b/assets/js/483.d60b17af.js
new file mode 100644
index 00000000..df487217
--- /dev/null
+++ b/assets/js/483.d60b17af.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[483],{69763(t,e,a){function r(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}a.d(e,{S:()=>r}),(0,a(34417).K2)(r,"populateCommonDb")},70483(t,e,a){a.d(e,{diagram:()=>m});var r=a(88866),i=a(69763),s=a(53486),o=a(85459),n=a(34417),l=a(96961),c=o.UI.packet,d=class{constructor(){this.packet=[],this.setAccTitle=o.SV,this.getAc [...]
\ No newline at end of file
diff --git a/assets/js/4860.84e1296c.js b/assets/js/4860.84e1296c.js
new file mode 100644
index 00000000..d88205c3
--- /dev/null
+++ b/assets/js/4860.84e1296c.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4860],{64860(e,s,a){a.d(s,{createInfoServices:()=>b.v});var b=a(42179);a(89932)}}]);
\ No newline at end of file
diff --git a/assets/js/4885.1bf14774.js b/assets/js/4885.1bf14774.js
new file mode 100644
index 00000000..445030fe
--- /dev/null
+++ b/assets/js/4885.1bf14774.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4885],{735(e,n,r){r.d(n,{A:()=>o});var t=r(47498);const o=function(e,n,r){for(var o=-1,i=e.length;++o<i;){var u=e[o],a=n(u);if(null!=a&&(void 0===c?a==a&&!(0,t.A)(a):r(a,c)))var c=a,d=u}return d}},7458(e,n,r){r.d(n,{A:()=>o});var t=r(1156);const o=function(e){return(null==e?0:e.length)?(0,t.A)(e,1):[]}},54885(e,n,r){r.d(n,{Zp:()=>dr});var t=r(28618),o=r(28558),i=0;const u=function(e){var n=++i;return( [...]
\ No newline at end of file
diff --git a/assets/js/498dc5b3.5293f417.js b/assets/js/498dc5b3.5293f417.js
new file mode 100644
index 00000000..3e37639f
--- /dev/null
+++ b/assets/js/498dc5b3.5293f417.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9051],{56610(e,n,s){s.d(n,{R:()=>t,x:()=>o});var a=s(57140);const r={},i=a.createContext(r);function t(e){const n=a.useContext(i);return a.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),a.createElement(i.Provider,{value:n},e.children)}},77377(e,n,s [...]
\ No newline at end of file
diff --git a/assets/js/4a783ec1.5f4a60ed.js b/assets/js/4a783ec1.5f4a60ed.js
new file mode 100644
index 00000000..9b9daade
--- /dev/null
+++ b/assets/js/4a783ec1.5f4a60ed.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1047],{34355(e,n,t){t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>s,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"pmc/nominate-committer","title":"Nominate Committer","description":"\x3c!--","source":"@site/community/pmc/nominate-committer.md","sourceDirName":"pmc","slug":"/pmc/nominate-committer","permalink":"/community/pmc/nominate-committer","draft":false,"unli [...]
\ No newline at end of file
diff --git a/assets/js/4b935b7f.702a8e7d.js b/assets/js/4b935b7f.702a8e7d.js
new file mode 100644
index 00000000..53d23df4
--- /dev/null
+++ b/assets/js/4b935b7f.702a8e7d.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1103],{66477(a){a.exports=JSON.parse('{"tag":{"label":"migration","permalink":"/blog/tags/migration","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/migration","page":1,"postsPerPage":15,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/5168.507ca0f1.js b/assets/js/5168.507ca0f1.js
new file mode 100644
index 00000000..f852bb50
--- /dev/null
+++ b/assets/js/5168.507ca0f1.js
@@ -0,0 +1 @@
+(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[5168],{16443(t){t.exports=function(){"use strict";return function(t,e){var n=e.prototype,i=n.format;n.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return i.bind(this)(t);var s=this.$utils(),r=(t||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(t){switch(t){case"Q":return Math.ceil((e.$M+1)/3);case"Do":return n.ordinal(e.$D);case"gggg":retu [...]
\ No newline at end of file
diff --git a/assets/js/5179.83669c4a.js b/assets/js/5179.83669c4a.js
new file mode 100644
index 00000000..90f4e23c
--- /dev/null
+++ b/assets/js/5179.83669c4a.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[5179],{32782(t,r,e){e.d(r,{m:()=>o});var n=e(34417),o=class{constructor(t){this.init=t,this.records=this.init()}static{(0,n.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}},45179(t,r,e){e.d(r,{diagram:()=>ut});var n=e(69763),o=e(32782),a=e(53486),c=e(85459),s=e(34417),i=e(96961),h=e(3170),d={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},m=c.UI.gitGraph,$=(0,s.K2)(()=>(0,a.$t)({. [...]
\ No newline at end of file
diff --git a/assets/js/5182.3ba5d0dc.js b/assets/js/5182.3ba5d0dc.js
new file mode 100644
index 00000000..0816ed26
--- /dev/null
+++ b/assets/js/5182.3ba5d0dc.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[5182],{59461(t,e,s){s.d(e,{A:()=>a});var i=s(34417),n=s(3170),a=(0,i.K2)((t,e)=>{let s;"sandbox"===e&&(s=(0,n.Ltv)("#i"+t));return("sandbox"===e?(0,n.Ltv)(s.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${t}"]`)},"getDiagramElement")},75182(t,e,s){s.d(e,{Lh:()=>T,NM:()=>m,_$:()=>d,tM:()=>b});var i=s(90193),n=s(59461),a=s(87044),r=s(33865),u=s(53486),l=s(85459),o=s(34417),c=s(3170),h [...]
\ No newline at end of file
diff --git a/assets/js/54d6a969.aa06abd9.js b/assets/js/54d6a969.aa06abd9.js
new file mode 100644
index 00000000..62143e58
--- /dev/null
+++ b/assets/js/54d6a969.aa06abd9.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4699],{2156(e,n,s){s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"sheet/help/faq","title":"FAQ","description":"\x3c!--","source":"@site/docs/sheet/help/faq.md","sourceDirName":"sheet/help","slug":"/sheet/help/faq","permalink":"/docs/sheet/help/faq","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/fe [...]
\ No newline at end of file
diff --git a/assets/js/552b812f.3fb113ed.js b/assets/js/552b812f.3fb113ed.js
new file mode 100644
index 00000000..616419ab
--- /dev/null
+++ b/assets/js/552b812f.3fb113ed.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6044],{56610(e,t,r){r.d(t,{R:()=>o,x:()=>s});var n=r(57140);const i={},l=n.createContext(i);function o(e){const t=n.useContext(l);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(l.Provider,{value:t},e.children)}},60628(e,t,r [...]
\ No newline at end of file
diff --git a/assets/js/5742f295.82898b71.js b/assets/js/5742f295.82898b71.js
new file mode 100644
index 00000000..19e24c8d
--- /dev/null
+++ b/assets/js/5742f295.82898b71.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[3991],{56610(e,a,n){n.d(a,{R:()=>i,x:()=>s});var d=n(57140);const t={},r=d.createContext(t);function i(e){const a=d.useContext(r);return d.useMemo(function(){return"function"==typeof e?e(a):{...a,...e}},[a,e])}function s(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),d.createElement(r.Provider,{value:a},e.children)}},88587(e,a,n [...]
\ No newline at end of file
diff --git a/assets/js/5771c448.5fb90913.js b/assets/js/5771c448.5fb90913.js
new file mode 100644
index 00000000..e2e28a45
--- /dev/null
+++ b/assets/js/5771c448.5fb90913.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[5274],{52923(e,i,t){t.r(i),t.d(i,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"security","title":"Security","description":"\x3c!--","source":"@site/community/security.md","sourceDirName":".","slug":"/security","permalink":"/community/security","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/fesod/edit/main/web [...]
\ No newline at end of file
diff --git a/assets/js/57b9d056.53dd0dbe.js b/assets/js/57b9d056.53dd0dbe.js
new file mode 100644
index 00000000..6a1d91f5
--- /dev/null
+++ b/assets/js/57b9d056.53dd0dbe.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8529],{56610(e,n,t){t.d(n,{R:()=>s,x:()=>d});var i=t(57140);const a={},r=i.createContext(a);function s(e){const n=i.useContext(r);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),i.createElement(r.Provider,{value:n},e.children)}},97677(e,n,t [...]
\ No newline at end of file
diff --git a/assets/js/57e3af1f.88cf7770.js b/assets/js/57e3af1f.88cf7770.js
new file mode 100644
index 00000000..7fac910e
--- /dev/null
+++ b/assets/js/57e3af1f.88cf7770.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[5791],{47124(e,t,n){n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>b,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var a=n(69888),o=n(35656),i=n(56610);const s={title:"Automated Migration from FastExcel 1.3.0 to Apache Fesod (Incubating) with OpenRewrite",description:"Migrate FastExcel 1.3 to Apache Fesod (Incubating) 2.0.1-incubating",authors:["bengbengbalabalabeng"],tags:["migration","fast [...]
\ No newline at end of file
diff --git a/assets/js/5820.45fb341a.js b/assets/js/5820.45fb341a.js
new file mode 100644
index 00000000..fd78ece7
--- /dev/null
+++ b/assets/js/5820.45fb341a.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[5820],{5820(e,s,c){c.d(s,{createArchitectureServices:()=>i.S});var i=c(83738);c(89932)}}]);
\ No newline at end of file
diff --git a/assets/js/5dfaa6dd.a576bf5d.js b/assets/js/5dfaa6dd.a576bf5d.js
new file mode 100644
index 00000000..9e387d2a
--- /dev/null
+++ b/assets/js/5dfaa6dd.a576bf5d.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9282],{34616(e,n,a){a.r(n),a.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>o});const t=JSON.parse('{"id":"sheet/read/pojo","title":"POJO","description":"\x3c!--","source":"@site/docs/sheet/read/pojo.md","sourceDirName":"sheet/read","slug":"/sheet/read/pojo","permalink":"/docs/sheet/read/pojo","draft":false,"unlisted":false,"editUrl":"https://github.com/apa [...]
\ No newline at end of file
diff --git a/assets/js/5e95c892.5918deae.js b/assets/js/5e95c892.5918deae.js
new file mode 100644
index 00000000..ebd93345
--- /dev/null
+++ b/assets/js/5e95c892.5918deae.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9647],{55659(e,s,r){r.r(s),r.d(s,{default:()=>h});r(57140);var a=r(13526),t=r(95667),u=r(86184),c=r(18713),i=r(89773),l=r(35656);function h(e){return(0,l.jsx)(u.e3,{className:(0,a.A)(t.G.wrapper.docsPages),children:(0,l.jsx)(i.A,{children:(0,c.v)(e.route.routes)})})}}}]);
\ No newline at end of file
diff --git a/assets/js/6143.1a358e0a.js b/assets/js/6143.1a358e0a.js
new file mode 100644
index 00000000..be4bea6d
--- /dev/null
+++ b/assets/js/6143.1a358e0a.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6143],{66143(e,t,r){r.d(t,{default:()=>rn});class a{constructor(e,t,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new a(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class n{constructor(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,th [...]
\ No newline at end of file
diff --git a/assets/js/621db11d.04cb0412.js b/assets/js/621db11d.04cb0412.js
new file mode 100644
index 00000000..4dfa4ad1
--- /dev/null
+++ b/assets/js/621db11d.04cb0412.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4212],{1257(t,s,e){e.d(s,{ZD:()=>u,uz:()=>l});e(57140);var a=e(49848),o=e(91573);e(35656);function r(){const{selectMessage:t}=(0,o.W)();return s=>t(s,(0,a.T)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',m [...]
\ No newline at end of file
diff --git a/assets/js/6270108c.01fffcb1.js b/assets/js/6270108c.01fffcb1.js
new file mode 100644
index 00000000..7fa27407
--- /dev/null
+++ b/assets/js/6270108c.01fffcb1.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1830],{3896(A,e,g){g.d(e,{A:()=>C});const C="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlUAAABZCAYAAAAXW9HgAAAABWZkRUNSJJPjAOWrYpkAABm1SURBVHgB5cRjtCVn2oDh+3mravPY57RtxLYzM0kGydi2bdu2EYxi22bbPH2szap6n2/Vj7PWXr06mWimZ773x3Xxohe/TPflne9+r376M5/Rr33ta+qy/eXTn/mMvvPd79UXvfhl+u/ywnNfou94xzv0U5/6lH7ta19Tlz1dn/rUp/Qd73iHvvDcl+iLXvwyTbzoJS/Tvb3zPe/VT33qU/q1r31NXeYyl7nMZS4yAPuyu3cPj61ex933PYjL9pfHVq9jd+8eA [...]
\ No newline at end of file
diff --git a/assets/js/6340.c6fd1275.js b/assets/js/6340.c6fd1275.js
new file mode 100644
index 00000000..c0b8c356
--- /dev/null
+++ b/assets/js/6340.c6fd1275.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6340],{96340(t,n,e){e.d(n,{diagram:()=>ct});var i=e(85459),s=e(34417),r=e(3170);function o(t,n){let e;if(void 0===n)for(const i of t)null!=i&&(e>i||void 0===e&&i>=i)&&(e=i);else{let i=-1;for(let s of t)null!=(s=n(s,++i,t))&&(e>s||void 0===e&&s>=s)&&(e=s)}return e}function c(t){return t.target.depth}function l(t,n){return t.sourceLinks.length?t.depth:n-1}function a(t,n){let e=0;if(void 0===n)for(let i [...]
\ No newline at end of file
diff --git a/assets/js/6376.073dc1a0.js b/assets/js/6376.073dc1a0.js
new file mode 100644
index 00000000..c976d799
--- /dev/null
+++ b/assets/js/6376.073dc1a0.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6376],{6376(t,e,i){i.d(e,{diagram:()=>f});var s=i(59461),n=i(87044),r=i(33865),a=(i(20656),i(31254),i(47538),i(49281),i(39895),i(85030),i(53486)),c=i(85459),o=i(34417),l=i(3170),h=i(30941),u=i(80124),y=function(){var t=(0,o.K2)(function(t,e,i,s){for(i=i||{},s=t.length;s--;i[t[s]]=e);return i},"o"),e=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,50],i=[1,10],s=[1,11],n=[1,12],r=[1,13],a=[1,20],c=[1,21],l [...]
\ No newline at end of file
diff --git a/assets/js/638.4fbe4037.js b/assets/js/638.4fbe4037.js
new file mode 100644
index 00000000..c5ff6f52
--- /dev/null
+++ b/assets/js/638.4fbe4037.js
@@ -0,0 +1,2 @@
+/*! For license information please see 638.4fbe4037.js.LICENSE.txt */
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[638],{70638(e,t,n){function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t,n){return t&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,c(r.key [...]
\ No newline at end of file
diff --git a/assets/js/638.4fbe4037.js.LICENSE.txt b/assets/js/638.4fbe4037.js.LICENSE.txt
new file mode 100644
index 00000000..a9f6f124
--- /dev/null
+++ b/assets/js/638.4fbe4037.js.LICENSE.txt
@@ -0,0 +1,9 @@
+/*!
+Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable
+Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com)
+Licensed under The MIT License (http://opensource.org/licenses/MIT)
+*/
+
+/*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */
+
+/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */
diff --git a/assets/js/64ca138b.58872a80.js b/assets/js/64ca138b.58872a80.js
new file mode 100644
index 00000000..cbd8963a
--- /dev/null
+++ b/assets/js/64ca138b.58872a80.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[3451],{2971(e,n,s){s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>d,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"maturity","title":"Maturity","description":"\x3c!--","source":"@site/community/maturity.md","sourceDirName":".","slug":"/maturity","permalink":"/community/maturity","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/fesod/edit/main/webs [...]
\ No newline at end of file
diff --git a/assets/js/654.218e21d7.js b/assets/js/654.218e21d7.js
new file mode 100644
index 00000000..dda346f9
--- /dev/null
+++ b/assets/js/654.218e21d7.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[654],{60654(e,a,s){s.d(a,{createRadarServices:()=>b.f});var b=s(37884);s(89932)}}]);
\ No newline at end of file
diff --git a/assets/js/6603.a0b87fa9.js b/assets/js/6603.a0b87fa9.js
new file mode 100644
index 00000000..dff72aad
--- /dev/null
+++ b/assets/js/6603.a0b87fa9.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6603],{36603(e,r,s){s.d(r,{diagram:()=>i});var a=s(75182),t=(s(90193),s(59461),s(87044),s(33865),s(20656),s(31254),s(47538),s(49281),s(39895),s(85030),s(53486),s(85459),s(34417)),i={parser:a._$,get db(){return new a.NM},renderer:a.Lh,styles:a.tM,init:(0,t.K2)(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}}}]);
\ No newline at end of file
diff --git a/assets/js/66e7b107.1edc0961.js b/assets/js/66e7b107.1edc0961.js
new file mode 100644
index 00000000..5ca4e3fb
--- /dev/null
+++ b/assets/js/66e7b107.1edc0961.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1795],{56610(e,s,n){n.d(s,{R:()=>r,x:()=>a});var i=n(57140);const t={},o=i.createContext(t);function r(e){const s=i.useContext(o);return i.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),i.createElement(o.Provider,{value:s},e.children)}},62660(e,s,n [...]
\ No newline at end of file
diff --git a/assets/js/6761.16fbb525.js b/assets/js/6761.16fbb525.js
new file mode 100644
index 00000000..a7a7dc47
--- /dev/null
+++ b/assets/js/6761.16fbb525.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6761],{6761(e,t,a){a.d(t,{diagram:()=>v});var l=a(88866),s=a(87044),r=a(39895),n=a(69763),i=a(53486),o=a(85459),c=a(34417),d=a(96961),p=a(3170),h=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=o.SV,this.getAccTitle=o.iN,this.setDiagramTitle=o.ke,this.getDiagramTitle=o.ab,this.getAccDescription=o.m7,this.setAccDescription=o.EI}static{(0,c. [...]
\ No newline at end of file
diff --git a/assets/js/67ac9947.5726d1ba.js b/assets/js/67ac9947.5726d1ba.js
new file mode 100644
index 00000000..20774873
--- /dev/null
+++ b/assets/js/67ac9947.5726d1ba.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9767],{26075(e,n,t){t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var a=t(67933),o=t(35656),i=t(56610);const s={title:"Apache Fesod (Incubating) 2.0.1-incubating Officially Released",description:"The Apache Fesod community is pleased to announce the official release of Apache Fesod (Incubating) 2.0.1-incubating.",authors:["psxjoy"],tags:["anno [...]
\ No newline at end of file
diff --git a/assets/js/6873.59611be8.js b/assets/js/6873.59611be8.js
new file mode 100644
index 00000000..f5c0d925
--- /dev/null
+++ b/assets/js/6873.59611be8.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6873],{46873(t,e,a){a.d(e,{diagram:()=>Pt});var n=a(49727),i=a(53486),r=a(85459),s=a(34417),l=a(3170),o=a(41407),h=function(){var t=(0,s.K2)(function(t,e,a,n){for(a=a||{},n=t.length;n--;a[t[n]]=e);return a},"o"),e=[1,24],a=[1,25],n=[1,26],i=[1,27],r=[1,28],l=[1,63],o=[1,64],h=[1,65],d=[1,66],u=[1,67],p=[1,68],y=[1,69],g=[1,29],f=[1,30],b=[1,31],x=[1,32],_=[1,33],m=[1,34],E=[1,35],S=[1,36],A=[1,37],C=[ [...]
\ No newline at end of file
diff --git a/assets/js/6875c492.3ebfea58.js b/assets/js/6875c492.3ebfea58.js
new file mode 100644
index 00000000..8d9c0427
--- /dev/null
+++ b/assets/js/6875c492.3ebfea58.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4813],{1257(e,t,s){s.d(t,{ZD:()=>r,uz:()=>l});s(57140);var n=s(49848),a=s(91573);s(35656);function i(){const{selectMessage:e}=(0,a.W)();return t=>e(t,(0,n.T)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',m [...]
\ No newline at end of file
diff --git a/assets/js/6961.cddc7e61.js b/assets/js/6961.cddc7e61.js
new file mode 100644
index 00000000..e0ff8994
--- /dev/null
+++ b/assets/js/6961.cddc7e61.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6961],{406(e,t){let n;function r(){if(void 0===n)throw new Error("No runtime abstraction layer installed");return n}Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.install=function(e){if(void 0===e)throw new Error("No runtime abstraction layer provided");n=e}}(r||(r={})),t.default=r},735(e,t,n){n.d(t,{A:()=>i});var r=n(47498);const i=function(e,t,n){for(var i=-1,s=e.length;++i<s;){var a [...]
\ No newline at end of file
diff --git a/assets/js/7009b5d3.26741af9.js b/assets/js/7009b5d3.26741af9.js
new file mode 100644
index 00000000..fe6a5062
--- /dev/null
+++ b/assets/js/7009b5d3.26741af9.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8671],{2291(T){T.exports=JSON.parse('{"permalink":"/blog/2026/04/29/from-user-to-committer","editUrl":"https://github.com/apache/fesod/edit/main/website/blog/2026-04-29-from-user-to-committer.md","source":"@site/blog/2026-04-29-from-user-to-committer.md","title":"From User to Committer","description":"From User to Committer","date":"2026-04-29T00:00:00.000Z","tags":[{"inline":true,"label":"opensource" [...]
\ No newline at end of file
diff --git a/assets/js/7039.abab4d73.js b/assets/js/7039.abab4d73.js
new file mode 100644
index 00000000..1c85b5f0
--- /dev/null
+++ b/assets/js/7039.abab4d73.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7039],{47039(e,s,a){a.d(s,{createGitGraphServices:()=>b.b});var b=a(92381);a(89932)}}]);
\ No newline at end of file
diff --git a/assets/js/7204.0c6d9d17.js b/assets/js/7204.0c6d9d17.js
new file mode 100644
index 00000000..64f07df1
--- /dev/null
+++ b/assets/js/7204.0c6d9d17.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7204],{67204(t,e,a){a.d(e,{diagram:()=>z});var r=a(88866),n=a(69763),i=a(53486),s=a(85459),o=a(34417),l=a(96961),c={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},d={axes:[],curves:[],options:c},g=structuredClone(d),h=s.UI.radar,u=(0,o.K2)(()=>(0,i.$t)({...h,...(0,s.zj)().radar}),"getConfig"),p=(0,o.K2)(()=>g.axes,"getAxes"),x=(0,o.K2)(()=>g.curves,"getCurves"),m=(0,o.K2)(()=>g.options,"getO [...]
\ No newline at end of file
diff --git a/assets/js/7565.b3e7b0b9.js b/assets/js/7565.b3e7b0b9.js
new file mode 100644
index 00000000..b5c16366
--- /dev/null
+++ b/assets/js/7565.b3e7b0b9.js
@@ -0,0 +1,2 @@
+/*! For license information please see 7565.b3e7b0b9.js.LICENSE.txt */
+(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7565],{31069(e,t,r){"use strict";function n(e){const t=new RegExp("^[^"+e+"]+","u"),r=new RegExp("[^"+e+"]+$","u");return function(e){return e.update(function(e){return e.replace(t,"").replace(r,"")})}}function i(e,t){e.trimmerSupport.generateTrimmer=n,e.zh=function(){this.pipeline.reset(),this.pipeline.add(e.zh.trimmer,e.zh.stopWordFilter),t&&(this.tokenizer=t)},t&&(e.zh.tokenizer=t),e.zh.wordCharacters="\\u3400- [...]
\ No newline at end of file
diff --git a/assets/js/7565.b3e7b0b9.js.LICENSE.txt b/assets/js/7565.b3e7b0b9.js.LICENSE.txt
new file mode 100644
index 00000000..7e6757bb
--- /dev/null
+++ b/assets/js/7565.b3e7b0b9.js.LICENSE.txt
@@ -0,0 +1,76 @@
+/*!
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+/*!
+ * lunr.Builder
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.Index
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.Pipeline
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.Set
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.TokenSet
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.Vector
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.stemmer
+ * Copyright (C) 2020 Oliver Nightingale
+ * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
+ */
+
+/*!
+ * lunr.stopWordFilter
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.tokenizer
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.trimmer
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.utils
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * @license
+ * Copyright 2019 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/**
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
+ * Copyright (C) 2020 Oliver Nightingale
+ * @license MIT
+ */
diff --git a/assets/js/7616.98115675.js b/assets/js/7616.98115675.js
new file mode 100644
index 00000000..fe102f23
--- /dev/null
+++ b/assets/js/7616.98115675.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7616],{37616(e,t,a){a.d(t,{diagram:()=>C});var i=a(88866),l=a(69763),n=a(53486),r=a(85459),s=a(34417),o=a(96961),c=a(3170),p=r.UI.pie,d={sections:new Map,showData:!1,config:p},u=d.sections,g=d.showData,h=structuredClone(p),f=(0,s.K2)(()=>structuredClone(h),"getConfig"),m=(0,s.K2)(()=>{u=new Map,g=d.showData,(0,r.IU)()},"clear"),w=(0,s.K2)(({label:e,value:t})=>{if(t<0)throw new Error(`"${e}" has invali [...]
\ No newline at end of file
diff --git a/assets/js/764.b090c00c.js b/assets/js/764.b090c00c.js
new file mode 100644
index 00000000..102c4a6d
--- /dev/null
+++ b/assets/js/764.b090c00c.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[764],{40764(t,e,s){s.d(e,{Zk:()=>h,q7:()=>B,tM:()=>ot,u4:()=>rt});var i=s(59461),n=s(87044),r=s(33865),o=s(53486),a=s(85459),c=s(34417),l=function(){var t=(0,c.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,2],s=[1,3],i=[1,4],n=[2,4],r=[1,9],o=[1,11],a=[1,16],l=[1,17],h=[1,18],d=[1,19],u=[1,33],p=[1,20],y=[1,21],g=[1,22],m=[1,23],f=[1,24],S=[1,26],b=[1,27],k=[1,28],_=[ [...]
\ No newline at end of file
diff --git a/assets/js/7666.0a41fa50.js b/assets/js/7666.0a41fa50.js
new file mode 100644
index 00000000..b3e7030d
--- /dev/null
+++ b/assets/js/7666.0a41fa50.js
@@ -0,0 +1,2 @@
+/*! For license information please see 7666.0a41fa50.js.LICENSE.txt */
+(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7666],{921(t,e,r){"use strict";r.d(e,{A:()=>s});var i=r(83448),n="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=n&&"object"==typeof module&&module&&!module.nodeType&&module,o=a&&a.exports===n&&i.A.process;const s=function(){try{var t=a&&a.require&&a.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(e){}}()},1272(t,e,r){"use strict";r.d(e,{A:()=>a});var i=r(92751);function n(t,e [...]
\ No newline at end of file
diff --git a/assets/js/7666.0a41fa50.js.LICENSE.txt b/assets/js/7666.0a41fa50.js.LICENSE.txt
new file mode 100644
index 00000000..2d1bc565
--- /dev/null
+++ b/assets/js/7666.0a41fa50.js.LICENSE.txt
@@ -0,0 +1 @@
+/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */
diff --git a/assets/js/7811.457ee06b.js b/assets/js/7811.457ee06b.js
new file mode 100644
index 00000000..f1901055
--- /dev/null
+++ b/assets/js/7811.457ee06b.js
@@ -0,0 +1 @@
+(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7811],{13625(e,t,n){"use strict";n.d(t,{A:()=>l});n(57140);var s=n(13526),a=n(49848),r=n(19301);const c="tags_JX_u",o="tag_CGGV";var i=n(35656);function l({tags:e}){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(a.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,s.A)(c,"padding--none","margin-left--sm"),childre [...]
\ No newline at end of file
diff --git a/assets/js/7876.e4773970.js b/assets/js/7876.e4773970.js
new file mode 100644
index 00000000..010e8d2c
--- /dev/null
+++ b/assets/js/7876.e4773970.js
@@ -0,0 +1 @@
+(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7876],{20239(t,e,i){var r;r=function(t){return function(t){var e={};function i(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:functio [...]
\ No newline at end of file
diff --git a/assets/js/8071.ec71538d.js b/assets/js/8071.ec71538d.js
new file mode 100644
index 00000000..2f33443a
--- /dev/null
+++ b/assets/js/8071.ec71538d.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8071],{68071(t,e,i){i.d(e,{diagram:()=>I});var a=i(85459),n=i(34417),s=i(3170),r=function(){var t=(0,n.K2)(function(t,e,i,a){for(i=i||{},a=t.length;a--;i[t[a]]=e);return i},"o"),e=[1,3],i=[1,4],a=[1,5],s=[1,6],r=[1,7],o=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],h [...]
\ No newline at end of file
diff --git a/assets/js/814f3328.e45bfb4b.js b/assets/js/814f3328.e45bfb4b.js
new file mode 100644
index 00000000..5a7eb48a
--- /dev/null
+++ b/assets/js/814f3328.e45bfb4b.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7472],{55513(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"CVE-2026-49328 - Apache Fesod (Incubating): Improper validation of user-supplied URLs leading to SSRF","permalink":"/blog/2026/06/11/cve-2026-49328","unlisted":false,"date":"2026-06-11T00:00:00.000Z"},{"title":"Automated Migration from FastExcel 1.3.0 to Apache Fesod (Incubating) with OpenRewrite","permalink":"/blog/2026/ [...]
\ No newline at end of file
diff --git a/assets/js/83b4fe73.e625fa03.js b/assets/js/83b4fe73.e625fa03.js
new file mode 100644
index 00000000..2be1dedf
--- /dev/null
+++ b/assets/js/83b4fe73.e625fa03.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2519],{4806(e,n,i){i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>u,frontMatter:()=>s,metadata:()=>t,toc:()=>m});const t=JSON.parse('{"id":"pmc/become-pmc-member","title":"Become A PPMC member","description":"\x3c!--","source":"@site/community/pmc/become-pmc-member.md","sourceDirName":"pmc","slug":"/pmc/become-pmc-member","permalink":"/community/pmc/become-pmc-member","draft":false,"unliste [...]
\ No newline at end of file
diff --git a/assets/js/84450331.ecb2f23e.js b/assets/js/84450331.ecb2f23e.js
new file mode 100644
index 00000000..6706c37e
--- /dev/null
+++ b/assets/js/84450331.ecb2f23e.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2137],{56610(e,n,t){t.d(n,{R:()=>l,x:()=>o});var a=t(57140);const r={},i=a.createContext(r);function l(e){const n=a.useContext(i);return a.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),a.createElement(i.Provider,{value:n},e.children)}},67610(e,n,t [...]
\ No newline at end of file
diff --git a/assets/js/87165530.5d4459fd.js b/assets/js/87165530.5d4459fd.js
new file mode 100644
index 00000000..73036108
--- /dev/null
+++ b/assets/js/87165530.5d4459fd.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8006],{30769(e,t,n){n.d(t,{A:()=>a});const a=n.p+"assets/images/customHandlerWrite-c05ff79257df5ba72a311793a6e9db60.png"},49304(e,t,n){n.d(t,{A:()=>a});const a=n.p+"assets/images/mergeWrite-976e024ef4e1613c6dab373937cc56ff.png"},56610(e,t,n){n.d(t,{R:()=>i,x:()=>s});var a=n(57140);const l={},r=a.createContext(l);function i(e){const t=a.useContext(r);return a.useMemo(function(){return"function"==typeof [...]
\ No newline at end of file
diff --git a/assets/js/87c901a1.1b200d40.js b/assets/js/87c901a1.1b200d40.js
new file mode 100644
index 00000000..8d7ea1a5
--- /dev/null
+++ b/assets/js/87c901a1.1b200d40.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2831],{69645(t){t.exports=JSON.parse('{"tag":{"label":"security","permalink":"/blog/tags/security","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/security","page":1,"postsPerPage":15,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/8907.e9f01efb.js b/assets/js/8907.e9f01efb.js
new file mode 100644
index 00000000..8b64c57b
--- /dev/null
+++ b/assets/js/8907.e9f01efb.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8907],{68907(e,s,i){i.d(s,{createPieServices:()=>a.f});var a=i(76764);i(89932)}}]);
\ No newline at end of file
diff --git a/assets/js/8ccf8dfc.0f8431a3.js b/assets/js/8ccf8dfc.0f8431a3.js
new file mode 100644
index 00000000..db5cbdd8
--- /dev/null
+++ b/assets/js/8ccf8dfc.0f8431a3.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1506],{52087(e,n,s){s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>a,toc:()=>o});const a=JSON.parse('{"id":"sheet/read/simple","title":"Simple","description":"\x3c!--","source":"@site/docs/sheet/read/simple.md","sourceDirName":"sheet/read","slug":"/sheet/read/simple","permalink":"/docs/sheet/read/simple","draft":false,"unlisted":false,"editUrl":"https://gith [...]
\ No newline at end of file
diff --git a/assets/js/8ff8400d.3f3c3edc.js b/assets/js/8ff8400d.3f3c3edc.js
new file mode 100644
index 00000000..3bf1369f
--- /dev/null
+++ b/assets/js/8ff8400d.3f3c3edc.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6343],{52683(a){a.exports=JSON.parse('{"tag":{"label":"CVE-2026-49328","permalink":"/blog/tags/cve-2026-49328","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/cve-2026-49328","page":1,"postsPerPage":15,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/903f555a.b19d647c.js b/assets/js/903f555a.b19d647c.js
new file mode 100644
index 00000000..33637987
--- /dev/null
+++ b/assets/js/903f555a.b19d647c.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1155],{43535(e,t,n){n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>r,default:()=>d,frontMatter:()=>c,metadata:()=>o,toc:()=>u});var o=n(64098),s=n(35656),a=n(56610);const c={title:"Way to Go: Fesod successfully entered Apache Incubator",description:"Fesod successfully entered Apache Incubator.",tags:["announcement"]},r=void 0,i={authorsImageUrls:[]},u=[];function l(e){const t={a:"a",p:"p",...(0,a.R)(),.. [...]
\ No newline at end of file
diff --git a/assets/js/9056.59050bcd.js b/assets/js/9056.59050bcd.js
new file mode 100644
index 00000000..8d925bab
--- /dev/null
+++ b/assets/js/9056.59050bcd.js
@@ -0,0 +1 @@
+(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9056],{99056(){}}]);
\ No newline at end of file
diff --git a/assets/js/908b89db.a83f7618.js b/assets/js/908b89db.a83f7618.js
new file mode 100644
index 00000000..4e527494
--- /dev/null
+++ b/assets/js/908b89db.a83f7618.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9841],{56610(e,n,t){t.d(n,{R:()=>a,x:()=>r});var s=t(57140);const i={},d=s.createContext(i);function a(e){const n=s.useContext(d);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(d.Provider,{value:n},e.children)}},59428(e,n,t [...]
\ No newline at end of file
diff --git a/assets/js/9569.a6887cc4.js b/assets/js/9569.a6887cc4.js
new file mode 100644
index 00000000..9016e14f
--- /dev/null
+++ b/assets/js/9569.a6887cc4.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9569],{1156(n,t,r){r.d(t,{A:()=>f});var e=r(68448),o=r(1793),u=r(22818),c=r(73665),i=o.A?o.A.isConcatSpreadable:void 0;const a=function(n){return(0,c.A)(n)||(0,u.A)(n)||!!(i&&n&&n[i])};const f=function n(t,r,o,u,c){var i=-1,f=t.length;for(o||(o=a),c||(c=[]);++i<f;){var s=t[i];r>0&&o(s)?r>1?n(s,r-1,o,u,c):(0,e.A)(c,s):u||(c[c.length]=s)}return c}},4465(n,t,r){r.d(t,{A:()=>u});var e=r(87054),o=r(6926);c [...]
\ No newline at end of file
diff --git a/assets/js/967.7303b75f.js b/assets/js/967.7303b75f.js
new file mode 100644
index 00000000..0ff71446
--- /dev/null
+++ b/assets/js/967.7303b75f.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[967],{10967(e,s,a){a.d(s,{createPacketServices:()=>b.$});var b=a(82012);a(89932)}}]);
\ No newline at end of file
diff --git a/assets/js/9748.7748ba70.js b/assets/js/9748.7748ba70.js
new file mode 100644
index 00000000..bca68a4b
--- /dev/null
+++ b/assets/js/9748.7748ba70.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9748],{59461(e,t,s){s.d(t,{A:()=>r});var i=s(34417),n=s(3170),r=(0,i.K2)((e,t)=>{let s;"sandbox"===t&&(s=(0,n.Ltv)("#i"+e));return("sandbox"===t?(0,n.Ltv)(s.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${e}"]`)},"getDiagramElement")},79748(e,t,s){s.d(t,{diagram:()=>E});var i=s(59461),n=s(87044),r=s(33865),a=(s(20656),s(31254),s(47538),s(49281),s(39895),s(85030),s(53486)),l=s(85459) [...]
\ No newline at end of file
diff --git a/assets/js/98b2b410.bfd04cde.js b/assets/js/98b2b410.bfd04cde.js
new file mode 100644
index 00000000..16b0611c
--- /dev/null
+++ b/assets/js/98b2b410.bfd04cde.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6381],{24192(e,n,t){t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>v,frontMatter:()=>s,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"sheet/read/converter","title":"Converter","description":"\x3c!--","source":"@site/docs/sheet/read/converter.md","sourceDirName":"sheet/read","slug":"/sheet/read/converter","permalink":"/docs/sheet/read/converter","draft":false,"unlisted":false,"editUrl [...]
\ No newline at end of file
diff --git a/assets/js/98b33ad6.3ddc8b9f.js b/assets/js/98b33ad6.3ddc8b9f.js
new file mode 100644
index 00000000..8b270215
--- /dev/null
+++ b/assets/js/98b33ad6.3ddc8b9f.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[251],{27777(e,n,T){T.d(n,{A:()=>a});const a="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzIuMjUiIGhlaWdodD0iMjgiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQVBBQ0hFIEZFU09EOiBORVcgQ09NTUlUVEVSIj4KICAgIDx0aXRsZT5BUEFDSEUgRkVTT0Q6IE5FVyBDT01NSVRURVI8L3RpdGxlPgogICAgPGcgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj4KICAgICAgICA8cmVjdCB3aWR0aD0iMTM0IiBoZWlnaHQ9IjI4IiBmaWxsPSIjN [...]
\ No newline at end of file
diff --git a/assets/js/9951.2f90a075.js b/assets/js/9951.2f90a075.js
new file mode 100644
index 00000000..69bb877a
--- /dev/null
+++ b/assets/js/9951.2f90a075.js
@@ -0,0 +1,2 @@
+/*! For license information please see 9951.2f90a075.js.LICENSE.txt */
+(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9951],{7590(t,e,n){"use strict";var i=n(96627),s=n(93234);function r(t){t&&t.el||i.error("EventBus initialized without el"),this.$el=s.element(t.el)}i.mixin(r.prototype,{trigger:function(t,e,n,s){var r=i.Event("autocomplete:"+t);return this.$el.trigger(r,[e,n,s]),r}}),t.exports=r},24146(t){"use strict";var e={}.hasOwnProperty,n=/[ -,\.\/:-@\[-\^`\{-~]/,i=/[ -,\.\/:-@\[\]\^`\{-~]/,s=/(^|\\+)?(\\[A-F0-9]{1,6})\x20(? [...]
\ No newline at end of file
diff --git a/assets/js/9951.2f90a075.js.LICENSE.txt b/assets/js/9951.2f90a075.js.LICENSE.txt
new file mode 100644
index 00000000..4f7ccd8a
--- /dev/null
+++ b/assets/js/9951.2f90a075.js.LICENSE.txt
@@ -0,0 +1 @@
+/*! https://mths.be/cssesc v3.0.0 by @mathias */
diff --git a/assets/js/9b316f1b.a4388443.js b/assets/js/9b316f1b.a4388443.js
new file mode 100644
index 00000000..033c9ae1
--- /dev/null
+++ b/assets/js/9b316f1b.a4388443.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8755],{56610(e,t,i){i.d(t,{R:()=>s,x:()=>a});var r=i(57140);const l={},n=r.createContext(l);function s(e){const t=r.useContext(n);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:s(e.components),r.createElement(n.Provider,{value:t},e.children)}},84702(e,t,i [...]
\ No newline at end of file
diff --git a/assets/js/9d86e7fa.f13644ca.js b/assets/js/9d86e7fa.f13644ca.js
new file mode 100644
index 00000000..67a35f6a
--- /dev/null
+++ b/assets/js/9d86e7fa.f13644ca.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4129],{11136(a){a.exports=JSON.parse('{"tag":{"label":"announcement","permalink":"/blog/tags/announcement","allTagsPath":"/blog/tags","count":3,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/announcement","page":1,"postsPerPage":15,"totalPages":1,"totalCount":3,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/9e4087bc.ad055f19.js b/assets/js/9e4087bc.ad055f19.js
new file mode 100644
index 00000000..6c47fb97
--- /dev/null
+++ b/assets/js/9e4087bc.ad055f19.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2711],{50677(e,a,r){r.r(a),r.d(a,{default:()=>m});r(57140);var t=r(71575),s=r(49848),n=r(86184),i=r(64486),c=r(89773),l=r(95003),o=r(35656);function h({year:e,posts:a}){const r=(0,i.i)({day:"numeric",month:"long",timeZone:"UTC"});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(l.A,{as:"h3",id:e,children:e}),(0,o.jsx)("ul",{children:a.map(e=>{return(0,o.jsx)("li",{children:(0,o.jsxs)(t.A,{to:e.metadat [...]
\ No newline at end of file
diff --git a/assets/js/a0cc137d.eaa999b1.js b/assets/js/a0cc137d.eaa999b1.js
new file mode 100644
index 00000000..58d3cd48
--- /dev/null
+++ b/assets/js/a0cc137d.eaa999b1.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6407],{24008(e,n,t){t.d(n,{A:()=>o});const o=t.p+"assets/images/20250917-01-e2db1d5bffc9ab4c98ce8f55ece35090.png"},34253(e,n,t){t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>d});var o=t(64098),i=t(35656),s=t(56610);const a={title:"Way to Go: Fesod successfully entered Apache Incubator",description:"Fesod successfully entered Apache Incubator.",tag [...]
\ No newline at end of file
diff --git a/assets/js/a2915123.e09743f7.js b/assets/js/a2915123.e09743f7.js
new file mode 100644
index 00000000..89129c54
--- /dev/null
+++ b/assets/js/a2915123.e09743f7.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8955],{56610(e,t,n){n.d(t,{R:()=>d,x:()=>o});var s=n(57140);const a={},r=s.createContext(a);function d(e){const t=s.useContext(r);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:d(e.components),s.createElement(r.Provider,{value:t},e.children)}},80552(e,t,n [...]
\ No newline at end of file
diff --git a/assets/js/a3e235df.5bd71cf4.js b/assets/js/a3e235df.5bd71cf4.js
new file mode 100644
index 00000000..fd1dba79
--- /dev/null
+++ b/assets/js/a3e235df.5bd71cf4.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9120],{53629(e,n,t){t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>i,default:()=>a,frontMatter:()=>l,metadata:()=>d,toc:()=>h});const d=JSON.parse('{"id":"sheet/help/annotation","title":"Annotation","description":"\x3c!--","source":"@site/docs/sheet/help/annotation.md","sourceDirName":"sheet/help","slug":"/sheet/help/annotation","permalink":"/docs/sheet/help/annotation","draft":false,"unlisted":false,"ed [...]
\ No newline at end of file
diff --git a/assets/js/a468a806.ef9cfe94.js b/assets/js/a468a806.ef9cfe94.js
new file mode 100644
index 00000000..90638b4b
--- /dev/null
+++ b/assets/js/a468a806.ef9cfe94.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1611],{3124(e){e.exports=JSON.parse('{"permalink":"/blog/2026/06/11/cve-2026-49328","editUrl":"https://github.com/apache/fesod/edit/main/website/blog/2026-06-11-cve-2026-49328.md","source":"@site/blog/2026-06-11-cve-2026-49328.md","title":"CVE-2026-49328 - Apache Fesod (Incubating): Improper validation of user-supplied URLs leading to SSRF","description":"Security advisory for CVE-2026-49328.","date": [...]
\ No newline at end of file
diff --git a/assets/js/a4b4544e.084a4c73.js b/assets/js/a4b4544e.084a4c73.js
new file mode 100644
index 00000000..2141f77e
--- /dev/null
+++ b/assets/js/a4b4544e.084a4c73.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2340],{56447(e,n,i){i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"contribution","title":"Contributor Guide","description":"\x3c!--","source":"@site/community/contribution.md","sourceDirName":".","slug":"/contribution","permalink":"/community/contribution","draft":false,"unlisted":false,"editUrl":"https://github.com/a [...]
\ No newline at end of file
diff --git a/assets/js/a6aa9e1f.8d6f1ef0.js b/assets/js/a6aa9e1f.8d6f1ef0.js
new file mode 100644
index 00000000..71e34dd2
--- /dev/null
+++ b/assets/js/a6aa9e1f.8d6f1ef0.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7643],{22623(e,t,a){a.d(t,{A:()=>i});a(57140);var s=a(49848),n=a(79224),r=a(35656);function i(e){const{metadata:t}=e,{previousPage:a,nextPage:i}=t;return(0,r.jsxs)("nav",{className:"pagination-nav","aria-label":(0,s.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[a&&(0,r.jsx)(n.A,{permalink:a,title:(0,r.jsx [...]
\ No newline at end of file
diff --git a/assets/js/a7456010.6632754d.js b/assets/js/a7456010.6632754d.js
new file mode 100644
index 00000000..90906f40
--- /dev/null
+++ b/assets/js/a7456010.6632754d.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1235],{88552(e){e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/a7bd4aaa.36725923.js b/assets/js/a7bd4aaa.36725923.js
new file mode 100644
index 00000000..24fe08a8
--- /dev/null
+++ b/assets/js/a7bd4aaa.36725923.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7098],{13374(n,e,s){s.r(e),s.d(e,{default:()=>x});s(57140);var r=s(86184),o=s(65785),t=s(41021),i=s(18713),c=s(11077),a=s(35656);function l(n){const{version:e}=n;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(c.A,{version:e.version,tag:(0,t.k)(e.pluginId,e.version)}),(0,a.jsx)(r.be,{children:e.noIndex&&(0,a.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function u(n){const{version:e,r [...]
\ No newline at end of file
diff --git a/assets/js/a8dd066c.ea72796c.js b/assets/js/a8dd066c.ea72796c.js
new file mode 100644
index 00000000..6cd081f5
--- /dev/null
+++ b/assets/js/a8dd066c.ea72796c.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7587],{29504(e,n,i){i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>u,frontMatter:()=>r,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"sheet/write/pojo","title":"POJO","description":"\x3c!--","source":"@site/docs/sheet/write/pojo.md","sourceDirName":"sheet/write","slug":"/sheet/write/pojo","permalink":"/docs/sheet/write/pojo","draft":false,"unlisted":false,"editUrl":"https://github.co [...]
\ No newline at end of file
diff --git a/assets/js/a94703ab.b4862c17.js b/assets/js/a94703ab.b4862c17.js
new file mode 100644
index 00000000..18e1efc7
--- /dev/null
+++ b/assets/js/a94703ab.b4862c17.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9048],{46659(e,t,n){n.r(t),n.d(t,{default:()=>Se});var a=n(57140),i=n(13526),s=n(86184),o=n(95667),l=n(48756),r=n(47145),c=n(49848),d=n(60716),u=n(93458);const m="backToTopButton_NILX",b="backToTopButtonShow_qT1S";var h=n(35656);function p(){const{shown:e,scrollToTop:t}=function({threshold:e}){const[t,n]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:o}=(0,d.gk)();return(0,d.Mq)(({s [...]
\ No newline at end of file
diff --git a/assets/js/a9f50754.b189a9b7.js b/assets/js/a9f50754.b189a9b7.js
new file mode 100644
index 00000000..f57381ad
--- /dev/null
+++ b/assets/js/a9f50754.b189a9b7.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[3166],{96835(t){t.exports=JSON.parse('{"tag":{"label":"committer","permalink":"/blog/tags/committer","allTagsPath":"/blog/tags","count":2,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/committer","page":1,"postsPerPage":15,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/aba21aa0.9a1fa3c5.js b/assets/js/aba21aa0.9a1fa3c5.js
new file mode 100644
index 00000000..52cd0a89
--- /dev/null
+++ b/assets/js/aba21aa0.9a1fa3c5.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[5742],{27093(e){e.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/abce2868.c62b8f3e.js b/assets/js/abce2868.c62b8f3e.js
new file mode 100644
index 00000000..d3ef4784
--- /dev/null
+++ b/assets/js/abce2868.c62b8f3e.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8586],{10506(e,i,n){n.r(i),n.d(i,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"sheet/write/head","title":"Head","description":"\x3c!--","source":"@site/docs/sheet/write/head.md","sourceDirName":"sheet/write","slug":"/sheet/write/head","permalink":"/docs/sheet/write/head","draft":false,"unlisted":false,"editUrl":"https://github.co [...]
\ No newline at end of file
diff --git a/assets/js/acecf23e.00e0664e.js b/assets/js/acecf23e.00e0664e.js
new file mode 100644
index 00000000..17ede5bb
--- /dev/null
+++ b/assets/js/acecf23e.00e0664e.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1903],{1912(s){s.exports=JSON.parse('{"blogBasePath":"/blog","blogTitle":"Blog","authorsListPath":"/blog/authors"}')}}]);
\ No newline at end of file
diff --git a/assets/js/ae338ae9.0ee72603.js b/assets/js/ae338ae9.0ee72603.js
new file mode 100644
index 00000000..5ef22c09
--- /dev/null
+++ b/assets/js/ae338ae9.0ee72603.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8984],{56610(e,n,t){t.d(n,{R:()=>a,x:()=>l});var s=t(57140);const i={},r=s.createContext(i);function a(e){const n=s.useContext(r);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(r.Provider,{value:n},e.children)}},58607(e,n,t [...]
\ No newline at end of file
diff --git a/assets/js/bfc739f4.5175fa64.js b/assets/js/bfc739f4.5175fa64.js
new file mode 100644
index 00000000..ab3dff6a
--- /dev/null
+++ b/assets/js/bfc739f4.5175fa64.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4883],{45503(e){e.exports=JSON.parse('{"tag":{"label":"opensource","permalink":"/blog/tags/opensource","allTagsPath":"/blog/tags","count":2,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/opensource","page":1,"postsPerPage":15,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/c15d9823.1cd17019.js b/assets/js/c15d9823.1cd17019.js
new file mode 100644
index 00000000..ce4514da
--- /dev/null
+++ b/assets/js/c15d9823.1cd17019.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8146],{29328(e){e.exports=JSON.parse('{"metadata":{"permalink":"/blog","page":1,"postsPerPage":15,"totalPages":1,"totalCount":6,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/c3aa4345.7eed781f.js b/assets/js/c3aa4345.7eed781f.js
new file mode 100644
index 00000000..99decf17
--- /dev/null
+++ b/assets/js/c3aa4345.7eed781f.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7105],{56597(e,n,i){i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>s,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"contribution/contribute-doc","title":"Docs Contribution","description":"\x3c!--","source":"@site/community/contribution/contribute-doc.md","sourceDirName":"contribution","slug":"/contribution/contribute-doc","permalink":"/community/contribution/contrib [...]
\ No newline at end of file
diff --git a/assets/js/c4f5d8e4.2e936112.js b/assets/js/c4f5d8e4.2e936112.js
new file mode 100644
index 00000000..fca2033a
--- /dev/null
+++ b/assets/js/c4f5d8e4.2e936112.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2634],{4658(e,a,t){t.d(a,{A:()=>q});var l,r,n,c,h,i,f,m,d,s,o,g,E,p,x,w,M,v,R,b,u,P,Z,A,j=t(57140);function y(){return y=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var l in t)({}).hasOwnProperty.call(t,l)&&(e[l]=t[l])}return e},y.apply(null,arguments)}const q=({title:e,titleId:a,...t})=>j.createElement("svg",y({xmlns:"http://www.w3.org/200 [...]
\ No newline at end of file
diff --git a/assets/js/c639369e.81b6d7eb.js b/assets/js/c639369e.81b6d7eb.js
new file mode 100644
index 00000000..17b07eab
--- /dev/null
+++ b/assets/js/c639369e.81b6d7eb.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7637],{12333(e,t,a){a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>c,frontMatter:()=>r,metadata:()=>n,toc:()=>o});const n=JSON.parse('{"id":"quickstart/simple-example","title":"Simple example","description":"\x3c!--","source":"@site/docs/quickstart/example.md","sourceDirName":"quickstart","slug":"/quickstart/simple-example","permalink":"/docs/quickstart/simple-example","draft":false,"unlist [...]
\ No newline at end of file
diff --git a/assets/js/c72637f2.1099692d.js b/assets/js/c72637f2.1099692d.js
new file mode 100644
index 00000000..10298994
--- /dev/null
+++ b/assets/js/c72637f2.1099692d.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7827],{3124(e){e.exports=JSON.parse('{"permalink":"/blog/2026/06/11/cve-2026-49328","editUrl":"https://github.com/apache/fesod/edit/main/website/blog/2026-06-11-cve-2026-49328.md","source":"@site/blog/2026-06-11-cve-2026-49328.md","title":"CVE-2026-49328 - Apache Fesod (Incubating): Improper validation of user-supplied URLs leading to SSRF","description":"Security advisory for CVE-2026-49328.","date": [...]
\ No newline at end of file
diff --git a/assets/js/c8d101a0.4a4773f4.js b/assets/js/c8d101a0.4a4773f4.js
new file mode 100644
index 00000000..6a1fed3f
--- /dev/null
+++ b/assets/js/c8d101a0.4a4773f4.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4065],{17928(e,n,r){r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>l});var a=r(69888),t=r(35656),i=r(56610);const o={title:"Automated Migration from FastExcel 1.3.0 to Apache Fesod (Incubating) with OpenRewrite",description:"Migrate FastExcel 1.3 to Apache Fesod (Incubating) 2.0.1-incubating",authors:["bengbengbalabalabeng"],tags:["migration","fast [...]
\ No newline at end of file
diff --git a/assets/js/c9cac9d9.99ff49d7.js b/assets/js/c9cac9d9.99ff49d7.js
new file mode 100644
index 00000000..17312d80
--- /dev/null
+++ b/assets/js/c9cac9d9.99ff49d7.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4918],{10371(e){e.exports=JSON.parse('{"tag":{"label":"release","permalink":"/blog/tags/release","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/release","page":1,"postsPerPage":15,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/c9de33a5.bcc8dc22.js b/assets/js/c9de33a5.bcc8dc22.js
new file mode 100644
index 00000000..8d21db39
--- /dev/null
+++ b/assets/js/c9de33a5.bcc8dc22.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[3026],{56610(e,t,i){i.d(t,{R:()=>r,x:()=>c});var n=i(57140);const o={},s=n.createContext(o);function r(e){const t=n.useContext(s);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(s.Provider,{value:t},e.children)}},73228(e,t,i [...]
\ No newline at end of file
diff --git a/assets/js/ccc49370.6c7128d4.js b/assets/js/ccc49370.6c7128d4.js
new file mode 100644
index 00000000..641f394b
--- /dev/null
+++ b/assets/js/ccc49370.6c7128d4.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[3249],{2932(e,t,n){n.d(t,{A:()=>x});var a=n(57140),s=n(24282);function i(e){const t=e.map(e=>({...e,parentIndex:-1,children:[]})),n=Array(7).fill(-1);t.forEach((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t});const a=[];return t.forEach(e=>{const{parentIndex:n,...s}=e;n>=0?t[n].children.push(s):a.push(s)}),a}function r({toc:e,minHeadingLevel:t,maxHeadingLevel:n}){return e [...]
\ No newline at end of file
diff --git a/assets/js/cfa642a3.9170652c.js b/assets/js/cfa642a3.9170652c.js
new file mode 100644
index 00000000..918db8a7
--- /dev/null
+++ b/assets/js/cfa642a3.9170652c.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4823],{56610(e,i,t){t.d(i,{R:()=>r,x:()=>a});var n=t(57140);const o={},s=n.createContext(o);function r(e){const i=n.useContext(s);return n.useMemo(function(){return"function"==typeof e?e(i):{...i,...e}},[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(s.Provider,{value:i},e.children)}},89298(e,i,t [...]
\ No newline at end of file
diff --git a/assets/js/d2436a2b.8f688944.js b/assets/js/d2436a2b.8f688944.js
new file mode 100644
index 00000000..6be2c4de
--- /dev/null
+++ b/assets/js/d2436a2b.8f688944.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[837],{19112(e){e.exports=JSON.parse('{"version":{"pluginId":"community","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"community":[{"type":"link","href":"/community/","label":"Join Community","docId":"index","unlisted":false},{"type":"link","href":"/community/maturity","label":"Maturity","docId":"maturity [...]
\ No newline at end of file
diff --git a/assets/js/d5273c26.7915cbcf.js b/assets/js/d5273c26.7915cbcf.js
new file mode 100644
index 00000000..bafa4510
--- /dev/null
+++ b/assets/js/d5273c26.7915cbcf.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[6717],{8616(M,N,D){D.d(N,{A:()=>j});const j=D.p+"assets/files/fesod-logo-e965e5189d96bd03fa69a35f3d899546.svg"},19338(M,N,D){D.d(N,{A:()=>j});const j=D.p+"assets/files/fesod-logo-icon-fe2b95b7518918c8494bba4f27944e16.svg"},22235(M,N,D){D.d(N,{A:()=>j});const j="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0 [...]
\ No newline at end of file
diff --git a/assets/js/d55aa8bb.6964b481.js b/assets/js/d55aa8bb.6964b481.js
new file mode 100644
index 00000000..d8d9bbdf
--- /dev/null
+++ b/assets/js/d55aa8bb.6964b481.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[4599],{56610(e,n,r){r.d(n,{R:()=>s,x:()=>c});var d=r(57140);const t={},i=d.createContext(t);function s(e){const n=d.useContext(i);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),d.createElement(i.Provider,{value:n},e.children)}},59974(e,n,r [...]
\ No newline at end of file
diff --git a/assets/js/d90696c9.331a3e08.js b/assets/js/d90696c9.331a3e08.js
new file mode 100644
index 00000000..3d3df913
--- /dev/null
+++ b/assets/js/d90696c9.331a3e08.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[5521],{28601(e,n,i){i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>l});var t=i(67933),s=i(35656),o=i(56610);const a={title:"Apache Fesod (Incubating) 2.0.1-incubating Officially Released",description:"The Apache Fesod community is pleased to announce the official release of Apache Fesod (Incubating) 2.0.1-incubating.",authors:["psxjoy"],tags:["anno [...]
\ No newline at end of file
diff --git a/assets/js/db358d00.0dd04f6a.js b/assets/js/db358d00.0dd04f6a.js
new file mode 100644
index 00000000..2407d461
--- /dev/null
+++ b/assets/js/db358d00.0dd04f6a.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8865],{50018(e,t,n){n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>g,frontMatter:()=>s,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"sheet/write/merge","title":"Merge","description":"\x3c!--","source":"@site/docs/sheet/write/merge.md","sourceDirName":"sheet/write","slug":"/sheet/write/merge","permalink":"/docs/sheet/write/merge","draft":false,"unlisted":false,"editUrl":"https://gith [...]
\ No newline at end of file
diff --git a/assets/js/db72292f.d707e4d6.js b/assets/js/db72292f.d707e4d6.js
new file mode 100644
index 00000000..02e984a4
--- /dev/null
+++ b/assets/js/db72292f.d707e4d6.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9629],{53092(e,t,n){n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"sheet/read/format","title":"Format","description":"\x3c!--","source":"@site/docs/sheet/read/format.md","sourceDirName":"sheet/read","slug":"/sheet/read/format","permalink":"/docs/sheet/read/format","draft":false,"unlisted":false,"editUrl":"https://gith [...]
\ No newline at end of file
diff --git a/assets/js/de3da009.2d46bc1f.js b/assets/js/de3da009.2d46bc1f.js
new file mode 100644
index 00000000..2e5d42eb
--- /dev/null
+++ b/assets/js/de3da009.2d46bc1f.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[685],{35255(e,t,i){i.r(t),i.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>u,frontMatter:()=>s,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"contribution/code-review-guide","title":"Code Review Guidelines","description":"\x3c!--","source":"@site/community/contribution/code-review-guide.md","sourceDirName":"contribution","slug":"/contribution/code-review-guide","permalink":"/community/contrib [...]
\ No newline at end of file
diff --git a/assets/js/e0719818.d59443b3.js b/assets/js/e0719818.d59443b3.js
new file mode 100644
index 00000000..2d7c2402
--- /dev/null
+++ b/assets/js/e0719818.d59443b3.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[5220],{68669(s){s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"community"}')}}]);
\ No newline at end of file
diff --git a/assets/js/e1dda140.2afe6241.js b/assets/js/e1dda140.2afe6241.js
new file mode 100644
index 00000000..36ff9aa7
--- /dev/null
+++ b/assets/js/e1dda140.2afe6241.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[235],{56610(e,n,t){t.d(n,{R:()=>o,x:()=>a});var r=t(57140);const i={},s=r.createContext(i);function o(e){const n=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(s.Provider,{value:n},e.children)}},96801(e,n,t) [...]
\ No newline at end of file
diff --git a/assets/js/e2f5eafd.2b185076.js b/assets/js/e2f5eafd.2b185076.js
new file mode 100644
index 00000000..5ab0b79a
--- /dev/null
+++ b/assets/js/e2f5eafd.2b185076.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[9373],{56610(e,n,i){i.d(n,{R:()=>r,x:()=>o});var t=i(57140);const s={},a=t.createContext(s);function r(e){const n=t.useContext(a);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),t.createElement(a.Provider,{value:n},e.children)}},64128(e,n,i [...]
\ No newline at end of file
diff --git a/assets/js/ea334bcf.06ffe794.js b/assets/js/ea334bcf.06ffe794.js
new file mode 100644
index 00000000..09f92d99
--- /dev/null
+++ b/assets/js/ea334bcf.06ffe794.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8258],{45231(e,n,t){t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>c,default:()=>x,frontMatter:()=>r,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"sheet/read/exception","title":"Exception","description":"\x3c!--","source":"@site/docs/sheet/read/exception.md","sourceDirName":"sheet/read","slug":"/sheet/read/exception","permalink":"/docs/sheet/read/exception","draft":false,"unlisted":false,"editUrl [...]
\ No newline at end of file
diff --git a/assets/js/edc931f8.b95e3c9d.js b/assets/js/edc931f8.b95e3c9d.js
new file mode 100644
index 00000000..7355c4e9
--- /dev/null
+++ b/assets/js/edc931f8.b95e3c9d.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2526],{19987(e,i,s){s.r(i),s.d(i,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"index","title":"Join Community","description":"\x3c!--","source":"@site/community/index.md","sourceDirName":".","slug":"/","permalink":"/community/","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/fesod/edit/main/website/community/i [...]
\ No newline at end of file
diff --git a/assets/js/ef8b811a.569a47b8.js b/assets/js/ef8b811a.569a47b8.js
new file mode 100644
index 00000000..0d4d0fea
--- /dev/null
+++ b/assets/js/ef8b811a.569a47b8.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8947],{56600(A){A.exports=JSON.parse('{"authors":[{"name":"Dave Fisher","url":"https://github.com/dave2wave","socials":{"github":"https://github.com/dave2wave"},"imageURL":"data:image/png;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAGQAZAMBIgACEQEDEQH/x [...]
\ No newline at end of file
diff --git a/assets/js/f81c1134.270d2f5b.js b/assets/js/f81c1134.270d2f5b.js
new file mode 100644
index 00000000..8e005122
--- /dev/null
+++ b/assets/js/f81c1134.270d2f5b.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8130],{77735(e){e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"/2026/06/11/cve-2026-49328","metadata":{"permalink":"/blog/2026/06/11/cve-2026-49328","editUrl":"https://github.com/apache/fesod/edit/main/website/blog/2026-06-11-cve-2026-49328.md","source":"@site/blog/2026-06-11-cve-2026-49328.md","title":"CVE-2026-49328 - Apache Fesod (Incubating): Improper validation of user-supplied URLs leadin [...]
\ No newline at end of file
diff --git a/assets/js/f9e23376.44d09b2b.js b/assets/js/f9e23376.44d09b2b.js
new file mode 100644
index 00000000..d4bcc183
--- /dev/null
+++ b/assets/js/f9e23376.44d09b2b.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[2840],{2448(e,n,t){t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>o,frontMatter:()=>r,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"download","title":"Download","description":"\x3c!--","source":"@site/docs/download.md","sourceDirName":".","slug":"/download","permalink":"/docs/download","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/fesod/edit/main/website/docs/d [...]
\ No newline at end of file
diff --git a/assets/js/fae1940b.910d7893.js b/assets/js/fae1940b.910d7893.js
new file mode 100644
index 00000000..7ad75c64
--- /dev/null
+++ b/assets/js/fae1940b.910d7893.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[1239],{4480(e,n,t){t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"committer/become-committer","title":"Become A Committer","description":"\x3c!--","source":"@site/community/committer/become-committer.md","sourceDirName":"committer","slug":"/committer/become-committer","permalink":"/community/committer/become-committer [...]
\ No newline at end of file
diff --git a/assets/js/fc8fba91.0b92981b.js b/assets/js/fc8fba91.0b92981b.js
new file mode 100644
index 00000000..14dc7940
--- /dev/null
+++ b/assets/js/fc8fba91.0b92981b.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[833],{13517(e,s,t){t.r(s),t.d(s,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"sheet/advanced/password","title":"Password Protection","description":"\x3c!--","source":"@site/docs/sheet/advanced/password.md","sourceDirName":"sheet/advanced","slug":"/sheet/advanced/password","permalink":"/docs/sheet/advanced/password","draft":false, [...]
\ No newline at end of file
diff --git a/assets/js/fe9a19b4.5034b816.js b/assets/js/fe9a19b4.5034b816.js
new file mode 100644
index 00000000..72635e2b
--- /dev/null
+++ b/assets/js/fe9a19b4.5034b816.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[7698],{24200(e,t,r){r.d(t,{A:()=>n});const n=r.p+"assets/images/converterWrite-3246357a06c3ba04afb519b820c19bb2.png"},29367(e,t,r){r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"sheet/write/format","title":"Format","description":"\x3c!--","source":"@site/docs/sheet/write/format.md","sourceDirName":"sheet/write","slug" [...]
\ No newline at end of file
diff --git a/assets/js/ff3732e9.a049db1c.js b/assets/js/ff3732e9.a049db1c.js
new file mode 100644
index 00000000..aeba8a9a
--- /dev/null
+++ b/assets/js/ff3732e9.a049db1c.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[820],{15282(e,t,n){n.d(t,{A:()=>l});const l=n.p+"assets/images/widthAndHeightWrite-77c049fb68d1ac806c1ba21e82c45f45.png"},56610(e,t,n){n.d(t,{R:()=>o,x:()=>s});var l=n(57140);const i={},r=l.createContext(i);function o(e){const t=l.useContext(r);return l.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.compon [...]
\ No newline at end of file
diff --git a/assets/js/main.873ff924.js b/assets/js/main.873ff924.js
new file mode 100644
index 00000000..839c4f8b
--- /dev/null
+++ b/assets/js/main.873ff924.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.873ff924.js.LICENSE.txt */
+(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[8792],{846(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(57140),a=n(89720);function o(){return(0,r.useContext)(a.o)}},2033(e,t,n){"use strict";var r=n(15666),a=n(57140),o=n(75219);function i(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; [...]
\ No newline at end of file
diff --git a/assets/js/main.873ff924.js.LICENSE.txt b/assets/js/main.873ff924.js.LICENSE.txt
new file mode 100644
index 00000000..f4d2c339
--- /dev/null
+++ b/assets/js/main.873ff924.js.LICENSE.txt
@@ -0,0 +1,138 @@
+/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
+ * @license MIT */
+
+/*!
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+/*!
+ * lunr.Builder
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.Index
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.Pipeline
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.Set
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.TokenSet
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.Vector
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.stemmer
+ * Copyright (C) 2020 Oliver Nightingale
+ * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
+ */
+
+/*!
+ * lunr.stopWordFilter
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.tokenizer
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.trimmer
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/*!
+ * lunr.utils
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * @license
+ * Copyright 2019 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/**
+ * @license React
+ * react-dom-client.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-dom.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-jsx-runtime.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * scheduler.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
+ * Copyright (C) 2020 Oliver Nightingale
+ * @license MIT
+ */
+
+/** @license React v16.13.1
+ * react-is.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
diff --git a/assets/js/runtime~main.a45376a7.js b/assets/js/runtime~main.a45376a7.js
new file mode 100644
index 00000000..bd2399cb
--- /dev/null
+++ b/assets/js/runtime~main.a45376a7.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,a,c,d,f,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return b[e].call(c.exports,c,c.exports,r),c.exports}r.m=b,e=[],r.O=(a,c,d,f)=>{if(!c){var b=1/0;for(i=0;i<e.length;i++){for(var[c,d,f]=e[i],t=!0,o=0;o<c.length;o++)(!1&f||b>=f)&&Object.keys(r.O).every(e=>r.O[e](c[o]))?c.splice(o--,1):(t=!1,f<b&&(b=f));if(t){e.splice(i--,1);var n=d();void 0!==n&&(a=n)}}return a}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1 [...]
\ No newline at end of file
diff --git a/blog/2025/09/17/fesod-entered-apache-incubator/index.html b/blog/2025/09/17/fesod-entered-apache-incubator/index.html
new file mode 100644
index 00000000..1f60a3f1
--- /dev/null
+++ b/blog/2025/09/17/fesod-entered-apache-incubator/index.html
@@ -0,0 +1,103 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Way to Go: Fesod successfully entered Apache Incubator | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content=" [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+of the Apache Foundation Incubator.
+According to the Apache Foundation <a href="https://lists.apache.org/thread/k744v8ff22mom3bplqkjnc2qvtksj59f" target="_blank" rel="noopener noreferrer" class="">mailing list</a>, it
+was approved with 9 binding votes, with no abstentions or opposing
+votes, to accept Fesod into the Apache Incubator. This marked its official status as an incubation project under the
+<a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache Software Foundation</a>, the world's largest open-source foundation. On September 25,
+2025, the Fesod repository was
+officially transferred to the Apache Software Foundation.</p>
+<p>Fesod was originally named FastExcel and was officially open-sourced on GitHub in October 2024. With continuous project
+maintenance and iteration by the community members, as well as the continuous growth of the community, now the Fesod
+project has officially been announced to join the Apache Incubator. This marks a new beginning for the Fesod project,
+indicating that open-source community collaboration will become more standardized and internationalized!</p>
+<p><img decoding="async" loading="lazy" alt="blog-20250917" src="/assets/images/20250917-01-e2db1d5bffc9ab4c98ce8f55ece35090.png" width="1207" height="1595" class="img_BbTd"></p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="introduction">Introduction<a href="#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no"></a></h2>
+<p>Apache Fesod (Incubating) is a high-performance and memory-efficient Java library for reading and writing
+spreadsheet files, designed to simplify development and ensure reliability. The name fesod (pronounced <code>/ˈfɛsɒd/</code>), an
+acronym for "fast easy spreadsheet and other documents," expresses the project's origin, background, and vision.</p>
+<p>Apache Fesod (Incubating) can provide developers and enterprises with great freedom and flexibility. We plan to
+introduce more new features in the future to continually enhance user experience and tool usability. Apache Fesod (
+Incubating) is committed to being your best choice for handling spreadsheet files.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="features">Features<a href="#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features" translate="no"></a></h2>
+<ul>
+<li class=""><strong>High-performance Reading and Writing</strong>: Apache Fesod (Incubating) focuses on performance optimization, capable of
+efficiently handling large-scale spreadsheet data. Compared to some traditional spreadsheet processing libraries, it
+can
+significantly reduce memory consumption.</li>
+<li class=""><strong>Simplicity and Ease of Use</strong>: The library offers a simple and intuitive API, allowing developers to easily integrate
+it into projects, whether for simple spreadsheet operations or complex data processing.</li>
+<li class=""><strong>Stream Operations</strong>: Apache Fesod (Incubating) supports stream reading, minimizing the problem of loading large
+amounts of data at once. This design is especially important when dealing with hundreds of thousands or even millions
+of rows of data.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="current-development-status">Current Development Status<a href="#current-development-status" class="hash-link" aria-label="Direct link to Current Development Status" title="Direct link to Current Development Status" translate="no"></a></h2>
+<p>The project was initiated by the original core maintainer in 2024, aiming to provide a more efficient Excel processing
+solution and ensure long-term sustainable maintenance. Since its open-source status, a small community has been
+initially established. The main repository has received a total of <strong>5.0K+</strong> stars on GitHub, has released community
+versions <strong>5</strong> times, and has <strong>20+</strong> contributors.
+We have received continuous widespread attention and support from the community, which is both a recognition of our past
+work and an expectation for our future development.</p>
+<p><img decoding="async" loading="lazy" alt="blog-20250917" src="/assets/images/20250917-02-8ffdd34d6cbc80004f5404c95a83de58.png" width="826" height="551" class="img_BbTd"></p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="why-join-the-apache-incubator">Why Join the Apache Incubator<a href="#why-join-the-apache-incubator" class="hash-link" aria-label="Direct link to Why Join the Apache Incubator" title="Direct link to Why Join the Apache Incubator" translate="no"></a></h2>
+<p>Joining the Apache Incubator is mainly based on the following reasons:</p>
+<ul>
+<li class="">Under the guidance of the Apache Mature Open Source Foundation, the collaboration of open source projects and the
+operation of community governance will become more standardized.</li>
+<li class="">Build a more prosperous and diverse developer community. We hope to attract more outstanding developers from home and
+abroad to join, making the developer community more diverse.</li>
+<li class="">Expand the application scope and encourage its integration into more open source and commercial projects, promoting
+the development of new use cases and functions.</li>
+</ul>
+<p>Next, the community will be guided by the Apache incubator mentors to manage and operate the community in accordance
+with the concept of "Community over Code", and also ensure that every outstanding contributor can be recognized. At the
+level of open-source products, listen to user feedback, improve and optimize the product usage experience, and build
+connections with the open-source ecosystem.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="introduction-of-the-supervisor">Introduction of the Supervisor<a href="#introduction-of-the-supervisor" class="hash-link" aria-label="Direct link to Introduction of the Supervisor" title="Direct link to Introduction of the Supervisor" translate="no"></a></h2>
+<ul>
+<li class="">tison(Champion)</li>
+<li class="">Dave Fisher</li>
+<li class="">PJ Fanning</li>
+<li class="">Huajie Wang</li>
+</ul>
+<p>Thank you all for your selfless assistance. You provided professional guidance in terms of compliance and process
+advancement. Special thanks to the project Champion, @tison. During the project's journey into the incubator, he/she led
+the entire process from the drafting stage of the proposal to discussions and ultimately to the initiation of voting,
+offering many valuable professional suggestions and guidance.</p>
+<p>We believe that with the guidance of all the mentors, the community will grow more healthily in the future.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="join-community">Join Community<a href="#join-community" class="hash-link" aria-label="Direct link to Join Community" title="Direct link to Join Community" translate="no"></a></h2>
+<p><strong>Open Source</strong></p>
+<ul>
+<li class=""><a href="https://github.com/apache/fesod" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/fesod</a></li>
+</ul>
+<p><strong>Website</strong></p>
+<ul>
+<li class=""><a href="https://fesod.apache.org/" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/</a></li>
+</ul>
+<p><strong>Mailing Lists</strong></p>
+<ul>
+<li class=""><a href="mailto:dev@fesod.apache.org" target="_blank" rel="noopener noreferrer" class="">dev@fesod.apache.org</a></li>
+</ul></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/announcement">announcement</a></li></ul></div></div><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/blog/2025-09-1 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/2026/02/27/apache-fesod-2-0-1-incubating-released/index.html b/blog/2026/02/27/apache-fesod-2-0-1-incubating-released/index.html
new file mode 100644
index 00000000..976aaa0c
--- /dev/null
+++ b/blog/2026/02/27/apache-fesod-2-0-1-incubating-released/index.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Apache Fesod (Incubating) 2.0.1-incubating Officially Released | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" c [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This is not only a technical iteration but also a significant milestone: <strong>the first official release of Fesod since joining the Apache Software Foundation (ASF) Incubator.</strong> Over the past few months, the community has collaboratively completed extensive compliance improvements, architectural refactoring, and functional enhancements. This release marks Fesod’s readiness to embark on a new chapter of high-performance Excel processing under the ASF governance.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="milestone-significance-the-first-official-asf-release">Milestone Significance: The First Official ASF Release<a href="#milestone-significance-the-first-official-asf-release" class="hash-link" aria-label="Direct link to Milestone Significance: The First Official ASF Release" title="Direct link to Milestone Significance: The First Official ASF Release" translate="no"></a></h2>
+<p>As our "debut" in the incubator, version 2.0.1 represents a decisive step forward in embracing <strong>"The Apache Way"</strong>:</p>
+<ul>
+<li class=""><strong>Comprehensive Renaming & Compliance:</strong> We have completed the full transition from <code>FastExcel</code> to <code>Fesod</code> (including package names, class names, and documentation) to ensure the brand is fully protected under the ASF.</li>
+<li class=""><strong>Compliance Completion:</strong> We have introduced the <code>DISCLAIMER</code>, <code>NOTICE</code>, and <code>support</code> modules, and implemented automated License Header management via Spotless, fully aligning with ASF policies.</li>
+<li class=""><strong>Community Governance:</strong> All code merges and release processes were conducted through public discussion and voting on the mailing lists, reflecting the principles of openness and transparency.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="key-highlights">Key Highlights<a href="#key-highlights" class="hash-link" aria-label="Direct link to Key Highlights" title="Direct link to Key Highlights" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="1-deep-architectural-refactoring">1. Deep Architectural Refactoring<a href="#1-deep-architectural-refactoring" class="hash-link" aria-label="Direct link to 1. Deep Architectural Refactoring" title="Direct link to 1. Deep Architectural Refactoring" translate="no"></a></h3>
+<p>To support long-term sustainability, we have significantly optimized the project structure:</p>
+<ul>
+<li class=""><strong>Multi-module Architecture:</strong> Introduced a multi-module structure for clearer hierarchy and finer dependency management.</li>
+<li class=""><strong>Distribution Enhancement:</strong> Added the <code>fesod-distribution</code> module to standardize the description and building of distribution packages.</li>
+<li class=""><strong>JDK 25 Support:</strong> Keeping pace with the Java ecosystem, we have officially added compatibility and support for <strong>JDK 25</strong>.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="2-new-features">2. New Features<a href="#2-new-features" class="hash-link" aria-label="Direct link to 2. New Features" title="Direct link to 2. New Features" translate="no"></a></h3>
+<p>This release introduces several practical features to enhance the flexibility of Excel processing:</p>
+<ul>
+<li class=""><strong>Enhanced Excel Processing:</strong> Added the <code>afterSheetDispose</code> lifecycle method in <code>SheetWriteHandler</code> and introduced a brand-new <strong>Header Merge Strategy</strong>.</li>
+<li class=""><strong>Legacy Format Compatibility:</strong> Gracefully handles very old Excel BIFF formats to prevent runtime crashes.</li>
+<li class=""><strong>Flexible Control:</strong> Added the <code>autoStrip</code> parameter and introduced validation for maximum Sheet name length in <code>Workbook</code> constants.</li>
+<li class=""><strong>Website Experience:</strong> Added local search functionality and Matomo analytics to the official documentation, with optimized display for mobile devices.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="3-stability--robustness">3. Stability & Robustness<a href="#3-stability--robustness" class="hash-link" aria-label="Direct link to 3. Stability & Robustness" title="Direct link to 3. Stability & Robustness" translate="no"></a></h3>
+<p>We have invested heavily in quality assurance:</p>
+<ul>
+<li class=""><strong>Fuzz Testing:</strong> Added daily fuzz testing for Excel reading to proactively identify potential crashes when processing malformed files.</li>
+<li class=""><strong>Dependency Security:</strong> Upgraded core dependencies including Spring-core, Logback, Fastjson2, and POI (to 5.5.1) to resolve known vulnerabilities.</li>
+<li class=""><strong>CI/CD Optimization:</strong> Introduced Netlify preview deployments and automated workflows for closing stale issues, significantly improving community collaboration efficiency.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="key-changes-at-a-glance">Key Changes at a Glance<a href="#key-changes-at-a-glance" class="hash-link" aria-label="Direct link to Key Changes at a Glance" title="Direct link to Key Changes at a Glance" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="features"><strong>Features</strong><a href="#features" class="hash-link" aria-label="Direct link to features" title="Direct link to features" translate="no"></a></h3>
+<ul>
+<li class="">Added <code>afterSheetDispose</code> method to <code>SheetWriteHandler</code>.</li>
+<li class="">Introduced Header Merge Strategy for Excel writing.</li>
+<li class="">Added GitHub Actions for Netlify preview deployments.</li>
+<li class="">Integrated <code>docusaurus-search-local</code> for official website search.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="bugfixes"><strong>Bugfixes</strong><a href="#bugfixes" class="hash-link" aria-label="Direct link to bugfixes" title="Direct link to bugfixes" translate="no"></a></h3>
+<ul>
+<li class="">Fixed NPE in the <code>WriteSheetWorkbookWriteHandler</code> class.</li>
+<li class="">Fixed broken links and incorrect code examples in the documentation.</li>
+<li class="">Updated import statements to use the shaded <code>cglib</code> package.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="refactoring"><strong>Refactoring</strong><a href="#refactoring" class="hash-link" aria-label="Direct link to refactoring" title="Direct link to refactoring" translate="no"></a></h3>
+<ul>
+<li class="">Renamed project to Fesod/FesodSheet and updated package structures to align with Apache naming conventions.</li>
+<li class="">Implemented Spotless for automated License Header management.</li>
+<li class="">Removed outdated and incorrect <code>@since</code> tags.</li>
+</ul>
+<blockquote>
+<p>For a detailed list of changes, please refer to the <a href="https://github.com/apache/fesod/releases/tag/2.0.1-incubating" target="_blank" rel="noopener noreferrer" class="">GitHub Release Notes</a>.</p>
+</blockquote>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="acknowledgments">Acknowledgments<a href="#acknowledgments" class="hash-link" aria-label="Direct link to Acknowledgments" title="Direct link to Acknowledgments" translate="no"></a></h2>
+<p>"Community Over Code" is the core philosophy of the Apache Software Foundation. We would like to thank all the developers, mentors, and community members who contributed to this release.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="new-contributors">New Contributors<a href="#new-contributors" class="hash-link" aria-label="Direct link to New Contributors" title="Direct link to New Contributors" translate="no"></a></h3>
+<p>We would like to extend a warm welcome and a special thank you to the <strong>14 new members</strong> who made their first contribution in this release:</p>
+<blockquote>
+<p>@X-qinghai, @ngocnhan-tran1996, @YIminta, @jounghu, @wlgusqkr, @gaushon, @GOODBOY008, @ongdisheng, @harshasiddartha, @pjfanning, @liugddx, @hezhangjian, @bengbengbalabalabeng</p>
+</blockquote>
+<p>Special thanks to <strong>@delei, @psxjoy, @alaahong, @ongdisheng, @GOODBOY008</strong>, and everyone who submitted PRs and suggestions on GitHub. Your tireless efforts in renaming, compliance checking, CI optimization, and feature improvements have made Fesod's ASF debut a success.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="how-to-get-involved">How to Get Involved<a href="#how-to-get-involved" class="hash-link" aria-label="Direct link to How to Get Involved" title="Direct link to How to Get Involved" translate="no"></a></h2>
+<p>You can download and experience the new Apache Fesod (Incubating) through the following channels:</p>
+<ul>
+<li class=""><strong>Official Website:</strong> <a href="https://fesod.apache.org/" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/</a></li>
+<li class=""><strong>Source Code:</strong> <a href="https://github.com/apache/fesod" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/fesod</a></li>
+<li class=""><strong>Maven Central:</strong></li>
+</ul>
+<div class="language-xml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-xml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">depe [...]
+<p><strong>Join Us!</strong>
+The Apache Fesod (Incubating) community is always open to new contributors. You can reach out to us by subscribing to the mailing list at <code>dev@fesod.apache.org</code> or by submitting issues on GitHub.</p>
+<p>We look forward to growing together within the Apache Incubator!</p></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/announcement">announcement</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/release">release</a></li></ul></di [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/2026/02/27/welcome-new-committer/index.html b/blog/2026/02/27/welcome-new-committer/index.html
new file mode 100644
index 00000000..6df4972b
--- /dev/null
+++ b/blog/2026/02/27/welcome-new-committer/index.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Welcome Apache Fesod's New Committer | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<blockquote>
+<p>Hello everyone! It's a great honor to be invited by the Apache Fesod community to become a Committer. I'm thrilled to share my open source journey and how I got here.</p>
+</blockquote>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="self-introduction">Self-Introduction<a href="#self-introduction" class="hash-link" aria-label="Direct link to Self-Introduction" title="Direct link to Self-Introduction" translate="no"></a></h2>
+<p>My name is Zhongqiang Gong (GitHub: <a href="https://github.com/GOODBOY008" target="_blank" rel="noopener noreferrer" class="">GOODBOY008</a>). I'm a software engineer passionate about open source and the Java ecosystem, and also an <strong>Apache Flink Committer</strong> and <strong>Apache StreamPark Committer</strong>.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="first-encounter-with-apache-fesod">First Encounter with Apache Fesod<a href="#first-encounter-with-apache-fesod" class="hash-link" aria-label="Direct link to First Encounter with Apache Fesod" title="Direct link to First Encounter with Apache Fesod" translate="no"></a></h2>
+<p>I first came across Fesod in <strong>September 2025</strong>, shortly after it entered the Apache Incubation stage. As a widely adopted Java spreadsheet processing library, it already had a solid user base — but under Apache governance, the project was brimming with room to grow. That combination of real-world impact and untapped potential drew me in, and I knew I wanted to be part of shaping its future in the open.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="my-contributions">My Contributions<a href="#my-contributions" class="hash-link" aria-label="Direct link to My Contributions" title="Direct link to My Contributions" translate="no"></a></h2>
+<p>Since joining the community, my contributions have spanned six key areas:</p>
+<ul>
+<li class=""><strong>Branding</strong> — Drove the systematic FastExcel → FesodSheet transition across the entire codebase, from core classes and test suites to examples and user-facing error messages.</li>
+<li class=""><strong>Code Quality</strong> — Eliminated duplicate utility classes, streamlined Lombok usage, and refined test assertion patterns to improve maintainability.</li>
+<li class=""><strong>CI/CD</strong> — Introduced concurrency control, path-based filtering, and fork protection to GitHub Actions, making the pipeline faster and more cost-efficient.</li>
+<li class=""><strong>Documentation</strong> — Authored a bilingual migration guide (English & Chinese) and enhanced the documentation site's navigation structure.</li>
+<li class=""><strong>Testing & Performance</strong> — Established a shared testkit infrastructure that significantly reduced test duplication, and introduced JMH-based benchmarking for performance validation.</li>
+<li class=""><strong>Architecture</strong> — Proposed and led discussions on examples module restructuring, modern testing patterns, and a long-term performance testing framework.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="what-i-learned">What I Learned<a href="#what-i-learned" class="hash-link" aria-label="Direct link to What I Learned" title="Direct link to What I Learned" translate="no"></a></h2>
+<p>Contributing to Apache projects taught me three things: <strong>community over code</strong> — consensus and transparency matter more than any single PR; <strong>start small, think big</strong> — my first small CI fix (<a href="https://github.com/apache/fesod/pull/664" target="_blank" rel="noopener noreferrer" class="">#664</a>) led to deep infrastructure improvements; and <strong>quality compounds</strong> — every small cleanup adds up to a healthier codebase over time.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="advice-for-new-contributors">Advice for New Contributors<a href="#advice-for-new-contributors" class="hash-link" aria-label="Direct link to Advice for New Contributors" title="Direct link to Advice for New Contributors" translate="no"></a></h2>
+<ol>
+<li class=""><strong>Just start.</strong> Find a "good first issue" and take the first step — that's the hardest part.</li>
+<li class=""><strong>Read before you write.</strong> Understand the project's architecture and conventions first.</li>
+<li class=""><strong>Communicate openly.</strong> Clear issues and PRs earn trust faster than code alone.</li>
+<li class=""><strong>Think long-term.</strong> Proposals, docs, and infrastructure improvements are contributions too.</li>
+<li class=""><strong>Be patient.</strong> Consistency matters more than speed.</li>
+</ol>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="looking-forward">Looking Forward<a href="#looking-forward" class="hash-link" aria-label="Direct link to Looking Forward" title="Direct link to Looking Forward" translate="no"></a></h2>
+<p>Becoming a Committer is a new beginning. I'm committed to improving Fesod's code quality, mentoring new contributors, driving the benchmarking framework forward, and supporting Fesod's journey toward Apache graduation.</p></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" h [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/2026/04/29/from-user-to-committer/index.html b/blog/2026/04/29/from-user-to-committer/index.html
new file mode 100644
index 00000000..13c83ed1
--- /dev/null
+++ b/blog/2026/04/29/from-user-to-committer/index.html
@@ -0,0 +1,49 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">From User to Committer | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/blog/20 [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>Hello everyone, <code>bengbengbalabalabeng</code> here. I am incredibly honored and thrilled to share some great news with you all: I recently received an official invitation to become a Committer for the <strong>Apache Fesod (Incubating)</strong> project.</p>
+<p>From starting out as an everyday user to submitting my first bug fix, and eventually diving deep into code contributions, documentation improvements, and community support—this journey has been incredibly rewarding. I'd like to take this opportunity to document my open-source adventure so far.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="my-first-encounter-with-apache-fesod-incubating">My First Encounter with Apache Fesod (Incubating)<a href="#my-first-encounter-with-apache-fesod-incubating" class="hash-link" aria-label="Direct link to My First Encounter with Apache Fesod (Incubating)" title="Direct link to My First Encounter with Apache Fesod (Incubating)" translate="no"></a></h2>
+<p>In my work as a Java developer, I frequently encountered the need to process complex Excel files. It was while searching for an efficient solution to this challenge that I first discovered FastExcel. It quickly became an essential tool, significantly simplifying the complexity of handling Excel data in our daily development.</p>
+<p>Later on, some exciting news broke: FastExcel was being donated to the Apache Software Foundation, officially entering the incubator and rebranding as <strong>Apache Fesod (Incubating)</strong>. At that moment, I felt the project's vitality had been elevated to a whole new level. It combined the <strong>massive influence and solid user base</strong> established during the FastExcel days with the <strong>huge, untapped potential</strong> of the Apache open-source ecosystem. Seeing [...]
+<p>From there, I started following the community closely. I went from quietly lurking, to participating in Issue discussions, and finally submitting my very first PR (<a href="https://github.com/apache/fesod/pull/668" target="_blank" rel="noopener noreferrer" class="">#668</a>).</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="my-contributions">My Contributions<a href="#my-contributions" class="hash-link" aria-label="Direct link to My Contributions" title="Direct link to My Contributions" translate="no"></a></h2>
+<p>After the thrill of having my first PR merged, I stopped limiting myself to isolated bug fixes and started looking at the project from a more holistic perspective. My main areas of contribution have included:</p>
+<ul>
+<li class=""><strong>Building out the Documentation System</strong></li>
+<li class=""><strong>Bug Fixes</strong></li>
+<li class=""><strong>Improving the Testing Framework</strong></li>
+<li class=""><strong>Feature Enhancements</strong></li>
+<li class=""><strong>Community Engagement</strong></li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="my-takeaways">My Takeaways<a href="#my-takeaways" class="hash-link" aria-label="Direct link to My Takeaways" title="Direct link to My Takeaways" translate="no"></a></h2>
+<p>Throughout my involvement with Apache Fesod (Incubating), I've come to deeply realize that:</p>
+<ul>
+<li class=""><strong>Open source is about collaboration, not just writing code.</strong> Every single step—Issues, PRs, Code Reviews, and discussions—requires clear communication and patience.</li>
+<li class=""><strong>Small contributions can make a massive impact.</strong> Fixing a simple typo or adding a code snippet can potentially help thousands of users.</li>
+<li class=""><strong>The power of the community far exceeds that of any individual.</strong> Every discussion and every consensus reached makes the project that much better.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="looking-ahead">Looking Ahead<a href="#looking-ahead" class="hash-link" aria-label="Direct link to Looking Ahead" title="Direct link to Looking Ahead" translate="no"></a></h2>
+<p>Becoming a Committer is by no means the finish line; rather, it is a brand-new starting point. It comes with greater responsibilities and higher expectations. I am incredibly excited to continue working alongside the community to make Apache Fesod (Incubating) even better.</p></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel= [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/2026/05/07/migration-from-fastexcel-with-openrewrite/index.html b/blog/2026/05/07/migration-from-fastexcel-with-openrewrite/index.html
new file mode 100644
index 00000000..eec2c92c
--- /dev/null
+++ b/blog/2026/05/07/migration-from-fastexcel-with-openrewrite/index.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Automated Migration from FastExcel 1.3.0 to Apache Fesod (Incubating) with OpenRewrite | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="t [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This article demonstrates how to write a declarative OpenRewrite recipe that migrates your project from <code>cn.idev.excel:fastexcel:1.3.0</code> to <code>org.apache.fesod:fesod-sheet:2.0.1-incubating</code>, covering both Maven and Gradle builds.</p>
+</blockquote>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="background">Background<a href="#background" class="hash-link" aria-label="Direct link to Background" title="Direct link to Background" translate="no"></a></h2>
+<p>FastExcel (<code>cn.idev.excel</code>) has been donated to the Apache Software Foundation and is now incubating as <strong>Apache Fesod (Incubating)</strong>. The core change is a <strong>Java package path replacement</strong> — the API, annotations, and processing logic remain identical, making this a low-risk, mechanical refactoring.</p>
+<p>For the official migration strategy, see: <a href="https://fesod.apache.org/docs/migration/from-fastexcel/" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/docs/migration/from-fastexcel/</a></p>
+<p>Manually replacing imports file by file is tedious and error-prone. OpenRewrite provides AST-level code transformation capabilities to perform this kind of bulk migration precisely and safely.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="migration-scope">Migration Scope<a href="#migration-scope" class="hash-link" aria-label="Direct link to Migration Scope" title="Direct link to Migration Scope" translate="no"></a></h2>
+<ol>
+<li class="">Update Maven/Gradle dependencies</li>
+<li class="">Replace deprecated class names with <code>FesodSheet</code></li>
+<li class="">Update package imports</li>
+</ol>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="writing-the-openrewrite-recipe">Writing the OpenRewrite Recipe<a href="#writing-the-openrewrite-recipe" class="hash-link" aria-label="Direct link to Writing the OpenRewrite Recipe" title="Direct link to Writing the OpenRewrite Recipe" translate="no"></a></h2>
+<p>Create a <code>rewrite.yml</code> file in your project root:</p>
+<div class="language-yaml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-yaml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span cla [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="how-it-works">How It Works<a href="#how-it-works" class="hash-link" aria-label="Direct link to How It Works" title="Direct link to How It Works" translate="no"></a></h3>
+<p>The recipe executes steps sequentially in declaration order:</p>
+<p><strong>Step 1 — Update Dependencies</strong>: The first rule updates <code>pom.xml</code> for Maven projects; the second rule updates <code>build.gradle</code> / <code>build.gradle.kts</code> for Gradle projects. If your project uses only one build tool, the other rule is silently skipped.</p>
+<p><strong>Step 2 — Package Import Updates</strong>: <code>ChangePackage(recursive=true)</code> covers all sub-packages under <code>cn.idev.excel</code> (annotation, read, write, converters, enums, etc.) in a single rule — no need to enumerate each one individually. The second rule handles legacy code that was already partially migrated to <code>org.apache.fesod.excel</code>. After this step, imports like <code>cn.idev.excel.FastExcel</code> become <code>org.apache.fesod.sheet.FastExcel< [...]
+<p><strong>Step 3 — Entry Class Rename</strong>: Once Step 2 completes, all <code>FastExcel</code> and <code>FastExcelFactory</code> imports are unified under <code>org.apache.fesod.sheet</code>. Only two <code>ChangeType</code> rules are needed to rename them to the canonical <code>FesodSheet</code> class, automatically updating all call sites (<code>FastExcel.read()</code>, <code>FastExcel.write()</code>, etc.) and type references (variable declarations, class literals).</p>
+<p><strong>Step 4 — CGLIB String Replacement</strong>: Only affects code that references CGLIB-generated class names at runtime. Most projects don't need this step — the rule is silently skipped if there's no match.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="adding-openrewrite-to-your-project">Adding OpenRewrite to Your Project<a href="#adding-openrewrite-to-your-project" class="hash-link" aria-label="Direct link to Adding OpenRewrite to Your Project" title="Direct link to Adding OpenRewrite to Your Project" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="maven">Maven<a href="#maven" class="hash-link" aria-label="Direct link to Maven" title="Direct link to Maven" translate="no"></a></h3>
+<p>Add the plugin to <code>pom.xml</code>:</p>
+<div class="language-xml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-xml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">plug [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="gradle-groovy">Gradle (Groovy)<a href="#gradle-groovy" class="hash-link" aria-label="Direct link to Gradle (Groovy)" title="Direct link to Gradle (Groovy)" translate="no"></a></h3>
+<p>Add to <code>build.gradle</code>:</p>
+<div class="language-groovy codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-groovy codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">plugins {</span><br></span><span class="token-line" style="color:#393A34"><span class=" [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="gradle-kotlin">Gradle (Kotlin)<a href="#gradle-kotlin" class="hash-link" aria-label="Direct link to Gradle (Kotlin)" title="Direct link to Gradle (Kotlin)" translate="no"></a></h3>
+<p>Add to <code>build.gradle.kts</code>:</p>
+<div class="language-kotlin codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-kotlin codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">plugins </span><span class="token punctuation" style="color:#393A34">{</span><span clas [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="running-the-migration">Running the Migration<a href="#running-the-migration" class="hash-link" aria-label="Direct link to Running the Migration" title="Direct link to Running the Migration" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="preview-changes">Preview Changes<a href="#preview-changes" class="hash-link" aria-label="Direct link to Preview Changes" title="Direct link to Preview Changes" translate="no"></a></h3>
+<p>View what the recipe would change without modifying files:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Maven</span><span class="token plain"></span><b [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="apply-changes">Apply Changes<a href="#apply-changes" class="hash-link" aria-label="Direct link to Apply Changes" title="Direct link to Apply Changes" translate="no"></a></h3>
+<p>Once satisfied with the preview, apply the changes:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Maven</span><span class="token plain"></span><b [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="verify">Verify<a href="#verify" class="hash-link" aria-label="Direct link to Verify" title="Direct link to Verify" translate="no"></a></h3>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Compile check</span><span class="token plain">< [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="before-and-after">Before and After<a href="#before-and-after" class="hash-link" aria-label="Direct link to Before and After" title="Direct link to Before and After" translate="no"></a></h2>
+<p>Before migration:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token i [...]
+<p>After migration:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token i [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="references">References<a href="#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References" translate="no"></a></h2>
+<ul>
+<li class="">Apache Fesod (Incubating) Official Migration Guide: <a href="https://fesod.apache.org/docs/migration/from-fastexcel/" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/docs/migration/from-fastexcel/</a></li>
+<li class="">OpenRewrite Documentation: <a href="https://docs.openrewrite.org/" target="_blank" rel="noopener noreferrer" class="">https://docs.openrewrite.org/</a></li>
+<li class="">OpenRewrite Recipe Reference: <a href="https://docs.openrewrite.org/recipes" target="_blank" rel="noopener noreferrer" class="">https://docs.openrewrite.org/recipes</a></li>
+</ul></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/migration">migration</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/fastexcel">fastexcel</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blo [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/2026/06/11/cve-2026-49328/index.html b/blog/2026/06/11/cve-2026-49328/index.html
new file mode 100644
index 00000000..594dba44
--- /dev/null
+++ b/blog/2026/06/11/cve-2026-49328/index.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">CVE-2026-49328 - Apache Fesod (Incubating): Improper validation of user-supplied URLs leading to SSRF | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg">< [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="description">Description<a href="#description" class="hash-link" aria-label="Direct link to Description" title="Direct link to Description" translate="no"></a></h2>
+<p>Server-Side Request Forgery (SSRF) in the <code>UrlImageConverter</code> component of Apache Fesod (Incubating) <code>fesod-sheet</code> allows attackers to cause outbound network requests to internal or otherwise restricted resources via a user-supplied image URL.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="affected-modules-and-versions">Affected Modules and Versions<a href="#affected-modules-and-versions" class="hash-link" aria-label="Direct link to Affected Modules and Versions" title="Direct link to Affected Modules and Versions" translate="no"></a></h2>
+<p>Fesod Spreadsheet (<code>fesod-sheet</code>):</p>
+<ul>
+<li class="">2.0.1-incubating</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="mitigation">Mitigation<a href="#mitigation" class="hash-link" aria-label="Direct link to Mitigation" title="Direct link to Mitigation" translate="no"></a></h2>
+<p>Users of affected versions should upgrade to the corresponding fixed version.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Affected version(s)</th><th>Fix version</th></tr></thead><tbody><tr><td>2.0.1-incubating</td><td>2.0.2-incubating</td></tr></tbody></table>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="references">References<a href="#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References" translate="no"></a></h2>
+<ul>
+<li class=""><a href="https://github.com/apache/fesod/pull/917" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/fesod/pull/917</a></li>
+<li class=""><a href="https://github.com/apache/fesod/releases/tag/2.0.2-incubating" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/fesod/releases/tag/2.0.2-incubating</a></li>
+<li class=""><a href="https://fesod.apache.org/docs/download" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/docs/download</a></li>
+<li class=""><a href="https://lists.apache.org/thread/c1pb5b66h02p9tlrnfbwcgcz85v16fkj" target="_blank" rel="noopener noreferrer" class="">https://lists.apache.org/thread/c1pb5b66h02p9tlrnfbwcgcz85v16fkj</a></li>
+</ul></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/announcement">announcement</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/security">security</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href=" [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
new file mode 100644
index 00000000..0ae26f3a
--- /dev/null
+++ b/blog/archive/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Archive | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/blog/archive"><meta da [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/atom.xml b/blog/atom.xml
new file mode 100644
index 00000000..50ff76cf
--- /dev/null
+++ b/blog/atom.xml
@@ -0,0 +1,376 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+ <id>https://fesod.apache.org/blog</id>
+ <title>Apache Fesod (Incubating) Blog</title>
+ <updated>2026-06-11T00:00:00.000Z</updated>
+ <generator>https://github.com/jpmonette/feed</generator>
+ <link rel="alternate" href="https://fesod.apache.org/blog"/>
+ <subtitle>Apache Fesod (Incubating) Blog</subtitle>
+ <icon>https://fesod.apache.org/img/favicon.ico</icon>
+ <entry>
+ <title type="html"><![CDATA[CVE-2026-49328 - Apache Fesod (Incubating): Improper validation of user-supplied URLs leading to SSRF]]></title>
+ <id>https://fesod.apache.org/blog/2026/06/11/cve-2026-49328</id>
+ <link href="https://fesod.apache.org/blog/2026/06/11/cve-2026-49328"/>
+ <updated>2026-06-11T00:00:00.000Z</updated>
+ <summary type="html"><![CDATA[Security advisory for CVE-2026-49328.]]></summary>
+ <content type="html"><![CDATA[<p>Security advisory for <strong>CVE-2026-49328</strong> regarding Server-Side Request Forgery (SSRF) in Apache Fesod (Incubating).</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="description">Description<a href="https://fesod.apache.org/blog/2026/06/11/cve-2026-49328#description" class="hash-link" aria-label="Direct link to Description" title="Direct link to Description" translate="no"></a></h2>
+<p>Server-Side Request Forgery (SSRF) in the <code>UrlImageConverter</code> component of Apache Fesod (Incubating) <code>fesod-sheet</code> allows attackers to cause outbound network requests to internal or otherwise restricted resources via a user-supplied image URL.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="affected-modules-and-versions">Affected Modules and Versions<a href="https://fesod.apache.org/blog/2026/06/11/cve-2026-49328#affected-modules-and-versions" class="hash-link" aria-label="Direct link to Affected Modules and Versions" title="Direct link to Affected Modules and Versions" translate="no"></a></h2>
+<p>Fesod Spreadsheet (<code>fesod-sheet</code>):</p>
+<ul>
+<li class="">2.0.1-incubating</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="mitigation">Mitigation<a href="https://fesod.apache.org/blog/2026/06/11/cve-2026-49328#mitigation" class="hash-link" aria-label="Direct link to Mitigation" title="Direct link to Mitigation" translate="no"></a></h2>
+<p>Users of affected versions should upgrade to the corresponding fixed version.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Affected version(s)</th><th>Fix version</th></tr></thead><tbody><tr><td>2.0.1-incubating</td><td>2.0.2-incubating</td></tr></tbody></table>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="references">References<a href="https://fesod.apache.org/blog/2026/06/11/cve-2026-49328#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References" translate="no"></a></h2>
+<ul>
+<li class=""><a href="https://github.com/apache/fesod/pull/917" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/fesod/pull/917</a></li>
+<li class=""><a href="https://github.com/apache/fesod/releases/tag/2.0.2-incubating" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/fesod/releases/tag/2.0.2-incubating</a></li>
+<li class=""><a href="https://fesod.apache.org/docs/download" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/docs/download</a></li>
+<li class=""><a href="https://lists.apache.org/thread/c1pb5b66h02p9tlrnfbwcgcz85v16fkj" target="_blank" rel="noopener noreferrer" class="">https://lists.apache.org/thread/c1pb5b66h02p9tlrnfbwcgcz85v16fkj</a></li>
+</ul>]]></content>
+ <category label="announcement" term="announcement"/>
+ <category label="security" term="security"/>
+ <category label="CVE-2026-49328" term="CVE-2026-49328"/>
+ </entry>
+ <entry>
+ <title type="html"><![CDATA[Automated Migration from FastExcel 1.3.0 to Apache Fesod (Incubating) with OpenRewrite]]></title>
+ <id>https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite</id>
+ <link href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite"/>
+ <updated>2026-05-07T00:00:00.000Z</updated>
+ <summary type="html"><![CDATA[Migrate FastExcel 1.3 to Apache Fesod (Incubating) 2.0.1-incubating]]></summary>
+ <content type="html"><![CDATA[<blockquote>
+<p>This article demonstrates how to write a declarative OpenRewrite recipe that migrates your project from <code>cn.idev.excel:fastexcel:1.3.0</code> to <code>org.apache.fesod:fesod-sheet:2.0.1-incubating</code>, covering both Maven and Gradle builds.</p>
+</blockquote>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="background">Background<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#background" class="hash-link" aria-label="Direct link to Background" title="Direct link to Background" translate="no"></a></h2>
+<p>FastExcel (<code>cn.idev.excel</code>) has been donated to the Apache Software Foundation and is now incubating as <strong>Apache Fesod (Incubating)</strong>. The core change is a <strong>Java package path replacement</strong> — the API, annotations, and processing logic remain identical, making this a low-risk, mechanical refactoring.</p>
+<p>For the official migration strategy, see: <a href="https://fesod.apache.org/docs/migration/from-fastexcel/" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/docs/migration/from-fastexcel/</a></p>
+<p>Manually replacing imports file by file is tedious and error-prone. OpenRewrite provides AST-level code transformation capabilities to perform this kind of bulk migration precisely and safely.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="migration-scope">Migration Scope<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#migration-scope" class="hash-link" aria-label="Direct link to Migration Scope" title="Direct link to Migration Scope" translate="no"></a></h2>
+<ol>
+<li class="">Update Maven/Gradle dependencies</li>
+<li class="">Replace deprecated class names with <code>FesodSheet</code></li>
+<li class="">Update package imports</li>
+</ol>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="writing-the-openrewrite-recipe">Writing the OpenRewrite Recipe<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#writing-the-openrewrite-recipe" class="hash-link" aria-label="Direct link to Writing the OpenRewrite Recipe" title="Direct link to Writing the OpenRewrite Recipe" translate="no"></a></h2>
+<p>Create a <code>rewrite.yml</code> file in your project root:</p>
+<div class="language-yaml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-yaml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span cla [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="how-it-works">How It Works<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#how-it-works" class="hash-link" aria-label="Direct link to How It Works" title="Direct link to How It Works" translate="no"></a></h3>
+<p>The recipe executes steps sequentially in declaration order:</p>
+<p><strong>Step 1 — Update Dependencies</strong>: The first rule updates <code>pom.xml</code> for Maven projects; the second rule updates <code>build.gradle</code> / <code>build.gradle.kts</code> for Gradle projects. If your project uses only one build tool, the other rule is silently skipped.</p>
+<p><strong>Step 2 — Package Import Updates</strong>: <code>ChangePackage(recursive=true)</code> covers all sub-packages under <code>cn.idev.excel</code> (annotation, read, write, converters, enums, etc.) in a single rule — no need to enumerate each one individually. The second rule handles legacy code that was already partially migrated to <code>org.apache.fesod.excel</code>. After this step, imports like <code>cn.idev.excel.FastExcel</code> become <code>org.apache.fesod.sheet.FastExcel< [...]
+<p><strong>Step 3 — Entry Class Rename</strong>: Once Step 2 completes, all <code>FastExcel</code> and <code>FastExcelFactory</code> imports are unified under <code>org.apache.fesod.sheet</code>. Only two <code>ChangeType</code> rules are needed to rename them to the canonical <code>FesodSheet</code> class, automatically updating all call sites (<code>FastExcel.read()</code>, <code>FastExcel.write()</code>, etc.) and type references (variable declarations, class literals).</p>
+<p><strong>Step 4 — CGLIB String Replacement</strong>: Only affects code that references CGLIB-generated class names at runtime. Most projects don't need this step — the rule is silently skipped if there's no match.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="adding-openrewrite-to-your-project">Adding OpenRewrite to Your Project<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#adding-openrewrite-to-your-project" class="hash-link" aria-label="Direct link to Adding OpenRewrite to Your Project" title="Direct link to Adding OpenRewrite to Your Project" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="maven">Maven<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#maven" class="hash-link" aria-label="Direct link to Maven" title="Direct link to Maven" translate="no"></a></h3>
+<p>Add the plugin to <code>pom.xml</code>:</p>
+<div class="language-xml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-xml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">plug [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="gradle-groovy">Gradle (Groovy)<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#gradle-groovy" class="hash-link" aria-label="Direct link to Gradle (Groovy)" title="Direct link to Gradle (Groovy)" translate="no"></a></h3>
+<p>Add to <code>build.gradle</code>:</p>
+<div class="language-groovy codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-groovy codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">plugins {</span><br></span><span class="token-line" style="color:#393A34"><span class=" [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="gradle-kotlin">Gradle (Kotlin)<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#gradle-kotlin" class="hash-link" aria-label="Direct link to Gradle (Kotlin)" title="Direct link to Gradle (Kotlin)" translate="no"></a></h3>
+<p>Add to <code>build.gradle.kts</code>:</p>
+<div class="language-kotlin codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-kotlin codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">plugins </span><span class="token punctuation" style="color:#393A34">{</span><span clas [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="running-the-migration">Running the Migration<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#running-the-migration" class="hash-link" aria-label="Direct link to Running the Migration" title="Direct link to Running the Migration" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="preview-changes">Preview Changes<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#preview-changes" class="hash-link" aria-label="Direct link to Preview Changes" title="Direct link to Preview Changes" translate="no"></a></h3>
+<p>View what the recipe would change without modifying files:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Maven</span><span class="token plain"></span><b [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="apply-changes">Apply Changes<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#apply-changes" class="hash-link" aria-label="Direct link to Apply Changes" title="Direct link to Apply Changes" translate="no"></a></h3>
+<p>Once satisfied with the preview, apply the changes:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Maven</span><span class="token plain"></span><b [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="verify">Verify<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#verify" class="hash-link" aria-label="Direct link to Verify" title="Direct link to Verify" translate="no"></a></h3>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Compile check</span><span class="token plain">< [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="before-and-after">Before and After<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#before-and-after" class="hash-link" aria-label="Direct link to Before and After" title="Direct link to Before and After" translate="no"></a></h2>
+<p>Before migration:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token i [...]
+<p>After migration:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token i [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="references">References<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References" translate="no"></a></h2>
+<ul>
+<li class="">Apache Fesod (Incubating) Official Migration Guide: <a href="https://fesod.apache.org/docs/migration/from-fastexcel/" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/docs/migration/from-fastexcel/</a></li>
+<li class="">OpenRewrite Documentation: <a href="https://docs.openrewrite.org/" target="_blank" rel="noopener noreferrer" class="">https://docs.openrewrite.org/</a></li>
+<li class="">OpenRewrite Recipe Reference: <a href="https://docs.openrewrite.org/recipes" target="_blank" rel="noopener noreferrer" class="">https://docs.openrewrite.org/recipes</a></li>
+</ul>]]></content>
+ <author>
+ <name>Jing Yang</name>
+ <uri>https://github.com/bengbengbalabalabeng</uri>
+ </author>
+ <category label="migration" term="migration"/>
+ <category label="fastexcel" term="fastexcel"/>
+ <category label="fesod" term="fesod"/>
+ </entry>
+ <entry>
+ <title type="html"><![CDATA[From User to Committer]]></title>
+ <id>https://fesod.apache.org/blog/2026/04/29/from-user-to-committer</id>
+ <link href="https://fesod.apache.org/blog/2026/04/29/from-user-to-committer"/>
+ <updated>2026-04-29T00:00:00.000Z</updated>
+ <summary type="html"><![CDATA[From User to Committer]]></summary>
+ <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="Apache Fesod New Committer" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzIuMjUiIGhlaWdodD0iMjgiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQVBBQ0hFIEZFU09EOiBORVcgQ09NTUlUVEVSIj4KICAgIDx0aXRsZT5BUEFDSEUgRkVTT0Q6IE5FVyBDT01NSVRURVI8L3RpdGxlPgogICAgPGcgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj4KICAgICAgICA8cmVjdCB3aWR0aD0iMTM0IiBoZWlnaHQ9IjI4IiBmaWxsPSIjNTU1Ii8+CiAgICAgIC [...]
+<p>Hello everyone, <code>bengbengbalabalabeng</code> here. I am incredibly honored and thrilled to share some great news with you all: I recently received an official invitation to become a Committer for the <strong>Apache Fesod (Incubating)</strong> project.</p>
+<p>From starting out as an everyday user to submitting my first bug fix, and eventually diving deep into code contributions, documentation improvements, and community support—this journey has been incredibly rewarding. I'd like to take this opportunity to document my open-source adventure so far.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="my-first-encounter-with-apache-fesod-incubating">My First Encounter with Apache Fesod (Incubating)<a href="https://fesod.apache.org/blog/2026/04/29/from-user-to-committer#my-first-encounter-with-apache-fesod-incubating" class="hash-link" aria-label="Direct link to My First Encounter with Apache Fesod (Incubating)" title="Direct link to My First Encounter with Apache Fesod (Incubating)" translate="no"></a></h2>
+<p>In my work as a Java developer, I frequently encountered the need to process complex Excel files. It was while searching for an efficient solution to this challenge that I first discovered FastExcel. It quickly became an essential tool, significantly simplifying the complexity of handling Excel data in our daily development.</p>
+<p>Later on, some exciting news broke: FastExcel was being donated to the Apache Software Foundation, officially entering the incubator and rebranding as <strong>Apache Fesod (Incubating)</strong>. At that moment, I felt the project's vitality had been elevated to a whole new level. It combined the <strong>massive influence and solid user base</strong> established during the FastExcel days with the <strong>huge, untapped potential</strong> of the Apache open-source ecosystem. Seeing such [...]
+<p>From there, I started following the community closely. I went from quietly lurking, to participating in Issue discussions, and finally submitting my very first PR (<a href="https://github.com/apache/fesod/pull/668" target="_blank" rel="noopener noreferrer" class="">#668</a>).</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="my-contributions">My Contributions<a href="https://fesod.apache.org/blog/2026/04/29/from-user-to-committer#my-contributions" class="hash-link" aria-label="Direct link to My Contributions" title="Direct link to My Contributions" translate="no"></a></h2>
+<p>After the thrill of having my first PR merged, I stopped limiting myself to isolated bug fixes and started looking at the project from a more holistic perspective. My main areas of contribution have included:</p>
+<ul>
+<li class=""><strong>Building out the Documentation System</strong></li>
+<li class=""><strong>Bug Fixes</strong></li>
+<li class=""><strong>Improving the Testing Framework</strong></li>
+<li class=""><strong>Feature Enhancements</strong></li>
+<li class=""><strong>Community Engagement</strong></li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="my-takeaways">My Takeaways<a href="https://fesod.apache.org/blog/2026/04/29/from-user-to-committer#my-takeaways" class="hash-link" aria-label="Direct link to My Takeaways" title="Direct link to My Takeaways" translate="no"></a></h2>
+<p>Throughout my involvement with Apache Fesod (Incubating), I've come to deeply realize that:</p>
+<ul>
+<li class=""><strong>Open source is about collaboration, not just writing code.</strong> Every single step—Issues, PRs, Code Reviews, and discussions—requires clear communication and patience.</li>
+<li class=""><strong>Small contributions can make a massive impact.</strong> Fixing a simple typo or adding a code snippet can potentially help thousands of users.</li>
+<li class=""><strong>The power of the community far exceeds that of any individual.</strong> Every discussion and every consensus reached makes the project that much better.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="looking-ahead">Looking Ahead<a href="https://fesod.apache.org/blog/2026/04/29/from-user-to-committer#looking-ahead" class="hash-link" aria-label="Direct link to Looking Ahead" title="Direct link to Looking Ahead" translate="no"></a></h2>
+<p>Becoming a Committer is by no means the finish line; rather, it is a brand-new starting point. It comes with greater responsibilities and higher expectations. I am incredibly excited to continue working alongside the community to make Apache Fesod (Incubating) even better.</p>]]></content>
+ <author>
+ <name>Jing Yang</name>
+ <uri>https://github.com/bengbengbalabalabeng</uri>
+ </author>
+ <category label="opensource" term="opensource"/>
+ <category label="apache" term="apache"/>
+ <category label="committer" term="committer"/>
+ <category label="fesod" term="fesod"/>
+ </entry>
+ <entry>
+ <title type="html"><![CDATA[Apache Fesod (Incubating) 2.0.1-incubating Officially Released]]></title>
+ <id>https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released</id>
+ <link href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released"/>
+ <updated>2026-02-27T00:00:00.000Z</updated>
+ <summary type="html"><![CDATA[The Apache Fesod community is pleased to announce the official release of Apache Fesod (Incubating) 2.0.1-incubating.]]></summary>
+ <content type="html"><![CDATA[<p><strong>February 2026</strong> — The Apache Fesod (Incubating) community is pleased to announce the official release of <strong>Apache Fesod (Incubating) 2.0.1-incubating</strong>.</p>
+<p>This is not only a technical iteration but also a significant milestone: <strong>the first official release of Fesod since joining the Apache Software Foundation (ASF) Incubator.</strong> Over the past few months, the community has collaboratively completed extensive compliance improvements, architectural refactoring, and functional enhancements. This release marks Fesod’s readiness to embark on a new chapter of high-performance Excel processing under the ASF governance.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="milestone-significance-the-first-official-asf-release">Milestone Significance: The First Official ASF Release<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#milestone-significance-the-first-official-asf-release" class="hash-link" aria-label="Direct link to Milestone Significance: The First Official ASF Release" title="Direct link to Milestone Significance: The First Official ASF Release" transla [...]
+<p>As our "debut" in the incubator, version 2.0.1 represents a decisive step forward in embracing <strong>"The Apache Way"</strong>:</p>
+<ul>
+<li class=""><strong>Comprehensive Renaming & Compliance:</strong> We have completed the full transition from <code>FastExcel</code> to <code>Fesod</code> (including package names, class names, and documentation) to ensure the brand is fully protected under the ASF.</li>
+<li class=""><strong>Compliance Completion:</strong> We have introduced the <code>DISCLAIMER</code>, <code>NOTICE</code>, and <code>support</code> modules, and implemented automated License Header management via Spotless, fully aligning with ASF policies.</li>
+<li class=""><strong>Community Governance:</strong> All code merges and release processes were conducted through public discussion and voting on the mailing lists, reflecting the principles of openness and transparency.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="key-highlights">Key Highlights<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#key-highlights" class="hash-link" aria-label="Direct link to Key Highlights" title="Direct link to Key Highlights" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="1-deep-architectural-refactoring">1. Deep Architectural Refactoring<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#1-deep-architectural-refactoring" class="hash-link" aria-label="Direct link to 1. Deep Architectural Refactoring" title="Direct link to 1. Deep Architectural Refactoring" translate="no"></a></h3>
+<p>To support long-term sustainability, we have significantly optimized the project structure:</p>
+<ul>
+<li class=""><strong>Multi-module Architecture:</strong> Introduced a multi-module structure for clearer hierarchy and finer dependency management.</li>
+<li class=""><strong>Distribution Enhancement:</strong> Added the <code>fesod-distribution</code> module to standardize the description and building of distribution packages.</li>
+<li class=""><strong>JDK 25 Support:</strong> Keeping pace with the Java ecosystem, we have officially added compatibility and support for <strong>JDK 25</strong>.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="2-new-features">2. New Features<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#2-new-features" class="hash-link" aria-label="Direct link to 2. New Features" title="Direct link to 2. New Features" translate="no"></a></h3>
+<p>This release introduces several practical features to enhance the flexibility of Excel processing:</p>
+<ul>
+<li class=""><strong>Enhanced Excel Processing:</strong> Added the <code>afterSheetDispose</code> lifecycle method in <code>SheetWriteHandler</code> and introduced a brand-new <strong>Header Merge Strategy</strong>.</li>
+<li class=""><strong>Legacy Format Compatibility:</strong> Gracefully handles very old Excel BIFF formats to prevent runtime crashes.</li>
+<li class=""><strong>Flexible Control:</strong> Added the <code>autoStrip</code> parameter and introduced validation for maximum Sheet name length in <code>Workbook</code> constants.</li>
+<li class=""><strong>Website Experience:</strong> Added local search functionality and Matomo analytics to the official documentation, with optimized display for mobile devices.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="3-stability--robustness">3. Stability & Robustness<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#3-stability--robustness" class="hash-link" aria-label="Direct link to 3. Stability & Robustness" title="Direct link to 3. Stability & Robustness" translate="no"></a></h3>
+<p>We have invested heavily in quality assurance:</p>
+<ul>
+<li class=""><strong>Fuzz Testing:</strong> Added daily fuzz testing for Excel reading to proactively identify potential crashes when processing malformed files.</li>
+<li class=""><strong>Dependency Security:</strong> Upgraded core dependencies including Spring-core, Logback, Fastjson2, and POI (to 5.5.1) to resolve known vulnerabilities.</li>
+<li class=""><strong>CI/CD Optimization:</strong> Introduced Netlify preview deployments and automated workflows for closing stale issues, significantly improving community collaboration efficiency.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="key-changes-at-a-glance">Key Changes at a Glance<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#key-changes-at-a-glance" class="hash-link" aria-label="Direct link to Key Changes at a Glance" title="Direct link to Key Changes at a Glance" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="features"><strong>Features</strong><a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#features" class="hash-link" aria-label="Direct link to features" title="Direct link to features" translate="no"></a></h3>
+<ul>
+<li class="">Added <code>afterSheetDispose</code> method to <code>SheetWriteHandler</code>.</li>
+<li class="">Introduced Header Merge Strategy for Excel writing.</li>
+<li class="">Added GitHub Actions for Netlify preview deployments.</li>
+<li class="">Integrated <code>docusaurus-search-local</code> for official website search.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="bugfixes"><strong>Bugfixes</strong><a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#bugfixes" class="hash-link" aria-label="Direct link to bugfixes" title="Direct link to bugfixes" translate="no"></a></h3>
+<ul>
+<li class="">Fixed NPE in the <code>WriteSheetWorkbookWriteHandler</code> class.</li>
+<li class="">Fixed broken links and incorrect code examples in the documentation.</li>
+<li class="">Updated import statements to use the shaded <code>cglib</code> package.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="refactoring"><strong>Refactoring</strong><a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#refactoring" class="hash-link" aria-label="Direct link to refactoring" title="Direct link to refactoring" translate="no"></a></h3>
+<ul>
+<li class="">Renamed project to Fesod/FesodSheet and updated package structures to align with Apache naming conventions.</li>
+<li class="">Implemented Spotless for automated License Header management.</li>
+<li class="">Removed outdated and incorrect <code>@since</code> tags.</li>
+</ul>
+<blockquote>
+<p>For a detailed list of changes, please refer to the <a href="https://github.com/apache/fesod/releases/tag/2.0.1-incubating" target="_blank" rel="noopener noreferrer" class="">GitHub Release Notes</a>.</p>
+</blockquote>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="acknowledgments">Acknowledgments<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#acknowledgments" class="hash-link" aria-label="Direct link to Acknowledgments" title="Direct link to Acknowledgments" translate="no"></a></h2>
+<p>"Community Over Code" is the core philosophy of the Apache Software Foundation. We would like to thank all the developers, mentors, and community members who contributed to this release.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="new-contributors">New Contributors<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#new-contributors" class="hash-link" aria-label="Direct link to New Contributors" title="Direct link to New Contributors" translate="no"></a></h3>
+<p>We would like to extend a warm welcome and a special thank you to the <strong>14 new members</strong> who made their first contribution in this release:</p>
+<blockquote>
+<p>@X-qinghai, @ngocnhan-tran1996, @YIminta, @jounghu, @wlgusqkr, @gaushon, @GOODBOY008, @ongdisheng, @harshasiddartha, @pjfanning, @liugddx, @hezhangjian, @bengbengbalabalabeng</p>
+</blockquote>
+<p>Special thanks to <strong>@delei, @psxjoy, @alaahong, @ongdisheng, @GOODBOY008</strong>, and everyone who submitted PRs and suggestions on GitHub. Your tireless efforts in renaming, compliance checking, CI optimization, and feature improvements have made Fesod's ASF debut a success.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="how-to-get-involved">How to Get Involved<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#how-to-get-involved" class="hash-link" aria-label="Direct link to How to Get Involved" title="Direct link to How to Get Involved" translate="no"></a></h2>
+<p>You can download and experience the new Apache Fesod (Incubating) through the following channels:</p>
+<ul>
+<li class=""><strong>Official Website:</strong> <a href="https://fesod.apache.org/" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/</a></li>
+<li class=""><strong>Source Code:</strong> <a href="https://github.com/apache/fesod" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/fesod</a></li>
+<li class=""><strong>Maven Central:</strong></li>
+</ul>
+<div class="language-xml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-xml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">depe [...]
+<p><strong>Join Us!</strong>
+The Apache Fesod (Incubating) community is always open to new contributors. You can reach out to us by subscribing to the mailing list at <code>dev@fesod.apache.org</code> or by submitting issues on GitHub.</p>
+<p>We look forward to growing together within the Apache Incubator!</p>]]></content>
+ <author>
+ <name>Shuxin Pan</name>
+ <uri>https://github.com/psxjoy</uri>
+ </author>
+ <category label="announcement" term="announcement"/>
+ <category label="release" term="release"/>
+ </entry>
+ <entry>
+ <title type="html"><![CDATA[Welcome Apache Fesod's New Committer]]></title>
+ <id>https://fesod.apache.org/blog/2026/02/27/welcome-new-committer</id>
+ <link href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer"/>
+ <updated>2026-02-27T00:00:00.000Z</updated>
+ <summary type="html"><![CDATA[Welcome Apache Fesod's New Committer]]></summary>
+ <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="Apache Fesod New Committer" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzIuMjUiIGhlaWdodD0iMjgiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQVBBQ0hFIEZFU09EOiBORVcgQ09NTUlUVEVSIj4KICAgIDx0aXRsZT5BUEFDSEUgRkVTT0Q6IE5FVyBDT01NSVRURVI8L3RpdGxlPgogICAgPGcgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj4KICAgICAgICA8cmVjdCB3aWR0aD0iMTM0IiBoZWlnaHQ9IjI4IiBmaWxsPSIjNTU1Ii8+CiAgICAgIC [...]
+<blockquote>
+<p>Hello everyone! It's a great honor to be invited by the Apache Fesod community to become a Committer. I'm thrilled to share my open source journey and how I got here.</p>
+</blockquote>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="self-introduction">Self-Introduction<a href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer#self-introduction" class="hash-link" aria-label="Direct link to Self-Introduction" title="Direct link to Self-Introduction" translate="no"></a></h2>
+<p>My name is Zhongqiang Gong (GitHub: <a href="https://github.com/GOODBOY008" target="_blank" rel="noopener noreferrer" class="">GOODBOY008</a>). I'm a software engineer passionate about open source and the Java ecosystem, and also an <strong>Apache Flink Committer</strong> and <strong>Apache StreamPark Committer</strong>.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="first-encounter-with-apache-fesod">First Encounter with Apache Fesod<a href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer#first-encounter-with-apache-fesod" class="hash-link" aria-label="Direct link to First Encounter with Apache Fesod" title="Direct link to First Encounter with Apache Fesod" translate="no"></a></h2>
+<p>I first came across Fesod in <strong>September 2025</strong>, shortly after it entered the Apache Incubation stage. As a widely adopted Java spreadsheet processing library, it already had a solid user base — but under Apache governance, the project was brimming with room to grow. That combination of real-world impact and untapped potential drew me in, and I knew I wanted to be part of shaping its future in the open.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="my-contributions">My Contributions<a href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer#my-contributions" class="hash-link" aria-label="Direct link to My Contributions" title="Direct link to My Contributions" translate="no"></a></h2>
+<p>Since joining the community, my contributions have spanned six key areas:</p>
+<ul>
+<li class=""><strong>Branding</strong> — Drove the systematic FastExcel → FesodSheet transition across the entire codebase, from core classes and test suites to examples and user-facing error messages.</li>
+<li class=""><strong>Code Quality</strong> — Eliminated duplicate utility classes, streamlined Lombok usage, and refined test assertion patterns to improve maintainability.</li>
+<li class=""><strong>CI/CD</strong> — Introduced concurrency control, path-based filtering, and fork protection to GitHub Actions, making the pipeline faster and more cost-efficient.</li>
+<li class=""><strong>Documentation</strong> — Authored a bilingual migration guide (English & Chinese) and enhanced the documentation site's navigation structure.</li>
+<li class=""><strong>Testing & Performance</strong> — Established a shared testkit infrastructure that significantly reduced test duplication, and introduced JMH-based benchmarking for performance validation.</li>
+<li class=""><strong>Architecture</strong> — Proposed and led discussions on examples module restructuring, modern testing patterns, and a long-term performance testing framework.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="what-i-learned">What I Learned<a href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer#what-i-learned" class="hash-link" aria-label="Direct link to What I Learned" title="Direct link to What I Learned" translate="no"></a></h2>
+<p>Contributing to Apache projects taught me three things: <strong>community over code</strong> — consensus and transparency matter more than any single PR; <strong>start small, think big</strong> — my first small CI fix (<a href="https://github.com/apache/fesod/pull/664" target="_blank" rel="noopener noreferrer" class="">#664</a>) led to deep infrastructure improvements; and <strong>quality compounds</strong> — every small cleanup adds up to a healthier codebase over time.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="advice-for-new-contributors">Advice for New Contributors<a href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer#advice-for-new-contributors" class="hash-link" aria-label="Direct link to Advice for New Contributors" title="Direct link to Advice for New Contributors" translate="no"></a></h2>
+<ol>
+<li class=""><strong>Just start.</strong> Find a "good first issue" and take the first step — that's the hardest part.</li>
+<li class=""><strong>Read before you write.</strong> Understand the project's architecture and conventions first.</li>
+<li class=""><strong>Communicate openly.</strong> Clear issues and PRs earn trust faster than code alone.</li>
+<li class=""><strong>Think long-term.</strong> Proposals, docs, and infrastructure improvements are contributions too.</li>
+<li class=""><strong>Be patient.</strong> Consistency matters more than speed.</li>
+</ol>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="looking-forward">Looking Forward<a href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer#looking-forward" class="hash-link" aria-label="Direct link to Looking Forward" title="Direct link to Looking Forward" translate="no"></a></h2>
+<p>Becoming a Committer is a new beginning. I'm committed to improving Fesod's code quality, mentoring new contributors, driving the benchmarking framework forward, and supporting Fesod's journey toward Apache graduation.</p>]]></content>
+ <author>
+ <name>Zhongqiang Gong</name>
+ <uri>https://github.com/GOODBOY008</uri>
+ </author>
+ <category label="opensource" term="opensource"/>
+ <category label="apache" term="apache"/>
+ <category label="committer" term="committer"/>
+ <category label="fesod" term="fesod"/>
+ </entry>
+ <entry>
+ <title type="html"><![CDATA[Way to Go: Fesod successfully entered Apache Incubator]]></title>
+ <id>https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator</id>
+ <link href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator"/>
+ <updated>2025-09-17T00:00:00.000Z</updated>
+ <summary type="html"><![CDATA[Fesod successfully entered Apache Incubator.]]></summary>
+ <content type="html"><![CDATA[<p>On September 17, 2025, Beijing time, <a href="https://github.com/apache/fesod" target="_blank" rel="noopener noreferrer" class="">Fesod</a> successfully passed the voting resolution
+of the Apache Foundation Incubator.
+According to the Apache Foundation <a href="https://lists.apache.org/thread/k744v8ff22mom3bplqkjnc2qvtksj59f" target="_blank" rel="noopener noreferrer" class="">mailing list</a>, it
+was approved with 9 binding votes, with no abstentions or opposing
+votes, to accept Fesod into the Apache Incubator. This marked its official status as an incubation project under the
+<a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache Software Foundation</a>, the world's largest open-source foundation. On September 25,
+2025, the Fesod repository was
+officially transferred to the Apache Software Foundation.</p>
+<p>Fesod was originally named FastExcel and was officially open-sourced on GitHub in October 2024. With continuous project
+maintenance and iteration by the community members, as well as the continuous growth of the community, now the Fesod
+project has officially been announced to join the Apache Incubator. This marks a new beginning for the Fesod project,
+indicating that open-source community collaboration will become more standardized and internationalized!</p>
+<p><img decoding="async" loading="lazy" alt="blog-20250917" src="https://fesod.apache.org/assets/images/20250917-01-e2db1d5bffc9ab4c98ce8f55ece35090.png" width="1207" height="1595" class="img_BbTd"></p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="introduction">Introduction<a href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no"></a></h2>
+<p>Apache Fesod (Incubating) is a high-performance and memory-efficient Java library for reading and writing
+spreadsheet files, designed to simplify development and ensure reliability. The name fesod (pronounced <code>/ˈfɛsɒd/</code>), an
+acronym for "fast easy spreadsheet and other documents," expresses the project's origin, background, and vision.</p>
+<p>Apache Fesod (Incubating) can provide developers and enterprises with great freedom and flexibility. We plan to
+introduce more new features in the future to continually enhance user experience and tool usability. Apache Fesod (
+Incubating) is committed to being your best choice for handling spreadsheet files.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="features">Features<a href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features" translate="no"></a></h2>
+<ul>
+<li class=""><strong>High-performance Reading and Writing</strong>: Apache Fesod (Incubating) focuses on performance optimization, capable of
+efficiently handling large-scale spreadsheet data. Compared to some traditional spreadsheet processing libraries, it
+can
+significantly reduce memory consumption.</li>
+<li class=""><strong>Simplicity and Ease of Use</strong>: The library offers a simple and intuitive API, allowing developers to easily integrate
+it into projects, whether for simple spreadsheet operations or complex data processing.</li>
+<li class=""><strong>Stream Operations</strong>: Apache Fesod (Incubating) supports stream reading, minimizing the problem of loading large
+amounts of data at once. This design is especially important when dealing with hundreds of thousands or even millions
+of rows of data.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="current-development-status">Current Development Status<a href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator#current-development-status" class="hash-link" aria-label="Direct link to Current Development Status" title="Direct link to Current Development Status" translate="no"></a></h2>
+<p>The project was initiated by the original core maintainer in 2024, aiming to provide a more efficient Excel processing
+solution and ensure long-term sustainable maintenance. Since its open-source status, a small community has been
+initially established. The main repository has received a total of <strong>5.0K+</strong> stars on GitHub, has released community
+versions <strong>5</strong> times, and has <strong>20+</strong> contributors.
+We have received continuous widespread attention and support from the community, which is both a recognition of our past
+work and an expectation for our future development.</p>
+<p><img decoding="async" loading="lazy" alt="blog-20250917" src="https://fesod.apache.org/assets/images/20250917-02-8ffdd34d6cbc80004f5404c95a83de58.png" width="826" height="551" class="img_BbTd"></p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="why-join-the-apache-incubator">Why Join the Apache Incubator<a href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator#why-join-the-apache-incubator" class="hash-link" aria-label="Direct link to Why Join the Apache Incubator" title="Direct link to Why Join the Apache Incubator" translate="no"></a></h2>
+<p>Joining the Apache Incubator is mainly based on the following reasons:</p>
+<ul>
+<li class="">Under the guidance of the Apache Mature Open Source Foundation, the collaboration of open source projects and the
+operation of community governance will become more standardized.</li>
+<li class="">Build a more prosperous and diverse developer community. We hope to attract more outstanding developers from home and
+abroad to join, making the developer community more diverse.</li>
+<li class="">Expand the application scope and encourage its integration into more open source and commercial projects, promoting
+the development of new use cases and functions.</li>
+</ul>
+<p>Next, the community will be guided by the Apache incubator mentors to manage and operate the community in accordance
+with the concept of "Community over Code", and also ensure that every outstanding contributor can be recognized. At the
+level of open-source products, listen to user feedback, improve and optimize the product usage experience, and build
+connections with the open-source ecosystem.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="introduction-of-the-supervisor">Introduction of the Supervisor<a href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator#introduction-of-the-supervisor" class="hash-link" aria-label="Direct link to Introduction of the Supervisor" title="Direct link to Introduction of the Supervisor" translate="no"></a></h2>
+<ul>
+<li class="">tison(Champion)</li>
+<li class="">Dave Fisher</li>
+<li class="">PJ Fanning</li>
+<li class="">Huajie Wang</li>
+</ul>
+<p>Thank you all for your selfless assistance. You provided professional guidance in terms of compliance and process
+advancement. Special thanks to the project Champion, @tison. During the project's journey into the incubator, he/she led
+the entire process from the drafting stage of the proposal to discussions and ultimately to the initiation of voting,
+offering many valuable professional suggestions and guidance.</p>
+<p>We believe that with the guidance of all the mentors, the community will grow more healthily in the future.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="join-community">Join Community<a href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator#join-community" class="hash-link" aria-label="Direct link to Join Community" title="Direct link to Join Community" translate="no"></a></h2>
+<p><strong>Open Source</strong></p>
+<ul>
+<li class=""><a href="https://github.com/apache/fesod" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/fesod</a></li>
+</ul>
+<p><strong>Website</strong></p>
+<ul>
+<li class=""><a href="https://fesod.apache.org/" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/</a></li>
+</ul>
+<p><strong>Mailing Lists</strong></p>
+<ul>
+<li class=""><a href="mailto:dev@fesod.apache.org" target="_blank" rel="noopener noreferrer" class="">dev@fesod.apache.org</a></li>
+</ul>]]></content>
+ <category label="announcement" term="announcement"/>
+ </entry>
+</feed>
\ No newline at end of file
diff --git a/blog/authors/index.html b/blog/authors/index.html
new file mode 100644
index 00000000..98bfab58
--- /dev/null
+++ b/blog/authors/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-authors-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Authors | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/blog/authors"><meta da [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/feed.json b/blog/feed.json
new file mode 100644
index 00000000..b084673e
--- /dev/null
+++ b/blog/feed.json
@@ -0,0 +1,101 @@
+{
+ "version": "https://jsonfeed.org/version/1",
+ "title": "Apache Fesod (Incubating) Blog",
+ "home_page_url": "https://fesod.apache.org/blog",
+ "description": "Apache Fesod (Incubating) Blog",
+ "items": [
+ {
+ "id": "https://fesod.apache.org/blog/2026/06/11/cve-2026-49328",
+ "content_html": "<p>Security advisory for <strong>CVE-2026-49328</strong> regarding Server-Side Request Forgery (SSRF) in Apache Fesod (Incubating).</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_qGBP\" id=\"description\">Description<a href=\"https://fesod.apache.org/blog/2026/06/11/cve-2026-49328#description\" class=\"hash-link\" aria-label=\"Direct link to Description\" title=\"Direct link to Description\" translate=\"no\"></a></h2>\n<p>Server-Side Request Forgery (SSRF) [...]
+ "url": "https://fesod.apache.org/blog/2026/06/11/cve-2026-49328",
+ "title": "CVE-2026-49328 - Apache Fesod (Incubating): Improper validation of user-supplied URLs leading to SSRF",
+ "summary": "Security advisory for CVE-2026-49328.",
+ "date_modified": "2026-06-11T00:00:00.000Z",
+ "tags": [
+ "announcement",
+ "security",
+ "CVE-2026-49328"
+ ]
+ },
+ {
+ "id": "https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite",
+ "content_html": "<blockquote>\n<p>This article demonstrates how to write a declarative OpenRewrite recipe that migrates your project from <code>cn.idev.excel:fastexcel:1.3.0</code> to <code>org.apache.fesod:fesod-sheet:2.0.1-incubating</code>, covering both Maven and Gradle builds.</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetStickyNavbar_qGBP\" id=\"background\">Background<a href=\"https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#backg [...]
+ "url": "https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite",
+ "title": "Automated Migration from FastExcel 1.3.0 to Apache Fesod (Incubating) with OpenRewrite",
+ "summary": "Migrate FastExcel 1.3 to Apache Fesod (Incubating) 2.0.1-incubating",
+ "date_modified": "2026-05-07T00:00:00.000Z",
+ "author": {
+ "name": "Jing Yang",
+ "url": "https://github.com/bengbengbalabalabeng"
+ },
+ "tags": [
+ "migration",
+ "fastexcel",
+ "fesod"
+ ]
+ },
+ {
+ "id": "https://fesod.apache.org/blog/2026/04/29/from-user-to-committer",
+ "content_html": "<p><img decoding=\"async\" loading=\"lazy\" alt=\"Apache Fesod New Committer\" src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzIuMjUiIGhlaWdodD0iMjgiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQVBBQ0hFIEZFU09EOiBORVcgQ09NTUlUVEVSIj4KICAgIDx0aXRsZT5BUEFDSEUgRkVTT0Q6IE5FVyBDT01NSVRURVI8L3RpdGxlPgogICAgPGcgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj4KICAgICAgICA8cmVjdCB3aWR0aD0iMTM0IiBoZWlnaHQ9IjI4IiBmaWxsPSIjNTU1Ii8+CiAgICAgICAg [...]
+ "url": "https://fesod.apache.org/blog/2026/04/29/from-user-to-committer",
+ "title": "From User to Committer",
+ "summary": "From User to Committer",
+ "date_modified": "2026-04-29T00:00:00.000Z",
+ "author": {
+ "name": "Jing Yang",
+ "url": "https://github.com/bengbengbalabalabeng"
+ },
+ "tags": [
+ "opensource",
+ "apache",
+ "committer",
+ "fesod"
+ ]
+ },
+ {
+ "id": "https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released",
+ "content_html": "<p><strong>February 2026</strong> — The Apache Fesod (Incubating) community is pleased to announce the official release of <strong>Apache Fesod (Incubating) 2.0.1-incubating</strong>.</p>\n<p>This is not only a technical iteration but also a significant milestone: <strong>the first official release of Fesod since joining the Apache Software Foundation (ASF) Incubator.</strong> Over the past few months, the community has collaboratively completed extensive com [...]
+ "url": "https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released",
+ "title": "Apache Fesod (Incubating) 2.0.1-incubating Officially Released",
+ "summary": "The Apache Fesod community is pleased to announce the official release of Apache Fesod (Incubating) 2.0.1-incubating.",
+ "date_modified": "2026-02-27T00:00:00.000Z",
+ "author": {
+ "name": "Shuxin Pan",
+ "url": "https://github.com/psxjoy"
+ },
+ "tags": [
+ "announcement",
+ "release"
+ ]
+ },
+ {
+ "id": "https://fesod.apache.org/blog/2026/02/27/welcome-new-committer",
+ "content_html": "<p><img decoding=\"async\" loading=\"lazy\" alt=\"Apache Fesod New Committer\" src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzIuMjUiIGhlaWdodD0iMjgiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQVBBQ0hFIEZFU09EOiBORVcgQ09NTUlUVEVSIj4KICAgIDx0aXRsZT5BUEFDSEUgRkVTT0Q6IE5FVyBDT01NSVRURVI8L3RpdGxlPgogICAgPGcgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj4KICAgICAgICA8cmVjdCB3aWR0aD0iMTM0IiBoZWlnaHQ9IjI4IiBmaWxsPSIjNTU1Ii8+CiAgICAgICAg [...]
+ "url": "https://fesod.apache.org/blog/2026/02/27/welcome-new-committer",
+ "title": "Welcome Apache Fesod's New Committer",
+ "summary": "Welcome Apache Fesod's New Committer",
+ "date_modified": "2026-02-27T00:00:00.000Z",
+ "author": {
+ "name": "Zhongqiang Gong",
+ "url": "https://github.com/GOODBOY008"
+ },
+ "tags": [
+ "opensource",
+ "apache",
+ "committer",
+ "fesod"
+ ]
+ },
+ {
+ "id": "https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator",
+ "content_html": "<p>On September 17, 2025, Beijing time, <a href=\"https://github.com/apache/fesod\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Fesod</a> successfully passed the voting resolution\nof the Apache Foundation Incubator.\nAccording to the Apache Foundation <a href=\"https://lists.apache.org/thread/k744v8ff22mom3bplqkjnc2qvtksj59f\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">mailing list</a>, it\nwas approved with 9 binding votes, with n [...]
+ "url": "https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator",
+ "title": "Way to Go: Fesod successfully entered Apache Incubator",
+ "summary": "Fesod successfully entered Apache Incubator.",
+ "date_modified": "2025-09-17T00:00:00.000Z",
+ "tags": [
+ "announcement"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
new file mode 100644
index 00000000..08e90837
--- /dev/null
+++ b/blog/index.html
@@ -0,0 +1,40 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Blog | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/blog"><meta data-rh="true [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This article demonstrates how to write a declarative OpenRewrite recipe that migrates your project from <code>cn.idev.excel:fastexcel:1.3.0</code> to <code>org.apache.fesod:fesod-sheet:2.0.1-incubating</code>, covering both Maven and Gradle builds.</p>
+</blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/migration">migration</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/fastexcel">fastexcel</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/fesod">fesod</a></li></ul></div><div c [...]
+<p>Hello everyone, <code>bengbengbalabalabeng</code> here. I am incredibly honored and thrilled to share some great news with you all: I recently received an official invitation to become a Committer for the <strong>Apache Fesod (Incubating)</strong> project.</p>
+<p>From starting out as an everyday user to submitting my first bug fix, and eventually diving deep into code contributions, documentation improvements, and community support—this journey has been incredibly rewarding. I'd like to take this opportunity to document my open-source adventure so far.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRe [...]
+<p>This is not only a technical iteration but also a significant milestone: <strong>the first official release of Fesod since joining the Apache Software Foundation (ASF) Incubator.</strong> Over the past few months, the community has collaboratively completed extensive compliance improvements, architectural refactoring, and functional enhancements. This release marks Fesod’s readiness to embark on a new chapter of high-performance Excel processing under the ASF governance.</p></div><foo [...]
+<blockquote>
+<p>Hello everyone! It's a great honor to be invited by the Apache Fesod community to become a Committer. I'm thrilled to share my open source journey and how I got here.</p>
+</blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/opensource">opensource</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/apache">apache</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/committer">committer</a></li><li class="ta [...]
+of the Apache Foundation Incubator.
+According to the Apache Foundation <a href="https://lists.apache.org/thread/k744v8ff22mom3bplqkjnc2qvtksj59f" target="_blank" rel="noopener noreferrer" class="">mailing list</a>, it
+was approved with 9 binding votes, with no abstentions or opposing
+votes, to accept Fesod into the Apache Incubator. This marked its official status as an incubation project under the
+<a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache Software Foundation</a>, the world's largest open-source foundation. On September 25,
+2025, the Fesod repository was
+officially transferred to the Apache Software Foundation.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/announcement">announcement</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about Way to Go: Fesod successfully entered Apache Incubator" href="/blog/2025/09/17/fesod-entered-apache-inc [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/rss.xml b/blog/rss.xml
new file mode 100644
index 00000000..de81caef
--- /dev/null
+++ b/blog/rss.xml
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
+ <channel>
+ <title>Apache Fesod (Incubating) Blog</title>
+ <link>https://fesod.apache.org/blog</link>
+ <description>Apache Fesod (Incubating) Blog</description>
+ <lastBuildDate>Thu, 11 Jun 2026 00:00:00 GMT</lastBuildDate>
+ <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
+ <generator>https://github.com/jpmonette/feed</generator>
+ <language>en</language>
+ <item>
+ <title><![CDATA[CVE-2026-49328 - Apache Fesod (Incubating): Improper validation of user-supplied URLs leading to SSRF]]></title>
+ <link>https://fesod.apache.org/blog/2026/06/11/cve-2026-49328</link>
+ <guid>https://fesod.apache.org/blog/2026/06/11/cve-2026-49328</guid>
+ <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
+ <description><![CDATA[Security advisory for CVE-2026-49328.]]></description>
+ <content:encoded><![CDATA[<p>Security advisory for <strong>CVE-2026-49328</strong> regarding Server-Side Request Forgery (SSRF) in Apache Fesod (Incubating).</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="description">Description<a href="https://fesod.apache.org/blog/2026/06/11/cve-2026-49328#description" class="hash-link" aria-label="Direct link to Description" title="Direct link to Description" translate="no"></a></h2>
+<p>Server-Side Request Forgery (SSRF) in the <code>UrlImageConverter</code> component of Apache Fesod (Incubating) <code>fesod-sheet</code> allows attackers to cause outbound network requests to internal or otherwise restricted resources via a user-supplied image URL.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="affected-modules-and-versions">Affected Modules and Versions<a href="https://fesod.apache.org/blog/2026/06/11/cve-2026-49328#affected-modules-and-versions" class="hash-link" aria-label="Direct link to Affected Modules and Versions" title="Direct link to Affected Modules and Versions" translate="no"></a></h2>
+<p>Fesod Spreadsheet (<code>fesod-sheet</code>):</p>
+<ul>
+<li class="">2.0.1-incubating</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="mitigation">Mitigation<a href="https://fesod.apache.org/blog/2026/06/11/cve-2026-49328#mitigation" class="hash-link" aria-label="Direct link to Mitigation" title="Direct link to Mitigation" translate="no"></a></h2>
+<p>Users of affected versions should upgrade to the corresponding fixed version.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Affected version(s)</th><th>Fix version</th></tr></thead><tbody><tr><td>2.0.1-incubating</td><td>2.0.2-incubating</td></tr></tbody></table>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="references">References<a href="https://fesod.apache.org/blog/2026/06/11/cve-2026-49328#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References" translate="no"></a></h2>
+<ul>
+<li class=""><a href="https://github.com/apache/fesod/pull/917" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/fesod/pull/917</a></li>
+<li class=""><a href="https://github.com/apache/fesod/releases/tag/2.0.2-incubating" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/fesod/releases/tag/2.0.2-incubating</a></li>
+<li class=""><a href="https://fesod.apache.org/docs/download" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/docs/download</a></li>
+<li class=""><a href="https://lists.apache.org/thread/c1pb5b66h02p9tlrnfbwcgcz85v16fkj" target="_blank" rel="noopener noreferrer" class="">https://lists.apache.org/thread/c1pb5b66h02p9tlrnfbwcgcz85v16fkj</a></li>
+</ul>]]></content:encoded>
+ <category>announcement</category>
+ <category>security</category>
+ <category>CVE-2026-49328</category>
+ </item>
+ <item>
+ <title><![CDATA[Automated Migration from FastExcel 1.3.0 to Apache Fesod (Incubating) with OpenRewrite]]></title>
+ <link>https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite</link>
+ <guid>https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite</guid>
+ <pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate>
+ <description><![CDATA[Migrate FastExcel 1.3 to Apache Fesod (Incubating) 2.0.1-incubating]]></description>
+ <content:encoded><![CDATA[<blockquote>
+<p>This article demonstrates how to write a declarative OpenRewrite recipe that migrates your project from <code>cn.idev.excel:fastexcel:1.3.0</code> to <code>org.apache.fesod:fesod-sheet:2.0.1-incubating</code>, covering both Maven and Gradle builds.</p>
+</blockquote>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="background">Background<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#background" class="hash-link" aria-label="Direct link to Background" title="Direct link to Background" translate="no"></a></h2>
+<p>FastExcel (<code>cn.idev.excel</code>) has been donated to the Apache Software Foundation and is now incubating as <strong>Apache Fesod (Incubating)</strong>. The core change is a <strong>Java package path replacement</strong> — the API, annotations, and processing logic remain identical, making this a low-risk, mechanical refactoring.</p>
+<p>For the official migration strategy, see: <a href="https://fesod.apache.org/docs/migration/from-fastexcel/" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/docs/migration/from-fastexcel/</a></p>
+<p>Manually replacing imports file by file is tedious and error-prone. OpenRewrite provides AST-level code transformation capabilities to perform this kind of bulk migration precisely and safely.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="migration-scope">Migration Scope<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#migration-scope" class="hash-link" aria-label="Direct link to Migration Scope" title="Direct link to Migration Scope" translate="no"></a></h2>
+<ol>
+<li class="">Update Maven/Gradle dependencies</li>
+<li class="">Replace deprecated class names with <code>FesodSheet</code></li>
+<li class="">Update package imports</li>
+</ol>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="writing-the-openrewrite-recipe">Writing the OpenRewrite Recipe<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#writing-the-openrewrite-recipe" class="hash-link" aria-label="Direct link to Writing the OpenRewrite Recipe" title="Direct link to Writing the OpenRewrite Recipe" translate="no"></a></h2>
+<p>Create a <code>rewrite.yml</code> file in your project root:</p>
+<div class="language-yaml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-yaml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span cla [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="how-it-works">How It Works<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#how-it-works" class="hash-link" aria-label="Direct link to How It Works" title="Direct link to How It Works" translate="no"></a></h3>
+<p>The recipe executes steps sequentially in declaration order:</p>
+<p><strong>Step 1 — Update Dependencies</strong>: The first rule updates <code>pom.xml</code> for Maven projects; the second rule updates <code>build.gradle</code> / <code>build.gradle.kts</code> for Gradle projects. If your project uses only one build tool, the other rule is silently skipped.</p>
+<p><strong>Step 2 — Package Import Updates</strong>: <code>ChangePackage(recursive=true)</code> covers all sub-packages under <code>cn.idev.excel</code> (annotation, read, write, converters, enums, etc.) in a single rule — no need to enumerate each one individually. The second rule handles legacy code that was already partially migrated to <code>org.apache.fesod.excel</code>. After this step, imports like <code>cn.idev.excel.FastExcel</code> become <code>org.apache.fesod.sheet.FastExcel< [...]
+<p><strong>Step 3 — Entry Class Rename</strong>: Once Step 2 completes, all <code>FastExcel</code> and <code>FastExcelFactory</code> imports are unified under <code>org.apache.fesod.sheet</code>. Only two <code>ChangeType</code> rules are needed to rename them to the canonical <code>FesodSheet</code> class, automatically updating all call sites (<code>FastExcel.read()</code>, <code>FastExcel.write()</code>, etc.) and type references (variable declarations, class literals).</p>
+<p><strong>Step 4 — CGLIB String Replacement</strong>: Only affects code that references CGLIB-generated class names at runtime. Most projects don't need this step — the rule is silently skipped if there's no match.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="adding-openrewrite-to-your-project">Adding OpenRewrite to Your Project<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#adding-openrewrite-to-your-project" class="hash-link" aria-label="Direct link to Adding OpenRewrite to Your Project" title="Direct link to Adding OpenRewrite to Your Project" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="maven">Maven<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#maven" class="hash-link" aria-label="Direct link to Maven" title="Direct link to Maven" translate="no"></a></h3>
+<p>Add the plugin to <code>pom.xml</code>:</p>
+<div class="language-xml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-xml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">plug [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="gradle-groovy">Gradle (Groovy)<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#gradle-groovy" class="hash-link" aria-label="Direct link to Gradle (Groovy)" title="Direct link to Gradle (Groovy)" translate="no"></a></h3>
+<p>Add to <code>build.gradle</code>:</p>
+<div class="language-groovy codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-groovy codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">plugins {</span><br></span><span class="token-line" style="color:#393A34"><span class=" [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="gradle-kotlin">Gradle (Kotlin)<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#gradle-kotlin" class="hash-link" aria-label="Direct link to Gradle (Kotlin)" title="Direct link to Gradle (Kotlin)" translate="no"></a></h3>
+<p>Add to <code>build.gradle.kts</code>:</p>
+<div class="language-kotlin codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-kotlin codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">plugins </span><span class="token punctuation" style="color:#393A34">{</span><span clas [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="running-the-migration">Running the Migration<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#running-the-migration" class="hash-link" aria-label="Direct link to Running the Migration" title="Direct link to Running the Migration" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="preview-changes">Preview Changes<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#preview-changes" class="hash-link" aria-label="Direct link to Preview Changes" title="Direct link to Preview Changes" translate="no"></a></h3>
+<p>View what the recipe would change without modifying files:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Maven</span><span class="token plain"></span><b [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="apply-changes">Apply Changes<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#apply-changes" class="hash-link" aria-label="Direct link to Apply Changes" title="Direct link to Apply Changes" translate="no"></a></h3>
+<p>Once satisfied with the preview, apply the changes:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Maven</span><span class="token plain"></span><b [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="verify">Verify<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#verify" class="hash-link" aria-label="Direct link to Verify" title="Direct link to Verify" translate="no"></a></h3>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Compile check</span><span class="token plain">< [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="before-and-after">Before and After<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#before-and-after" class="hash-link" aria-label="Direct link to Before and After" title="Direct link to Before and After" translate="no"></a></h2>
+<p>Before migration:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token i [...]
+<p>After migration:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token i [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="references">References<a href="https://fesod.apache.org/blog/2026/05/07/migration-from-fastexcel-with-openrewrite#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References" translate="no"></a></h2>
+<ul>
+<li class="">Apache Fesod (Incubating) Official Migration Guide: <a href="https://fesod.apache.org/docs/migration/from-fastexcel/" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/docs/migration/from-fastexcel/</a></li>
+<li class="">OpenRewrite Documentation: <a href="https://docs.openrewrite.org/" target="_blank" rel="noopener noreferrer" class="">https://docs.openrewrite.org/</a></li>
+<li class="">OpenRewrite Recipe Reference: <a href="https://docs.openrewrite.org/recipes" target="_blank" rel="noopener noreferrer" class="">https://docs.openrewrite.org/recipes</a></li>
+</ul>]]></content:encoded>
+ <category>migration</category>
+ <category>fastexcel</category>
+ <category>fesod</category>
+ </item>
+ <item>
+ <title><![CDATA[From User to Committer]]></title>
+ <link>https://fesod.apache.org/blog/2026/04/29/from-user-to-committer</link>
+ <guid>https://fesod.apache.org/blog/2026/04/29/from-user-to-committer</guid>
+ <pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate>
+ <description><![CDATA[From User to Committer]]></description>
+ <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Apache Fesod New Committer" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzIuMjUiIGhlaWdodD0iMjgiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQVBBQ0hFIEZFU09EOiBORVcgQ09NTUlUVEVSIj4KICAgIDx0aXRsZT5BUEFDSEUgRkVTT0Q6IE5FVyBDT01NSVRURVI8L3RpdGxlPgogICAgPGcgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj4KICAgICAgICA8cmVjdCB3aWR0aD0iMTM0IiBoZWlnaHQ9IjI4IiBmaWxsPSIjNTU1Ii8+CiAgICAgIC [...]
+<p>Hello everyone, <code>bengbengbalabalabeng</code> here. I am incredibly honored and thrilled to share some great news with you all: I recently received an official invitation to become a Committer for the <strong>Apache Fesod (Incubating)</strong> project.</p>
+<p>From starting out as an everyday user to submitting my first bug fix, and eventually diving deep into code contributions, documentation improvements, and community support—this journey has been incredibly rewarding. I'd like to take this opportunity to document my open-source adventure so far.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="my-first-encounter-with-apache-fesod-incubating">My First Encounter with Apache Fesod (Incubating)<a href="https://fesod.apache.org/blog/2026/04/29/from-user-to-committer#my-first-encounter-with-apache-fesod-incubating" class="hash-link" aria-label="Direct link to My First Encounter with Apache Fesod (Incubating)" title="Direct link to My First Encounter with Apache Fesod (Incubating)" translate="no"></a></h2>
+<p>In my work as a Java developer, I frequently encountered the need to process complex Excel files. It was while searching for an efficient solution to this challenge that I first discovered FastExcel. It quickly became an essential tool, significantly simplifying the complexity of handling Excel data in our daily development.</p>
+<p>Later on, some exciting news broke: FastExcel was being donated to the Apache Software Foundation, officially entering the incubator and rebranding as <strong>Apache Fesod (Incubating)</strong>. At that moment, I felt the project's vitality had been elevated to a whole new level. It combined the <strong>massive influence and solid user base</strong> established during the FastExcel days with the <strong>huge, untapped potential</strong> of the Apache open-source ecosystem. Seeing such [...]
+<p>From there, I started following the community closely. I went from quietly lurking, to participating in Issue discussions, and finally submitting my very first PR (<a href="https://github.com/apache/fesod/pull/668" target="_blank" rel="noopener noreferrer" class="">#668</a>).</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="my-contributions">My Contributions<a href="https://fesod.apache.org/blog/2026/04/29/from-user-to-committer#my-contributions" class="hash-link" aria-label="Direct link to My Contributions" title="Direct link to My Contributions" translate="no"></a></h2>
+<p>After the thrill of having my first PR merged, I stopped limiting myself to isolated bug fixes and started looking at the project from a more holistic perspective. My main areas of contribution have included:</p>
+<ul>
+<li class=""><strong>Building out the Documentation System</strong></li>
+<li class=""><strong>Bug Fixes</strong></li>
+<li class=""><strong>Improving the Testing Framework</strong></li>
+<li class=""><strong>Feature Enhancements</strong></li>
+<li class=""><strong>Community Engagement</strong></li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="my-takeaways">My Takeaways<a href="https://fesod.apache.org/blog/2026/04/29/from-user-to-committer#my-takeaways" class="hash-link" aria-label="Direct link to My Takeaways" title="Direct link to My Takeaways" translate="no"></a></h2>
+<p>Throughout my involvement with Apache Fesod (Incubating), I've come to deeply realize that:</p>
+<ul>
+<li class=""><strong>Open source is about collaboration, not just writing code.</strong> Every single step—Issues, PRs, Code Reviews, and discussions—requires clear communication and patience.</li>
+<li class=""><strong>Small contributions can make a massive impact.</strong> Fixing a simple typo or adding a code snippet can potentially help thousands of users.</li>
+<li class=""><strong>The power of the community far exceeds that of any individual.</strong> Every discussion and every consensus reached makes the project that much better.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="looking-ahead">Looking Ahead<a href="https://fesod.apache.org/blog/2026/04/29/from-user-to-committer#looking-ahead" class="hash-link" aria-label="Direct link to Looking Ahead" title="Direct link to Looking Ahead" translate="no"></a></h2>
+<p>Becoming a Committer is by no means the finish line; rather, it is a brand-new starting point. It comes with greater responsibilities and higher expectations. I am incredibly excited to continue working alongside the community to make Apache Fesod (Incubating) even better.</p>]]></content:encoded>
+ <category>opensource</category>
+ <category>apache</category>
+ <category>committer</category>
+ <category>fesod</category>
+ </item>
+ <item>
+ <title><![CDATA[Apache Fesod (Incubating) 2.0.1-incubating Officially Released]]></title>
+ <link>https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released</link>
+ <guid>https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released</guid>
+ <pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate>
+ <description><![CDATA[The Apache Fesod community is pleased to announce the official release of Apache Fesod (Incubating) 2.0.1-incubating.]]></description>
+ <content:encoded><![CDATA[<p><strong>February 2026</strong> — The Apache Fesod (Incubating) community is pleased to announce the official release of <strong>Apache Fesod (Incubating) 2.0.1-incubating</strong>.</p>
+<p>This is not only a technical iteration but also a significant milestone: <strong>the first official release of Fesod since joining the Apache Software Foundation (ASF) Incubator.</strong> Over the past few months, the community has collaboratively completed extensive compliance improvements, architectural refactoring, and functional enhancements. This release marks Fesod’s readiness to embark on a new chapter of high-performance Excel processing under the ASF governance.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="milestone-significance-the-first-official-asf-release">Milestone Significance: The First Official ASF Release<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#milestone-significance-the-first-official-asf-release" class="hash-link" aria-label="Direct link to Milestone Significance: The First Official ASF Release" title="Direct link to Milestone Significance: The First Official ASF Release" transla [...]
+<p>As our "debut" in the incubator, version 2.0.1 represents a decisive step forward in embracing <strong>"The Apache Way"</strong>:</p>
+<ul>
+<li class=""><strong>Comprehensive Renaming & Compliance:</strong> We have completed the full transition from <code>FastExcel</code> to <code>Fesod</code> (including package names, class names, and documentation) to ensure the brand is fully protected under the ASF.</li>
+<li class=""><strong>Compliance Completion:</strong> We have introduced the <code>DISCLAIMER</code>, <code>NOTICE</code>, and <code>support</code> modules, and implemented automated License Header management via Spotless, fully aligning with ASF policies.</li>
+<li class=""><strong>Community Governance:</strong> All code merges and release processes were conducted through public discussion and voting on the mailing lists, reflecting the principles of openness and transparency.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="key-highlights">Key Highlights<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#key-highlights" class="hash-link" aria-label="Direct link to Key Highlights" title="Direct link to Key Highlights" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="1-deep-architectural-refactoring">1. Deep Architectural Refactoring<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#1-deep-architectural-refactoring" class="hash-link" aria-label="Direct link to 1. Deep Architectural Refactoring" title="Direct link to 1. Deep Architectural Refactoring" translate="no"></a></h3>
+<p>To support long-term sustainability, we have significantly optimized the project structure:</p>
+<ul>
+<li class=""><strong>Multi-module Architecture:</strong> Introduced a multi-module structure for clearer hierarchy and finer dependency management.</li>
+<li class=""><strong>Distribution Enhancement:</strong> Added the <code>fesod-distribution</code> module to standardize the description and building of distribution packages.</li>
+<li class=""><strong>JDK 25 Support:</strong> Keeping pace with the Java ecosystem, we have officially added compatibility and support for <strong>JDK 25</strong>.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="2-new-features">2. New Features<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#2-new-features" class="hash-link" aria-label="Direct link to 2. New Features" title="Direct link to 2. New Features" translate="no"></a></h3>
+<p>This release introduces several practical features to enhance the flexibility of Excel processing:</p>
+<ul>
+<li class=""><strong>Enhanced Excel Processing:</strong> Added the <code>afterSheetDispose</code> lifecycle method in <code>SheetWriteHandler</code> and introduced a brand-new <strong>Header Merge Strategy</strong>.</li>
+<li class=""><strong>Legacy Format Compatibility:</strong> Gracefully handles very old Excel BIFF formats to prevent runtime crashes.</li>
+<li class=""><strong>Flexible Control:</strong> Added the <code>autoStrip</code> parameter and introduced validation for maximum Sheet name length in <code>Workbook</code> constants.</li>
+<li class=""><strong>Website Experience:</strong> Added local search functionality and Matomo analytics to the official documentation, with optimized display for mobile devices.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="3-stability--robustness">3. Stability & Robustness<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#3-stability--robustness" class="hash-link" aria-label="Direct link to 3. Stability & Robustness" title="Direct link to 3. Stability & Robustness" translate="no"></a></h3>
+<p>We have invested heavily in quality assurance:</p>
+<ul>
+<li class=""><strong>Fuzz Testing:</strong> Added daily fuzz testing for Excel reading to proactively identify potential crashes when processing malformed files.</li>
+<li class=""><strong>Dependency Security:</strong> Upgraded core dependencies including Spring-core, Logback, Fastjson2, and POI (to 5.5.1) to resolve known vulnerabilities.</li>
+<li class=""><strong>CI/CD Optimization:</strong> Introduced Netlify preview deployments and automated workflows for closing stale issues, significantly improving community collaboration efficiency.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="key-changes-at-a-glance">Key Changes at a Glance<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#key-changes-at-a-glance" class="hash-link" aria-label="Direct link to Key Changes at a Glance" title="Direct link to Key Changes at a Glance" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="features"><strong>Features</strong><a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#features" class="hash-link" aria-label="Direct link to features" title="Direct link to features" translate="no"></a></h3>
+<ul>
+<li class="">Added <code>afterSheetDispose</code> method to <code>SheetWriteHandler</code>.</li>
+<li class="">Introduced Header Merge Strategy for Excel writing.</li>
+<li class="">Added GitHub Actions for Netlify preview deployments.</li>
+<li class="">Integrated <code>docusaurus-search-local</code> for official website search.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="bugfixes"><strong>Bugfixes</strong><a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#bugfixes" class="hash-link" aria-label="Direct link to bugfixes" title="Direct link to bugfixes" translate="no"></a></h3>
+<ul>
+<li class="">Fixed NPE in the <code>WriteSheetWorkbookWriteHandler</code> class.</li>
+<li class="">Fixed broken links and incorrect code examples in the documentation.</li>
+<li class="">Updated import statements to use the shaded <code>cglib</code> package.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="refactoring"><strong>Refactoring</strong><a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#refactoring" class="hash-link" aria-label="Direct link to refactoring" title="Direct link to refactoring" translate="no"></a></h3>
+<ul>
+<li class="">Renamed project to Fesod/FesodSheet and updated package structures to align with Apache naming conventions.</li>
+<li class="">Implemented Spotless for automated License Header management.</li>
+<li class="">Removed outdated and incorrect <code>@since</code> tags.</li>
+</ul>
+<blockquote>
+<p>For a detailed list of changes, please refer to the <a href="https://github.com/apache/fesod/releases/tag/2.0.1-incubating" target="_blank" rel="noopener noreferrer" class="">GitHub Release Notes</a>.</p>
+</blockquote>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="acknowledgments">Acknowledgments<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#acknowledgments" class="hash-link" aria-label="Direct link to Acknowledgments" title="Direct link to Acknowledgments" translate="no"></a></h2>
+<p>"Community Over Code" is the core philosophy of the Apache Software Foundation. We would like to thank all the developers, mentors, and community members who contributed to this release.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="new-contributors">New Contributors<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#new-contributors" class="hash-link" aria-label="Direct link to New Contributors" title="Direct link to New Contributors" translate="no"></a></h3>
+<p>We would like to extend a warm welcome and a special thank you to the <strong>14 new members</strong> who made their first contribution in this release:</p>
+<blockquote>
+<p>@X-qinghai, @ngocnhan-tran1996, @YIminta, @jounghu, @wlgusqkr, @gaushon, @GOODBOY008, @ongdisheng, @harshasiddartha, @pjfanning, @liugddx, @hezhangjian, @bengbengbalabalabeng</p>
+</blockquote>
+<p>Special thanks to <strong>@delei, @psxjoy, @alaahong, @ongdisheng, @GOODBOY008</strong>, and everyone who submitted PRs and suggestions on GitHub. Your tireless efforts in renaming, compliance checking, CI optimization, and feature improvements have made Fesod's ASF debut a success.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="how-to-get-involved">How to Get Involved<a href="https://fesod.apache.org/blog/2026/02/27/apache-fesod-2-0-1-incubating-released#how-to-get-involved" class="hash-link" aria-label="Direct link to How to Get Involved" title="Direct link to How to Get Involved" translate="no"></a></h2>
+<p>You can download and experience the new Apache Fesod (Incubating) through the following channels:</p>
+<ul>
+<li class=""><strong>Official Website:</strong> <a href="https://fesod.apache.org/" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/</a></li>
+<li class=""><strong>Source Code:</strong> <a href="https://github.com/apache/fesod" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/fesod</a></li>
+<li class=""><strong>Maven Central:</strong></li>
+</ul>
+<div class="language-xml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-xml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">depe [...]
+<p><strong>Join Us!</strong>
+The Apache Fesod (Incubating) community is always open to new contributors. You can reach out to us by subscribing to the mailing list at <code>dev@fesod.apache.org</code> or by submitting issues on GitHub.</p>
+<p>We look forward to growing together within the Apache Incubator!</p>]]></content:encoded>
+ <category>announcement</category>
+ <category>release</category>
+ </item>
+ <item>
+ <title><![CDATA[Welcome Apache Fesod's New Committer]]></title>
+ <link>https://fesod.apache.org/blog/2026/02/27/welcome-new-committer</link>
+ <guid>https://fesod.apache.org/blog/2026/02/27/welcome-new-committer</guid>
+ <pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate>
+ <description><![CDATA[Welcome Apache Fesod's New Committer]]></description>
+ <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Apache Fesod New Committer" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzIuMjUiIGhlaWdodD0iMjgiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQVBBQ0hFIEZFU09EOiBORVcgQ09NTUlUVEVSIj4KICAgIDx0aXRsZT5BUEFDSEUgRkVTT0Q6IE5FVyBDT01NSVRURVI8L3RpdGxlPgogICAgPGcgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj4KICAgICAgICA8cmVjdCB3aWR0aD0iMTM0IiBoZWlnaHQ9IjI4IiBmaWxsPSIjNTU1Ii8+CiAgICAgIC [...]
+<blockquote>
+<p>Hello everyone! It's a great honor to be invited by the Apache Fesod community to become a Committer. I'm thrilled to share my open source journey and how I got here.</p>
+</blockquote>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="self-introduction">Self-Introduction<a href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer#self-introduction" class="hash-link" aria-label="Direct link to Self-Introduction" title="Direct link to Self-Introduction" translate="no"></a></h2>
+<p>My name is Zhongqiang Gong (GitHub: <a href="https://github.com/GOODBOY008" target="_blank" rel="noopener noreferrer" class="">GOODBOY008</a>). I'm a software engineer passionate about open source and the Java ecosystem, and also an <strong>Apache Flink Committer</strong> and <strong>Apache StreamPark Committer</strong>.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="first-encounter-with-apache-fesod">First Encounter with Apache Fesod<a href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer#first-encounter-with-apache-fesod" class="hash-link" aria-label="Direct link to First Encounter with Apache Fesod" title="Direct link to First Encounter with Apache Fesod" translate="no"></a></h2>
+<p>I first came across Fesod in <strong>September 2025</strong>, shortly after it entered the Apache Incubation stage. As a widely adopted Java spreadsheet processing library, it already had a solid user base — but under Apache governance, the project was brimming with room to grow. That combination of real-world impact and untapped potential drew me in, and I knew I wanted to be part of shaping its future in the open.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="my-contributions">My Contributions<a href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer#my-contributions" class="hash-link" aria-label="Direct link to My Contributions" title="Direct link to My Contributions" translate="no"></a></h2>
+<p>Since joining the community, my contributions have spanned six key areas:</p>
+<ul>
+<li class=""><strong>Branding</strong> — Drove the systematic FastExcel → FesodSheet transition across the entire codebase, from core classes and test suites to examples and user-facing error messages.</li>
+<li class=""><strong>Code Quality</strong> — Eliminated duplicate utility classes, streamlined Lombok usage, and refined test assertion patterns to improve maintainability.</li>
+<li class=""><strong>CI/CD</strong> — Introduced concurrency control, path-based filtering, and fork protection to GitHub Actions, making the pipeline faster and more cost-efficient.</li>
+<li class=""><strong>Documentation</strong> — Authored a bilingual migration guide (English & Chinese) and enhanced the documentation site's navigation structure.</li>
+<li class=""><strong>Testing & Performance</strong> — Established a shared testkit infrastructure that significantly reduced test duplication, and introduced JMH-based benchmarking for performance validation.</li>
+<li class=""><strong>Architecture</strong> — Proposed and led discussions on examples module restructuring, modern testing patterns, and a long-term performance testing framework.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="what-i-learned">What I Learned<a href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer#what-i-learned" class="hash-link" aria-label="Direct link to What I Learned" title="Direct link to What I Learned" translate="no"></a></h2>
+<p>Contributing to Apache projects taught me three things: <strong>community over code</strong> — consensus and transparency matter more than any single PR; <strong>start small, think big</strong> — my first small CI fix (<a href="https://github.com/apache/fesod/pull/664" target="_blank" rel="noopener noreferrer" class="">#664</a>) led to deep infrastructure improvements; and <strong>quality compounds</strong> — every small cleanup adds up to a healthier codebase over time.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="advice-for-new-contributors">Advice for New Contributors<a href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer#advice-for-new-contributors" class="hash-link" aria-label="Direct link to Advice for New Contributors" title="Direct link to Advice for New Contributors" translate="no"></a></h2>
+<ol>
+<li class=""><strong>Just start.</strong> Find a "good first issue" and take the first step — that's the hardest part.</li>
+<li class=""><strong>Read before you write.</strong> Understand the project's architecture and conventions first.</li>
+<li class=""><strong>Communicate openly.</strong> Clear issues and PRs earn trust faster than code alone.</li>
+<li class=""><strong>Think long-term.</strong> Proposals, docs, and infrastructure improvements are contributions too.</li>
+<li class=""><strong>Be patient.</strong> Consistency matters more than speed.</li>
+</ol>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="looking-forward">Looking Forward<a href="https://fesod.apache.org/blog/2026/02/27/welcome-new-committer#looking-forward" class="hash-link" aria-label="Direct link to Looking Forward" title="Direct link to Looking Forward" translate="no"></a></h2>
+<p>Becoming a Committer is a new beginning. I'm committed to improving Fesod's code quality, mentoring new contributors, driving the benchmarking framework forward, and supporting Fesod's journey toward Apache graduation.</p>]]></content:encoded>
+ <category>opensource</category>
+ <category>apache</category>
+ <category>committer</category>
+ <category>fesod</category>
+ </item>
+ <item>
+ <title><![CDATA[Way to Go: Fesod successfully entered Apache Incubator]]></title>
+ <link>https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator</link>
+ <guid>https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator</guid>
+ <pubDate>Wed, 17 Sep 2025 00:00:00 GMT</pubDate>
+ <description><![CDATA[Fesod successfully entered Apache Incubator.]]></description>
+ <content:encoded><![CDATA[<p>On September 17, 2025, Beijing time, <a href="https://github.com/apache/fesod" target="_blank" rel="noopener noreferrer" class="">Fesod</a> successfully passed the voting resolution
+of the Apache Foundation Incubator.
+According to the Apache Foundation <a href="https://lists.apache.org/thread/k744v8ff22mom3bplqkjnc2qvtksj59f" target="_blank" rel="noopener noreferrer" class="">mailing list</a>, it
+was approved with 9 binding votes, with no abstentions or opposing
+votes, to accept Fesod into the Apache Incubator. This marked its official status as an incubation project under the
+<a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache Software Foundation</a>, the world's largest open-source foundation. On September 25,
+2025, the Fesod repository was
+officially transferred to the Apache Software Foundation.</p>
+<p>Fesod was originally named FastExcel and was officially open-sourced on GitHub in October 2024. With continuous project
+maintenance and iteration by the community members, as well as the continuous growth of the community, now the Fesod
+project has officially been announced to join the Apache Incubator. This marks a new beginning for the Fesod project,
+indicating that open-source community collaboration will become more standardized and internationalized!</p>
+<p><img decoding="async" loading="lazy" alt="blog-20250917" src="https://fesod.apache.org/assets/images/20250917-01-e2db1d5bffc9ab4c98ce8f55ece35090.png" width="1207" height="1595" class="img_BbTd"></p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="introduction">Introduction<a href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no"></a></h2>
+<p>Apache Fesod (Incubating) is a high-performance and memory-efficient Java library for reading and writing
+spreadsheet files, designed to simplify development and ensure reliability. The name fesod (pronounced <code>/ˈfɛsɒd/</code>), an
+acronym for "fast easy spreadsheet and other documents," expresses the project's origin, background, and vision.</p>
+<p>Apache Fesod (Incubating) can provide developers and enterprises with great freedom and flexibility. We plan to
+introduce more new features in the future to continually enhance user experience and tool usability. Apache Fesod (
+Incubating) is committed to being your best choice for handling spreadsheet files.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="features">Features<a href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features" translate="no"></a></h2>
+<ul>
+<li class=""><strong>High-performance Reading and Writing</strong>: Apache Fesod (Incubating) focuses on performance optimization, capable of
+efficiently handling large-scale spreadsheet data. Compared to some traditional spreadsheet processing libraries, it
+can
+significantly reduce memory consumption.</li>
+<li class=""><strong>Simplicity and Ease of Use</strong>: The library offers a simple and intuitive API, allowing developers to easily integrate
+it into projects, whether for simple spreadsheet operations or complex data processing.</li>
+<li class=""><strong>Stream Operations</strong>: Apache Fesod (Incubating) supports stream reading, minimizing the problem of loading large
+amounts of data at once. This design is especially important when dealing with hundreds of thousands or even millions
+of rows of data.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="current-development-status">Current Development Status<a href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator#current-development-status" class="hash-link" aria-label="Direct link to Current Development Status" title="Direct link to Current Development Status" translate="no"></a></h2>
+<p>The project was initiated by the original core maintainer in 2024, aiming to provide a more efficient Excel processing
+solution and ensure long-term sustainable maintenance. Since its open-source status, a small community has been
+initially established. The main repository has received a total of <strong>5.0K+</strong> stars on GitHub, has released community
+versions <strong>5</strong> times, and has <strong>20+</strong> contributors.
+We have received continuous widespread attention and support from the community, which is both a recognition of our past
+work and an expectation for our future development.</p>
+<p><img decoding="async" loading="lazy" alt="blog-20250917" src="https://fesod.apache.org/assets/images/20250917-02-8ffdd34d6cbc80004f5404c95a83de58.png" width="826" height="551" class="img_BbTd"></p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="why-join-the-apache-incubator">Why Join the Apache Incubator<a href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator#why-join-the-apache-incubator" class="hash-link" aria-label="Direct link to Why Join the Apache Incubator" title="Direct link to Why Join the Apache Incubator" translate="no"></a></h2>
+<p>Joining the Apache Incubator is mainly based on the following reasons:</p>
+<ul>
+<li class="">Under the guidance of the Apache Mature Open Source Foundation, the collaboration of open source projects and the
+operation of community governance will become more standardized.</li>
+<li class="">Build a more prosperous and diverse developer community. We hope to attract more outstanding developers from home and
+abroad to join, making the developer community more diverse.</li>
+<li class="">Expand the application scope and encourage its integration into more open source and commercial projects, promoting
+the development of new use cases and functions.</li>
+</ul>
+<p>Next, the community will be guided by the Apache incubator mentors to manage and operate the community in accordance
+with the concept of "Community over Code", and also ensure that every outstanding contributor can be recognized. At the
+level of open-source products, listen to user feedback, improve and optimize the product usage experience, and build
+connections with the open-source ecosystem.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="introduction-of-the-supervisor">Introduction of the Supervisor<a href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator#introduction-of-the-supervisor" class="hash-link" aria-label="Direct link to Introduction of the Supervisor" title="Direct link to Introduction of the Supervisor" translate="no"></a></h2>
+<ul>
+<li class="">tison(Champion)</li>
+<li class="">Dave Fisher</li>
+<li class="">PJ Fanning</li>
+<li class="">Huajie Wang</li>
+</ul>
+<p>Thank you all for your selfless assistance. You provided professional guidance in terms of compliance and process
+advancement. Special thanks to the project Champion, @tison. During the project's journey into the incubator, he/she led
+the entire process from the drafting stage of the proposal to discussions and ultimately to the initiation of voting,
+offering many valuable professional suggestions and guidance.</p>
+<p>We believe that with the guidance of all the mentors, the community will grow more healthily in the future.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="join-community">Join Community<a href="https://fesod.apache.org/blog/2025/09/17/fesod-entered-apache-incubator#join-community" class="hash-link" aria-label="Direct link to Join Community" title="Direct link to Join Community" translate="no"></a></h2>
+<p><strong>Open Source</strong></p>
+<ul>
+<li class=""><a href="https://github.com/apache/fesod" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/fesod</a></li>
+</ul>
+<p><strong>Website</strong></p>
+<ul>
+<li class=""><a href="https://fesod.apache.org/" target="_blank" rel="noopener noreferrer" class="">https://fesod.apache.org/</a></li>
+</ul>
+<p><strong>Mailing Lists</strong></p>
+<ul>
+<li class=""><a href="mailto:dev@fesod.apache.org" target="_blank" rel="noopener noreferrer" class="">dev@fesod.apache.org</a></li>
+</ul>]]></content:encoded>
+ <category>announcement</category>
+ </item>
+ </channel>
+</rss>
\ No newline at end of file
diff --git a/blog/tags/announcement/index.html b/blog/tags/announcement/index.html
new file mode 100644
index 00000000..27de76c3
--- /dev/null
+++ b/blog/tags/announcement/index.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">3 posts tagged with "announcement" | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fe [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This is not only a technical iteration but also a significant milestone: <strong>the first official release of Fesod since joining the Apache Software Foundation (ASF) Incubator.</strong> Over the past few months, the community has collaboratively completed extensive compliance improvements, architectural refactoring, and functional enhancements. This release marks Fesod’s readiness to embark on a new chapter of high-performance Excel processing under the ASF governance.</p></div><foo [...]
+of the Apache Foundation Incubator.
+According to the Apache Foundation <a href="https://lists.apache.org/thread/k744v8ff22mom3bplqkjnc2qvtksj59f" target="_blank" rel="noopener noreferrer" class="">mailing list</a>, it
+was approved with 9 binding votes, with no abstentions or opposing
+votes, to accept Fesod into the Apache Incubator. This marked its official status as an incubation project under the
+<a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache Software Foundation</a>, the world's largest open-source foundation. On September 25,
+2025, the Fesod repository was
+officially transferred to the Apache Software Foundation.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/announcement">announcement</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about Way to Go: Fesod successfully entered Apache Incubator" href="/blog/2025/09/17/fesod-entered-apache-inc [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/apache/index.html b/blog/tags/apache/index.html
new file mode 100644
index 00000000..535c8240
--- /dev/null
+++ b/blog/tags/apache/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">2 posts tagged with "apache" | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.ap [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>Hello everyone, <code>bengbengbalabalabeng</code> here. I am incredibly honored and thrilled to share some great news with you all: I recently received an official invitation to become a Committer for the <strong>Apache Fesod (Incubating)</strong> project.</p>
+<p>From starting out as an everyday user to submitting my first bug fix, and eventually diving deep into code contributions, documentation improvements, and community support—this journey has been incredibly rewarding. I'd like to take this opportunity to document my open-source adventure so far.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRe [...]
+<blockquote>
+<p>Hello everyone! It's a great honor to be invited by the Apache Fesod community to become a Committer. I'm thrilled to share my open source journey and how I got here.</p>
+</blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/opensource">opensource</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/apache">apache</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/committer">committer</a></li><li class="ta [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/committer/index.html b/blog/tags/committer/index.html
new file mode 100644
index 00000000..a45686a4
--- /dev/null
+++ b/blog/tags/committer/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">2 posts tagged with "committer" | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>Hello everyone, <code>bengbengbalabalabeng</code> here. I am incredibly honored and thrilled to share some great news with you all: I recently received an official invitation to become a Committer for the <strong>Apache Fesod (Incubating)</strong> project.</p>
+<p>From starting out as an everyday user to submitting my first bug fix, and eventually diving deep into code contributions, documentation improvements, and community support—this journey has been incredibly rewarding. I'd like to take this opportunity to document my open-source adventure so far.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRe [...]
+<blockquote>
+<p>Hello everyone! It's a great honor to be invited by the Apache Fesod community to become a Committer. I'm thrilled to share my open source journey and how I got here.</p>
+</blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/opensource">opensource</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/apache">apache</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/committer">committer</a></li><li class="ta [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/cve-2026-49328/index.html b/blog/tags/cve-2026-49328/index.html
new file mode 100644
index 00000000..419ce44e
--- /dev/null
+++ b/blog/tags/cve-2026-49328/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">One post tagged with "CVE-2026-49328" | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https:/ [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/fastexcel/index.html b/blog/tags/fastexcel/index.html
new file mode 100644
index 00000000..036aff7a
--- /dev/null
+++ b/blog/tags/fastexcel/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">One post tagged with "fastexcel" | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://feso [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This article demonstrates how to write a declarative OpenRewrite recipe that migrates your project from <code>cn.idev.excel:fastexcel:1.3.0</code> to <code>org.apache.fesod:fesod-sheet:2.0.1-incubating</code>, covering both Maven and Gradle builds.</p>
+</blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/migration">migration</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/fastexcel">fastexcel</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/fesod">fesod</a></li></ul></div><div c [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/fesod/index.html b/blog/tags/fesod/index.html
new file mode 100644
index 00000000..23b7e495
--- /dev/null
+++ b/blog/tags/fesod/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">3 posts tagged with "fesod" | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apa [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This article demonstrates how to write a declarative OpenRewrite recipe that migrates your project from <code>cn.idev.excel:fastexcel:1.3.0</code> to <code>org.apache.fesod:fesod-sheet:2.0.1-incubating</code>, covering both Maven and Gradle builds.</p>
+</blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/migration">migration</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/fastexcel">fastexcel</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/fesod">fesod</a></li></ul></div><div c [...]
+<p>Hello everyone, <code>bengbengbalabalabeng</code> here. I am incredibly honored and thrilled to share some great news with you all: I recently received an official invitation to become a Committer for the <strong>Apache Fesod (Incubating)</strong> project.</p>
+<p>From starting out as an everyday user to submitting my first bug fix, and eventually diving deep into code contributions, documentation improvements, and community support—this journey has been incredibly rewarding. I'd like to take this opportunity to document my open-source adventure so far.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRe [...]
+<blockquote>
+<p>Hello everyone! It's a great honor to be invited by the Apache Fesod community to become a Committer. I'm thrilled to share my open source journey and how I got here.</p>
+</blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/opensource">opensource</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/apache">apache</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/committer">committer</a></li><li class="ta [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
new file mode 100644
index 00000000..08d86aa4
--- /dev/null
+++ b/blog/tags/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Tags | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/blog/tags"><meta data-rh= [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/migration/index.html b/blog/tags/migration/index.html
new file mode 100644
index 00000000..9ecb8143
--- /dev/null
+++ b/blog/tags/migration/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">One post tagged with "migration" | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://feso [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This article demonstrates how to write a declarative OpenRewrite recipe that migrates your project from <code>cn.idev.excel:fastexcel:1.3.0</code> to <code>org.apache.fesod:fesod-sheet:2.0.1-incubating</code>, covering both Maven and Gradle builds.</p>
+</blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/migration">migration</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/fastexcel">fastexcel</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/fesod">fesod</a></li></ul></div><div c [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/opensource/index.html b/blog/tags/opensource/index.html
new file mode 100644
index 00000000..4807083e
--- /dev/null
+++ b/blog/tags/opensource/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">2 posts tagged with "opensource" | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://feso [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>Hello everyone, <code>bengbengbalabalabeng</code> here. I am incredibly honored and thrilled to share some great news with you all: I recently received an official invitation to become a Committer for the <strong>Apache Fesod (Incubating)</strong> project.</p>
+<p>From starting out as an everyday user to submitting my first bug fix, and eventually diving deep into code contributions, documentation improvements, and community support—this journey has been incredibly rewarding. I'd like to take this opportunity to document my open-source adventure so far.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRe [...]
+<blockquote>
+<p>Hello everyone! It's a great honor to be invited by the Apache Fesod community to become a Committer. I'm thrilled to share my open source journey and how I got here.</p>
+</blockquote></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_JX_u padding--none margin-left--sm"><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/opensource">opensource</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/apache">apache</a></li><li class="tag_CGGV"><a rel="tag" class="tag_C9v0 tagRegular_Xmry" href="/blog/tags/committer">committer</a></li><li class="ta [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/release/index.html b/blog/tags/release/index.html
new file mode 100644
index 00000000..10d6052c
--- /dev/null
+++ b/blog/tags/release/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">One post tagged with "release" | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod. [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This is not only a technical iteration but also a significant milestone: <strong>the first official release of Fesod since joining the Apache Software Foundation (ASF) Incubator.</strong> Over the past few months, the community has collaboratively completed extensive compliance improvements, architectural refactoring, and functional enhancements. This release marks Fesod’s readiness to embark on a new chapter of high-performance Excel processing under the ASF governance.</p></div><foo [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/security/index.html b/blog/tags/security/index.html
new file mode 100644
index 00000000..efe22a60
--- /dev/null
+++ b/blog/tags/security/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">One post tagged with "security" | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/brand/index.html b/community/brand/index.html
new file mode 100644
index 00000000..fd2641be
--- /dev/null
+++ b/community/brand/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-brand" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Brand | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/brand"><meta d [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p><img decoding="async" loading="lazy" alt="logo" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjIyIiBoZWlnaHQ9IjIyMCIgdmlld0JveD0iMCAwIDIyMiAyMjAiIGZpbGw9Im5vbmUiPjxwYXRoICAgICBmaWxsPSIjMTQ4MjRCIiAgZD0iTTExMy4zMjQgMTYzLjkzOUw4MS43NjY0IDEzMi4zODJMODEuNzY2NCAxMzIuMzgyQzg1LjQxNSAxMzYuMDMgODUuNDE1MSAxNDEuOTQ2IDgxLjc2NjUgMTQ1LjU5NUw4MS42IDE0NS43NjFMNjYuMjQ0OSAxNjEuMTE2QzYyLjA2NiAxNjUuMj [...]
+<p>Download: <a href="/assets/files/fesod-logo-icon-fe2b95b7518918c8494bba4f27944e16.svg" target="_blank" class="">SVG</a> | <a href="/assets/files/fesod-logo-icon-3285667fcb12e822454e1e8bc1296eed.png" target="_blank" class="">PNG</a></p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="brand-logo">Brand Logo<a href="#brand-logo" class="hash-link" aria-label="Direct link to Brand Logo" title="Direct link to Brand Logo" translate="no"></a></h2>
+<p><img decoding="async" loading="lazy" alt="logo" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNTkxIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDU5MSAxODAiIGZpbGw9Im5vbmUiPjxwYXRoICAgICBmaWxsPSIjMTQ4MjRCIiAgZD0iTTk1Ljg4OTcgMTM5LjYyTDY2LjQwMjcgMTEwLjEzM0w2Ni40MDI3IDExMC4xMzNDNjkuODExOSAxMTMuNTQyIDY5LjgxMiAxMTkuMDcgNjYuNDAyNyAxMjIuNDc5TDY2LjI0NzEgMTIyLjYzNUw1MS44OTkzIDEzNi45ODNDNDcuOTk0NCAxND [...]
+<p>Download: <a href="/assets/files/fesod-logo-e965e5189d96bd03fa69a35f3d899546.svg" target="_blank" class="">SVG</a> | <a href="/assets/files/fesod-logo-e09e531bdeeb40e7484aaa6dba7f672f.png" target="_blank" class="">PNG</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/community/brand.md" target="_blank" rel="noopener norefe [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/committer/become-committer/index.html b/community/committer/become-committer/index.html
new file mode 100644
index 00000000..3de92844
--- /dev/null
+++ b/community/committer/become-committer/index.html
@@ -0,0 +1,88 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-committer/become-committer" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Become A Committer | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/c [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<ul>
+<li class=""><strong>(Co)mmunity</strong> - You can join us via our mailing list, issue
+trackers, discussions page to interact with community members, and
+share vision and knowledge</li>
+<li class=""><strong>(P)roject</strong> - a clear vision and consensus are needed</li>
+<li class=""><strong>(Do)cumentation</strong> - without it, the stuff remains only in the minds
+of the authors</li>
+<li class=""><strong>(C)ode</strong> - discussion goes nowhere without code</li>
+</ul>
+<p>Apache Fesod (Incubating) community strives to be meritocratic. Thus, once someone has contributed sufficiently to any area of CoPDoC they can be a candidate for committer-ship and at last voted in as an Apache Fesod (Incubating) committer. Being an Apache Fesod (Incubating) committer does not necessarily mean you must commit code with your commit privilege to the codebase, it means you are committed to the Apache Fesod (Incubating) project and are productively contributing to our com [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="committer-requirements">Committer requirements<a href="#committer-requirements" class="hash-link" aria-label="Direct link to Committer requirements" title="Direct link to Committer requirements" translate="no"></a></h2>
+<p>There are no strict rules for becoming a committer or PPMC member.
+Candidates for new committers are typically people that are active
+contributors and community members. Anyway, if the rules can be
+clarified a little bit, it can somehow clear the doubts in the minds
+of contributors and make the community more transparent, reasonable,
+and fair.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="continuous-contributions">Continuous contributions<a href="#continuous-contributions" class="hash-link" aria-label="Direct link to Continuous contributions" title="Direct link to Continuous contributions" translate="no"></a></h3>
+<p>Committer candidates should have a decent amount of continuous
+engagements and contributions (fixing bugs, adding new features,
+writing documentation, maintaining issues boards, code review, or answering
+community questions) to Apache Fesod (Incubating).</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="quality-of-contributions">Quality of contributions<a href="#quality-of-contributions" class="hash-link" aria-label="Direct link to Quality of contributions" title="Direct link to Quality of contributions" translate="no"></a></h3>
+<ul>
+<li class="">A solid general understanding of the project</li>
+<li class="">Well tested, well-designed, following Apache Fesod (Incubating) coding
+standards, and simple patches.</li>
+<li class="">Well-organized and detailed user-oriented documentation.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="community-involvement">Community involvement<a href="#community-involvement" class="hash-link" aria-label="Direct link to Community involvement" title="Direct link to Community involvement" translate="no"></a></h3>
+<ul>
+<li class="">Be active, courteous, and respectful on the dev mailing list and
+help mentor newer contributors
+and users.</li>
+<li class="">Be active, courteous, and respectful on the issue tracker for
+project maintenance</li>
+<li class="">Be active, courteous, and respectful for pull requests reviewing</li>
+<li class="">Be involved in the design road map discussions with a professional
+and diplomatic approach even if there is a disagreement</li>
+<li class="">Promoting the project by writing articles or holding events</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="routine">Routine<a href="#routine" class="hash-link" aria-label="Direct link to Routine" title="Direct link to Routine" translate="no"></a></h2>
+<ul>
+<li class="">Check the list of pull requests and issues to be processed in the community on a daily basis.
+<ul>
+<li class="">Including label issue, reply issue, close issue;</li>
+<li class="">Assign issue to the appropriate committer, namely assignee;</li>
+</ul>
+</li>
+<li class="">After a committer is assigned with an issue, the following work is required:
+<ul>
+<li class="">Estimate whether it is a long-term issue. If it is, please label it as pending;</li>
+<li class="">Add issue labels, such as bug, enhancement, discussion, etc;</li>
+<li class="">Add milestone.</li>
+</ul>
+</li>
+<li class="">Pull request that committer submits needs to add labels and milestone based on the type and release period.</li>
+<li class="">When committer reviewed and approved any pull request, committer could <code>squash and merge</code> to main branch. If there is any question you concerned about this pull request, please reply directly to the related issue.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="benefits">Benefits<a href="#benefits" class="hash-link" aria-label="Direct link to Benefits" title="Direct link to Benefits" translate="no"></a></h2>
+<p>Every Apache Committer is eligible for a free license that grants them access to all the JetBrains IDEs such as IntelliJ IDEA, PyCharm, and other desktop tools.</p>
+<p>If you are an Apache Fesod (Incubating) Committer and still haven’t received a free JetBrains license, please use your <code>@apache.org</code> email address to <a href="https://www.jetbrains.com/shop/eform/apache?product=ALL" target="_blank" rel="noopener noreferrer" class="">All Products Packs for Apache committers</a> now for the subsequent development of Apache Fesod (Incubating).</p>
+<p>If you have obtained a free JetBrains subscription but it has expired, you can reactivate all product packs for free using your <code>@apache.org</code> email address by this link and click <code>Refresh license list</code> in your JetBrains desktop tools (e.g. IntelliJ IDEA) to refresh the subscription.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apa [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/committer/icla/index.html b/community/committer/icla/index.html
new file mode 100644
index 00000000..8ca71298
--- /dev/null
+++ b/community/committer/icla/index.html
@@ -0,0 +1,84 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-committer/icla" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Sign iCLA Guide | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/comm [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>The process of submitting iCLA are:</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="download">Download<a href="#download" class="hash-link" aria-label="Direct link to Download" title="Direct link to Download" translate="no"></a></h2>
+<p>Click the link <a href="https://www.apache.org/licenses/contributor-agreements.html#clas" target="_blank" rel="noopener noreferrer" class="">Contributor License Agreements</a> and find iCLA under the Contributor License Agreements section.</p>
+<p><img decoding="async" loading="lazy" alt="iCLA" src="/assets/images/icla-01-83a226e824e1b9a9d08813f21b882e31.png" width="784" height="201" class="img_BbTd"></p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="fill-the-content">Fill the content<a href="#fill-the-content" class="hash-link" aria-label="Direct link to Fill the content" title="Direct link to Fill the content" translate="no"></a></h2>
+<p><img decoding="async" loading="lazy" alt="iCLA" src="/assets/images/icla-02-e761fe1f9d7c718f085b70b9fba8fc39.png" width="858" height="398" class="img_BbTd"></p>
+<p>Fill in the following columns in English.</p>
+<ul>
+<li class="">
+<p>Full name</p>
+<p>Please fill in your real name. The given name comes first, followed by the surname. The first letter of each should be capitalized. (Note:Leave a space between family name and last name, remember capitalize the first letter, please write family name at first.)</p>
+</li>
+<li class="">
+<p>Public name:</p>
+<p>the public name should be a real name or pen name and not a user id.</p>
+</li>
+<li class="">
+<p>Postal Address:</p>
+<p>The English address is detailed down to the house number.</p>
+</li>
+<li class="">
+<p>Country:</p>
+<p>Please fill in your country.</p>
+</li>
+<li class="">
+<p>E-mail:</p>
+<p>Please fill in your personal email address.</p>
+</li>
+<li class="">
+<p>(optional) preferred Apache id(s)</p>
+<p>You need to choose a unique Apache ID that hasn't been taken. Check <a href="https://people.apache.org/committer-index.html" target="_blank" rel="noopener noreferrer" class="">ASF Committers by ID</a> to see which IDs are still available.</p>
+</li>
+<li class="">
+<p>(optional) notify project:</p>
+<p>Apache Fesod (Incubating)</p>
+</li>
+</ul>
+<p>Refer to this case</p>
+<p><img decoding="async" loading="lazy" alt="iCLA" src="/assets/images/icla-03-c8df2f12ca6b2bc591a4e73aced61280.png" width="721" height="393" class="img_BbTd"></p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="sign">Sign<a href="#sign" class="hash-link" aria-label="Direct link to Sign" title="Direct link to Sign" translate="no"></a></h2>
+<p><img decoding="async" loading="lazy" alt="iCLA" src="/assets/images/icla-04-4925b6c82e6383ae69d9e1b0b92d2145.png" width="685" height="112" class="img_BbTd"></p>
+<ul>
+<li class="">
+<p>Please sign:</p>
+<p>Apache only accept hand-written signature or gpg signature, here we suggest choosing hand-written way. Print the document and sign your name on the paper, or use electric pen.</p>
+</li>
+<li class="">
+<p>Date: Signing Date(yyyy-MM-dd)</p>
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="send-mail">Send mail<a href="#send-mail" class="hash-link" aria-label="Direct link to Send mail" title="Direct link to Send mail" translate="no"></a></h2>
+<p>Take a photo or scan the signed document into a PDF format, and rename it as "name-icla.pdf".</p>
+<p>Please send the email to <code>secretary@apache.org</code> and also forward it to <code>private@fesod.apache.org</code>. Attach the PDF to the email. For the email content, please refer to the following:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Hello Apache,</span><br></span><span class="token-line" style="color:#393A34"><span class=" [...]
+<blockquote>
+<p>This email should include the details from the previous committer invitation correspondence. It is recommended to reply to the earlier email exchange, then modify the subject line and recipients accordingly.</p>
+</blockquote>
+<p>After waiting for some time, you will receive an email from <code>root@apache.org</code>.</p>
+<p>When you receive an email with the subject line: "Welcome to the Apache Software Foundation", congratulations! You have now obtained an Apache ID.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/community/committer/icla.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentCol [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/committer/onboarding/index.html b/community/committer/onboarding/index.html
new file mode 100644
index 00000000..9e0fb34c
--- /dev/null
+++ b/community/committer/onboarding/index.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-committer/onboarding" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Onboarding | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/committer [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>If they decide in favor, they should select "Reply All" and express their decision. Please provide the reference content of this reply email:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Hi, i accept. Thanks for invitation.</span><br></span></code></pre></div></div>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="submit-cla">Submit CLA<a href="#submit-cla" class="hash-link" aria-label="Direct link to Submit CLA" title="Direct link to Submit CLA" translate="no"></a></h2>
+<p>We require all contributors to sign a Contributor License Agreement (CLA). This step refers to <a class="" href="/community/committer/icla">Sign ICLA guide</a></p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="setup-asf-account">Setup ASF Account<a href="#setup-asf-account" class="hash-link" aria-label="Direct link to Setup ASF Account" title="Direct link to Setup ASF Account" translate="no"></a></h2>
+<p>Go to <a href="https://id.apache.org/reset/enter" target="_blank" rel="noopener noreferrer" class="">Apache Account Utility</a> and enter your Apache ID.</p>
+<p><img decoding="async" loading="lazy" alt="Reset Password" src="/assets/images/reset-passwd-e8828118db9277c6fe25a82a5a0bb3da.png" width="882" height="608" class="img_BbTd"></p>
+<p>After clicking "Send Email", a prompt will appear indicating that the email has been sent successfully. Then check your email and click the provided link to reset your password.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="link-asf-account-to-github">Link ASF Account to GitHub<a href="#link-asf-account-to-github" class="hash-link" aria-label="Direct link to Link ASF Account to GitHub" title="Direct link to Link ASF Account to GitHub" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="Link GitHub" src="/assets/images/link-github-d7d62b2548477c375730056807eacc89.png" width="681" height="178" class="img_BbTd"></p>
+<ol>
+<li class="">Navigate to <a href="https://gitbox.apache.org/boxer/" target="_blank" rel="noopener noreferrer" class="">ASF Boxer</a> and enter your Apache ID and password.</li>
+<li class="">Click "Link GitHub username to ASF id" and follow the given instructions to link your ASF account to GitHub.</li>
+<li class="">Check your email titled "[GitHub] @asfgit has invited you to join the @apache organization" and accept the invitation.</li>
+<li class="">Wait momentarily, and the website will refresh on its own.</li>
+<li class="">(If you do not enable 2FA on GitHub) Please follow the <a href="https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication" target="_blank" rel="noopener noreferrer" class="">instruction</a>.</li>
+</ol>
+<p>Your Apache ID and GitHub ID will now both appear on <a href="https://gitbox.apache.org/boxer/" target="_blank" rel="noopener noreferrer" class="">ASF Boxer</a>. Congrats on successfully linking your ASF account to GitHub!</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="email-settings">Email Settings<a href="#email-settings" class="hash-link" aria-label="Direct link to Email Settings" title="Direct link to Email Settings" translate="no"></a></h2>
+<p>You cannot work directly with your Apache email address. You must set up forwarding for this address.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="receive-email">Receive Email<a href="#receive-email" class="hash-link" aria-label="Direct link to Receive Email" title="Direct link to Receive Email" translate="no"></a></h3>
+<p>You can change your forwarding email address at <a href="https://id.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache Account Utility Platform</a></p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="send-email">Send Email<a href="#send-email" class="hash-link" aria-label="Direct link to Send Email" title="Direct link to Send Email" translate="no"></a></h3>
+<p>To send emails using your apache.org address, configure your email client to leverage the <code>mail-relay</code> service. For specifics, refer to <a href="https://infra.apache.org/committer-email.html" target="_blank" rel="noopener noreferrer" class="">this guide</a>.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="gmail">Gmail<a href="#gmail" class="hash-link" aria-label="Direct link to Gmail" title="Direct link to Gmail" translate="no"></a></h3>
+<ol>
+<li class="">Open Gmail settings and select "See all settings".</li>
+<li class="">Navigate to "Accounts and Import", then locate "Send mail as".</li>
+<li class="">Click "Add another email address" and enter your name and apache.org email address.</li>
+<li class="">Input the SMTP server information:
+<ul>
+<li class="">SMTP Server: mail-relay.apache.org</li>
+<li class="">Port: 587</li>
+<li class="">Username: your apache ID</li>
+<li class="">Password: your apache password</li>
+<li class="">Secured connection using TLS</li>
+</ul>
+</li>
+<li class="">Click "Add account" and you will receive an email from Gmail that need to confirm.</li>
+</ol>
+<p><img decoding="async" loading="lazy" alt="Gmail Setting" src="/assets/images/gmail-setting-64fa2bef013a1817489ee6195d293a97.png" width="772" height="418" class="img_BbTd"></p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="subscribe-to-mailing-list">Subscribe to Mailing List<a href="#subscribe-to-mailing-list" class="hash-link" aria-label="Direct link to Subscribe to Mailing List" title="Direct link to Subscribe to Mailing List" translate="no"></a></h3>
+<p>Please refer to <a class="" href="/community/#how-to-subscribe-to-a-mailing-list">Subscribe to Mailing List</a></p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="enable-2fa-on-github">Enable 2FA on GitHub<a href="#enable-2fa-on-github" class="hash-link" aria-label="Direct link to Enable 2FA on GitHub" title="Direct link to Enable 2FA on GitHub" translate="no"></a></h2>
+<p>Two-factor authentication (2FA) refers to the authentication method that combines both passport, and an object (credit card, SMS phone, token or biomarkers as fingerprint) to identify a user.
+To ensure the security of the committer’s account, we need you to enable 2FA to sign in and contribute codes on GitHub.</p>
+<p>More details, please refer to <a href="https://help.github.com/articles/requiring-two-factor-authentication-in-your-organization/" target="_blank" rel="noopener noreferrer" class="">2FA</a>.</p>
+<p>For detailed operations, please refer to <a href="https://help.github.com/articles/configuring-two-factor-authentication-via-a-totp-mobile-app/" target="_blank" rel="noopener noreferrer" class="">Enable Two Factor Authentication with TOTP</a>.</p>
+<p>After enabling 2FA, you need to sign in GitHub with the way of username/password + mobile phone authentication code.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/community/committer/onboarding.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/contribution/code-review-guide/index.html b/community/contribution/code-review-guide/index.html
new file mode 100644
index 00000000..fc414d8c
--- /dev/null
+++ b/community/contribution/code-review-guide/index.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contribution/code-review-guide" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Code Review Guidelines | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/communi [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<ul>
+<li class="">Contributors have a good contribution experience.</li>
+<li class="">Our reviews are structured and check all important aspects of a contribution.</li>
+<li class="">We make sure to keep a high code quality in Apache Fesod (Incubating).</li>
+<li class="">We avoid situations where contributors and reviewers spend a lot of time refining a contribution that gets rejected later.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="code-review-guidelines">Code Review Guidelines<a href="#code-review-guidelines" class="hash-link" aria-label="Direct link to Code Review Guidelines" title="Direct link to Code Review Guidelines" translate="no"></a></h2>
+<ul>
+<li class="">Always maintain a high standard of review so that the quality of the entire product can be better guaranteed.</li>
+<li class="">Changes to the architecture or the user interface need to be fully discussed by the community. This can be either in a mail group or in a GitHub issue.</li>
+<li class="">Test coverage. The added logic needs to be covered by a corresponding test. When the old code for which there is no test is changed, this requirement can be appropriately relaxed.</li>
+<li class="">Documentation. Newly added features must be documented, otherwise such code is not allowed.</li>
+<li class="">Readability of the code. If reviewers are not very clear about the logic of the code, then you can ask the contributor to explain the logic. And writing sufficient comments in the code to explain the logic is encouraged.</li>
+<li class="">Try to give a clear conclusion at the end of your comments, "approve" or "change request". If it's a minor issue, you can just leave a comment.</li>
+<li class="">Recommend to submit a "+1 Comment" rather than a "+1 Approve" to indicate that it looks good to me but I am not sure whether this part of the function is correct. It needs someone else's approve.</li>
+<li class="">Respect each other and learn from each other. Maintain a polite tone when commenting, try to give reasons for the suggestions.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="pr-review-guidelines">PR Review Guidelines<a href="#pr-review-guidelines" class="hash-link" aria-label="Direct link to PR Review Guidelines" title="Direct link to PR Review Guidelines" translate="no"></a></h2>
+<ul>
+<li class="">Check whether the contribution is sufficiently well-described to support a good review</li>
+<li class="">The reviewer needs to perform a code-level review.</li>
+<li class="">Once a reviewer has commented on a PR, they need to keep following up on subsequent changes to that PR.</li>
+<li class="">A PR must get at least a +1 approved from committer who is not the author.</li>
+<li class="">After the first +1 to the PR, wait at least one working day before merging. The main purpose is to wait for the rest of the community to come to review.</li>
+<li class="">For architecture or user interface changes, a PR needs to get at least 3 +1's to merge.</li>
+<li class="">Regression cases and CI tests should pass before merging.</li>
+<li class="">Select "squash and merge" to merge.</li>
+<li class="">When there is a disagreement about a modification, try to discuss the resolution. If the discussion doesn't work out, it can be resolved by a vote in <code>dev@fesod.apache.org</code> by the majority rules.</li>
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/community/contribution/code-review-guide.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Bllq" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1. [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/contribution/commit-format/index.html b/community/contribution/commit-format/index.html
new file mode 100644
index 00000000..4b9a7570
--- /dev/null
+++ b/community/contribution/commit-format/index.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contribution/commit-format" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Commit Format Specification | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/co [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="commit-rules">Commit Rules<a href="#commit-rules" class="hash-link" aria-label="Direct link to Commit Rules" title="Direct link to Commit Rules" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="commit-message">Commit Message<a href="#commit-message" class="hash-link" aria-label="Direct link to Commit Message" title="Direct link to Commit Message" translate="no"></a></h3>
+<p>Please ensure that commit messages are clear and descriptive, use <strong>English</strong>, and do not exceed 100 characters.</p>
+<p>The following types of commit messages are allowed and must follow the following format:</p>
+<ul>
+<li class=""><strong>docs</strong>: Update documentation, e.g., <code>docs: update README.md</code></li>
+<li class=""><strong>feature/feat</strong>: New features, e.g., <code>feature: support for xxx</code></li>
+<li class=""><strong>bugfix/fix</strong>: Bug fixes, e.g., <code>fix: fix NPE in the A class</code></li>
+<li class=""><strong>refactor</strong>: Code refactoring (no functional changes), e.g., <code>refactor: optimise data processing logic</code></li>
+<li class=""><strong>style</strong>: Code formatting, e.g., <code>style: update code style</code></li>
+<li class=""><strong>test</strong>: Adding or improving tests, e.g., <code>test: add new test cases</code></li>
+<li class=""><strong>chore</strong>: Changes to the build process or auxiliary tools, e.g., <code>chore: improve issue template</code></li>
+<li class=""><strong>dependency</strong>: Modifications to third-party dependency libraries, e.g., <code>dependency: upgrade poi version to 5.4.1</code></li>
+</ul>
+<p>Avoid using vague commit messages like:</p>
+<ul>
+<li class=""><del>fixed issue</del></li>
+<li class=""><del>update code</del></li>
+</ul>
+<p>For assistance, refer to <a href="http://chris.beams.io/posts/git-commit/" target="_blank" rel="noopener noreferrer" class="">How to Write a Git Commit Message</a>.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="commit-content">Commit Content<a href="#commit-content" class="hash-link" aria-label="Direct link to Commit Content" title="Direct link to Commit Content" translate="no"></a></h3>
+<p>Each commit should contain complete and reviewable changes, ensuring:</p>
+<ul>
+<li class="">Avoid committing overly large changes.</li>
+<li class="">Each commit content is independent and can pass CI tests.</li>
+</ul>
+<p>Also, ensure the correct Git user information is configured when committing:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> config </span><span class="to [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="pr-description">PR Description<a href="#pr-description" class="hash-link" aria-label="Direct link to PR Description" title="Direct link to PR Description" translate="no"></a></h2>
+<p>To help reviewers quickly understand the content and purpose of the PR, use the <a href="https://github.com/apache/fesod/blob/main/.github/pull_request_template.md" target="_blank" rel="noopener noreferrer" class="">pull_request_template</a>. A detailed description greatly improves code review efficiency.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/ap [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/contribution/contribute-code/index.html b/community/contribution/contribute-code/index.html
new file mode 100644
index 00000000..125dcc2e
--- /dev/null
+++ b/community/contribution/contribute-code/index.html
@@ -0,0 +1,83 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contribution/contribute-code" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Code Contribution | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/co [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="workspace-preparation">Workspace Preparation<a href="#workspace-preparation" class="hash-link" aria-label="Direct link to Workspace Preparation" title="Direct link to Workspace Preparation" translate="no"></a></h2>
+<p>To develop this project, you need <strong>Maven 3.9 or above</strong> and <strong>JDK (Java Development Kit) 17 or above</strong>. However, you must use <strong>Java 1.8</strong> compatible language features during compilation to ensure this project can run in environments with Java 1.8 or above.</p>
+<blockquote>
+<p>You can use tools such as <a href="https://sdkman.io/" target="_blank" rel="noopener noreferrer" class="">SDKMAN</a> to configure multiple versions of the Java toolchain.</p>
+</blockquote>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="idea-settings">IDEA Settings<a href="#idea-settings" class="hash-link" aria-label="Direct link to IDEA Settings" title="Direct link to IDEA Settings" translate="no"></a></h2>
+<p>The following guidelines are for development using <code>IntelliJ IDEA</code>. Other versions may have some minor differences. Please follow all steps carefully.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="project-settings">Project Settings<a href="#project-settings" class="hash-link" aria-label="Direct link to Project Settings" title="Direct link to Project Settings" translate="no"></a></h3>
+<p>Set the project <a href="https://www.jetbrains.com/help/idea/project-settings-and-structure.html#language-level" target="_blank" rel="noopener noreferrer" class="">Language Level</a> to <code>8</code> to ensure backward compatibility.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="git-usage">Git Usage<a href="#git-usage" class="hash-link" aria-label="Direct link to Git Usage" title="Direct link to Git Usage" translate="no"></a></h2>
+<p>Ensure that you have registered a GitHub account and follow the steps below to configure your local development environment:</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="fork-the-repository">Fork the repository<a href="#fork-the-repository" class="hash-link" aria-label="Direct link to Fork the repository" title="Direct link to Fork the repository" translate="no"></a></h3>
+<p>Click the <code>Fork</code> button on the Fesod <a href="https://github.com/apache/fesod" target="_blank" rel="noopener noreferrer" class="">GitHub page</a> to copy the project to your GitHub account.</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">https://github.com/</span><span class="token operator" style="color:#393A34"><</span><sp [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="clone-repository">Clone Repository<a href="#clone-repository" class="hash-link" aria-label="Direct link to Clone Repository" title="Direct link to Clone Repository" translate="no"></a></h3>
+<p>Run the following command to clone the forked project to your local machine:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone git@github.com:</span>< [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="set-upstream-repository">Set Upstream Repository<a href="#set-upstream-repository" class="hash-link" aria-label="Direct link to Set Upstream Repository" title="Direct link to Set Upstream Repository" translate="no"></a></h3>
+<p>Set the official repository as <code>upstream</code> for easy synchronization of updates:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> remote </span><span class="to [...]
+<p>Running <code>git remote -v</code> can verify if the configuration is correct.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="new-branches-to-modify">New branches to modify<a href="#new-branches-to-modify" class="hash-link" aria-label="Direct link to New branches to modify" title="Direct link to New branches to modify" translate="no"></a></h3>
+<p>Create a new branch to develop</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> checkout </span><span class=" [...]
+<p><strong>Note</strong>:</p>
+<ul>
+<li class="">You must create a new branch to develop features <code>git checkout -b feature-xxx</code>. It is not recommended to use the <code>main</code> branch for direct development</li>
+<li class=""><code><your_branch_name></code> name is customized for you.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="submit-code-to-remote-branch">Submit code to remote branch<a href="#submit-code-to-remote-branch" class="hash-link" aria-label="Direct link to Submit code to remote branch" title="Direct link to Submit code to remote branch" translate="no"></a></h3>
+<p>After modifying the code locally, submit it to your own repository</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> commit </span><span class="to [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="pull-request">Pull request<a href="#pull-request" class="hash-link" aria-label="Direct link to Pull request" title="Direct link to Pull request" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="new-pull-request">New pull request<a href="#new-pull-request" class="hash-link" aria-label="Direct link to New pull request" title="Direct link to New pull request" translate="no"></a></h3>
+<p>Submit changes to the remote repository, you can see a green button "Compare & pull request" on your repository page, click it.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="fill-commit-message">Fill Commit Message<a href="#fill-commit-message" class="hash-link" aria-label="Direct link to Fill Commit Message" title="Direct link to Fill Commit Message" translate="no"></a></h3>
+<p>Please refer to <a class="" href="/community/contribution/commit-format">Commit Format Specification</a> to fill in the summary and details of the comment, and then click Create pull request to create it.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="ready-for-review">Ready for review<a href="#ready-for-review" class="hash-link" aria-label="Direct link to Ready for review" title="Direct link to Ready for review" translate="no"></a></h3>
+<p>After successful creation, Then the community Committers will do CodeReview, and then he will discuss some details (design, implementation, performance, etc.) with you, afterward you can directly update the code in this branch according to the suggestions (no need to create a new PR). When this pr is approved, the commit will be merged into the main branch.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="branch-definition">Branch definition<a href="#branch-definition" class="hash-link" aria-label="Direct link to Branch definition" title="Direct link to Branch definition" translate="no"></a></h2>
+<p>All contributions should be based on the <code>main</code> development branch. Additionally, there are the following branch types:</p>
+<ul>
+<li class=""><strong>release branches</strong>: Used for version releases (e.g., <code>1.1.0</code>, <code>1.1.1</code>).</li>
+<li class=""><strong>feature branches</strong>: Used for developing major features.</li>
+<li class=""><strong>hotfix branches</strong>: Used for fixing critical bugs.</li>
+</ul>
+<p>When submitting a PR, please ensure that the changes are based on the <code>main</code> branch.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="compile">Compile<a href="#compile" class="hash-link" aria-label="Direct link to Compile" title="Direct link to Compile" translate="no"></a></h2>
+<p>Run the following command to compile</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">mvn clean </span><span class="token function" style="color:#d73a49">install</span><span cla [...]
+<p>To speed up the build process, you can:</p>
+<ul>
+<li class="">Use <code>-DskipTests</code> to skip unit tests</li>
+<li class="">Use Maven's parallel build feature, e.g., <code>mvn clean install -DskipTests -T 1C</code></li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="code-style">Code Style<a href="#code-style" class="hash-link" aria-label="Direct link to Code Style" title="Direct link to Code Style" translate="no"></a></h2>
+<p>This project uses <a href="https://github.com/diffplug/spotless" target="_blank" rel="noopener noreferrer" class="">Spotless</a> as its code formatting tool. Please ensure you run the following command to automatically format your code before submitting:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">mvn spotless:apply</span><br></span></code></pre></div></div></div><footer class="theme-doc [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/contribution/contribute-doc/index.html b/community/contribution/contribute-doc/index.html
new file mode 100644
index 00000000..1e5aedca
--- /dev/null
+++ b/community/contribution/contribute-doc/index.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contribution/contribute-doc" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Docs Contribution | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/co [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>The official website is built using <a href="https://docusaurus.io/" target="_blank" rel="noopener noreferrer" class="">Docusaurus</a>, and the documentation is maintained in the <a href="https://github.com/apache/fesod/tree/main/website" target="_blank" rel="noopener noreferrer" class="">website</a> directory.Please note that whether it is for historical versions or the latest version of the docs, all modifications should be submitted as pull requests on the <code>apache/fesod</code> [...]
+<p>For how to submit pull requests, please refer to</p>
+<ul>
+<li class=""><a class="" href="/community/contribution/contribute-code">Code Contribution</a></li>
+<li class=""><a class="" href="/community/contribution/commit-format">Commit Format Specification</a></li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="requirements">Requirements<a href="#requirements" class="hash-link" aria-label="Direct link to Requirements" title="Direct link to Requirements" translate="no"></a></h2>
+<ul>
+<li class=""><a href="https://nodejs.org/en/download/" target="_blank" rel="noopener noreferrer" class="">Node.js</a> version 20.0 or above (which can be checked by running <code>node -v</code>). You can use <a href="https://github.com/nvm-sh/nvm" target="_blank" rel="noopener noreferrer" class="">nvm</a> for managing multiple Node versions on a single machine installed.</li>
+<li class="">When installing Node.js, you are recommended to check all checkboxes related to dependencies.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="directory-structure-description">Directory Structure Description<a href="#directory-structure-description" class="hash-link" aria-label="Direct link to Directory Structure Description" title="Direct link to Directory Structure Description" translate="no"></a></h2>
+<p>Docusaurus supports I18n. The main documentation directory structure that needs to be maintained is as follows:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">.</span><span class="token plain"></span><br></span><span class="token-line" s [...]
+<p>The directory structure for single-language documents is as follows:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">.</span><span class="token plain"></span><br></span><span class="token-line" s [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="writing-guidelines">Writing Guidelines<a href="#writing-guidelines" class="hash-link" aria-label="Direct link to Writing Guidelines" title="Direct link to Writing Guidelines" translate="no"></a></h2>
+<ul>
+<li class="">Use file paths with the <code>.md</code> extension</li>
+</ul>
+<div class="language-markdown codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-markdown codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">E [...]
+<ul>
+<li class="">Use paths relative to the docs/ directory</li>
+</ul>
+<div class="language-markdown codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-markdown codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">E [...]
+<ul>
+<li class="">Image files must be stored in the <code>static/img</code> directory and referenced using relative directory paths.</li>
+</ul>
+<div class="language-markdown codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-markdown codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">i [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="preview-and-generate-static-files">Preview and generate static files<a href="#preview-and-generate-static-files" class="hash-link" aria-label="Direct link to Preview and generate static files" title="Direct link to Preview and generate static files" translate="no"></a></h2>
+<p>Enter the <code>website</code> directory and execute the command</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="installation">Installation<a href="#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation" translate="no"></a></h3>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">pnpm</span><span class="token plain"> </span><span class="token fu [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="local-development">Local Development<a href="#local-development" class="hash-link" aria-label="Direct link to Local Development" title="Direct link to Local Development" translate="no"></a></h3>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># English</span><span class="token plain"></span> [...]
+<p>This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.</p>
+<blockquote>
+<p>Only one language version can be run at a time.</p>
+</blockquote>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="buildoptional">Build(Optional)<a href="#buildoptional" class="hash-link" aria-label="Direct link to Build(Optional)" title="Direct link to Build(Optional)" translate="no"></a></h2>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">pnpm</span><span class="token plain"> build</span><br></span></cod [...]
+<p>This command generates static content into the <code>build</code> directory and can be served using any static contents hosting service.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="document-format-inspection">Document Format Inspection<a href="#document-format-inspection" class="hash-link" aria-label="Direct link to Document Format Inspection" title="Direct link to Document Format Inspection" translate="no"></a></h2>
+<p>We uses <a href="https://github.com/DavidAnson/markdownlint-cli2" target="_blank" rel="noopener noreferrer" class="">markdownlint-cli2</a> to check document formatting. After writing the relevant Markdown articles, you can run the following command locally to pre-check whether the Markdown formatting meets the requirements:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">cd</span><span class="token plain"> website</span><br></span><span class="toke [...]
+<ul>
+<li class="">For formatting rules for Markdown articles you can refer to: <a href="https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md" target="_blank" rel="noopener noreferrer" class="">Markdown-lint-rules</a></li>
+<li class="">Markdown format configuration file in the project: <a href="https://github.com/apache/fesod/blob/main/website/.markdownlint-cli2.jsonc" target="_blank" rel="noopener noreferrer" class="">.markdownlint-cli2.jsonc</a></li>
+</ul>
+<hr></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/community/contribution/contribute-doc.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Bllq" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0. [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/contribution/index.html b/community/contribution/index.html
new file mode 100644
index 00000000..9406eef6
--- /dev/null
+++ b/community/contribution/index.html
@@ -0,0 +1,83 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contribution" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Contributor Guide | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/co [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="contribution-directions">Contribution Directions<a href="#contribution-directions" class="hash-link" aria-label="Direct link to Contribution Directions" title="Direct link to Contribution Directions" translate="no"></a></h2>
+<p>There are many ways to contribute to this project:</p>
+<ul>
+<li class="">Fix typos</li>
+<li class="">Fix bugs</li>
+<li class="">Remove redundant code</li>
+<li class="">Add test cases</li>
+<li class="">Enhance functionality</li>
+<li class="">Add comments to improve code readability</li>
+<li class="">Optimize code structure</li>
+<li class="">Improve or refine documentation</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="principle">Principle<a href="#principle" class="hash-link" aria-label="Direct link to Principle" title="Direct link to Principle" translate="no"></a></h3>
+<ul>
+<li class="">Any pull request that contributes to the improvement of the project should be encouraged.</li>
+<li class="">Before contributing a new feature, please propose and discuss it in an <code>issue</code> or <code>discussion</code>. We will not merge features that have not been discussed and confirmed.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="contribution-process">Contribution Process<a href="#contribution-process" class="hash-link" aria-label="Direct link to Contribution Process" title="Direct link to Contribution Process" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="find-tasks">Find tasks<a href="#find-tasks" class="hash-link" aria-label="Direct link to Find tasks" title="Direct link to Find tasks" translate="no"></a></h3>
+<p>Find the issue you are interested in! On our GitHub repo issue list, we often publish some issues with the label <code>good first issue</code> or <code>help wanted</code>. These issues welcome the help of contributors. Among them, <code>good first issues</code> tend to have low thresholds and are suitable for beginners.</p>
+<p>Of course, if you have a good idea, you can also propose it directly on GitHub Discussion or contact with community.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="discuss">Discuss<a href="#discuss" class="hash-link" aria-label="Direct link to Discuss" title="Direct link to Discuss" translate="no"></a></h3>
+<p>Please refer to <a class="" href="/community/feedback">Issue Feedback</a> to create an issue or discussion and endeavour to reach consensus.</p>
+<p><strong>Note</strong>: To request an issue, please note that it is not just a "please assign it to me", you need to explain your understanding of the issue, and your design, and if possible, you need to provide your POC code.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="implement">Implement<a href="#implement" class="hash-link" aria-label="Direct link to Implement" title="Direct link to Implement" translate="no"></a></h3>
+<p>Implement the change according to the approach agreed upon in the issue.</p>
+<ul>
+<li class="">Only start working on the implementation if there is consensus on the approach (e.g. you are assigned to the ticket)</li>
+<li class="">If you are newer, can refer to <a class="" href="/community/contribution/contribute-code">Code Contribution</a> to setup a dev environment.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="review">Review<a href="#review" class="hash-link" aria-label="Direct link to Review" title="Direct link to Review" translate="no"></a></h3>
+<p>Create the pull request and work with the reviewer.</p>
+<ul>
+<li class="">Make sure no unrelated or unnecessary reformatting changes are included.</li>
+<li class="">After submitting the PR, the CI process will be triggered. Please make sure that it has passed the CI checks.</li>
+<li class="">Please ensure that the test passing.</li>
+<li class="">Please don't resolve conversation.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="merge">Merge<a href="#merge" class="hash-link" aria-label="Direct link to Merge" title="Direct link to Merge" translate="no"></a></h3>
+<ul>
+<li class="">A committer of project checks if the contribution fulfills the requirements and merges the code to the codebase.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="contribution-code">Contribution Code<a href="#contribution-code" class="hash-link" aria-label="Direct link to Contribution Code" title="Direct link to Contribution Code" translate="no"></a></h2>
+<p>All improvements can be implemented through Pull Request (PR). Before submitting a Pull Request.
+Please refer to <a class="" href="/community/contribution/contribute-code">Code Contribution</a> for information on how to contribute code.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="contribution-of-test-cases">Contribution of Test Cases<a href="#contribution-of-test-cases" class="hash-link" aria-label="Direct link to Contribution of Test Cases" title="Direct link to Contribution of Test Cases" translate="no"></a></h2>
+<p>Any contribution of test cases is encouraged, especially unit tests. It is recommended to create <code>XXXTest.java</code> files in the corresponding module's <code>test</code> directory, preferably using the <code>JUnit5</code> framework.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="contribution-document">Contribution Document<a href="#contribution-document" class="hash-link" aria-label="Direct link to Contribution Document" title="Direct link to Contribution Document" translate="no"></a></h2>
+<p>Documentation is an important component of the project official website and serves as a vital bridge between the project and the community. Please refer to <a class="" href="/community/contribution/contribute-doc">Docs Contribution</a> for information on how to contribute document.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="other-ways-to-contribute">Other Ways to Contribute<a href="#other-ways-to-contribute" class="hash-link" aria-label="Direct link to Other Ways to Contribute" title="Direct link to Other Ways to Contribute" translate="no"></a></h2>
+<p>Apart from directly contributing code, the following ways are also valuable support for Apache Fesod (Incubating):</p>
+<ul>
+<li class="">Answering other users' questions.</li>
+<li class="">Assisting in reviewing others' PRs.</li>
+<li class="">Providing improvement suggestions.</li>
+<li class="">Writing technical blogs to promote Apache Fesod (Incubating).</li>
+<li class="">Sharing project-related knowledge in the community.</li>
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/community/contribution.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Bllq" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/feedback/index.html b/community/feedback/index.html
new file mode 100644
index 00000000..2cee2886
--- /dev/null
+++ b/community/feedback/index.html
@@ -0,0 +1,68 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-feedback" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Feedback | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/feedback">< [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="before-submitting">Before Submitting<a href="#before-submitting" class="hash-link" aria-label="Direct link to Before Submitting" title="Direct link to Before Submitting" translate="no"></a></h2>
+<p>Before creating a new issue, please ensure you have completed the following preparatory steps. This will help avoid duplicate work and save both your time and the maintainers' time.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="read-the-documentation">Read the Documentation<a href="#read-the-documentation" class="hash-link" aria-label="Direct link to Read the Documentation" title="Direct link to Read the Documentation" translate="no"></a></h3>
+<ul>
+<li class="">Please read the <code>README</code> file and the official documentation in the project to see if there are any solutions to the problems mentioned.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="search-existing-issues">Search Existing Issues<a href="#search-existing-issues" class="hash-link" aria-label="Direct link to Search Existing Issues" title="Direct link to Search Existing Issues" translate="no"></a></h3>
+<ul>
+<li class="">Visit the <a href="https://github.com/apache/fesod/issues" target="_blank" rel="noopener noreferrer" class="">Issue List</a> and search for keywords.</li>
+<li class="">If you find a similar issue, please <strong>comment and provide additional details</strong> under that issue instead of creating a new one.</li>
+<li class="">If an unresolved issue is closed for some reason, please <strong>comment and provide additional details</strong> to reopen it.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="update-to-the-latest-version">Update to the latest version<a href="#update-to-the-latest-version" class="hash-link" aria-label="Direct link to Update to the latest version" title="Direct link to Update to the latest version" translate="no"></a></h3>
+<p>Please make sure you are using the latest stable version of the project or the latest code from the main branch. Many issues have been resolved in newer versions.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="creating-a-new-issue">Creating a New Issue<a href="#creating-a-new-issue" class="hash-link" aria-label="Direct link to Creating a New Issue" title="Direct link to Creating a New Issue" translate="no"></a></h2>
+<p>If you confirm that your issue has not been reported, please submit a new issue through the <a href="https://github.com/apache/fesod/issues/new/choose" target="_blank" rel="noopener noreferrer" class="">NEW ISSUE</a> page.</p>
+<p><strong>Please use the issue template</strong> and provide as much information as possible, such as:</p>
+<ul>
+<li class="">Environment information (operating system, version used, etc.).</li>
+<li class="">Steps to reproduce the issue.</li>
+<li class="">Error logs or screenshots.</li>
+<li class="">Provide a minimal reproducible example.</li>
+</ul>
+<p>The following situations are appropriate for submitting a new issue:</p>
+<ul>
+<li class="">Bug reports</li>
+<li class="">New feature</li>
+<li class="">Performance issues</li>
+<li class="">Function proposals or design suggestions</li>
+<li class="">Documentation improvements</li>
+<li class="">Optimization of test coverage</li>
+<li class="">Need for technical support</li>
+<li class="">Other issues related to the project</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="notes">Notes<a href="#notes" class="hash-link" aria-label="Direct link to Notes" title="Direct link to Notes" translate="no"></a></h2>
+<ul>
+<li class="">The title of the issue should be clear and concise, written in <strong>English</strong>, and should be no longer than 50 characters.</li>
+<li class="">Please use polite language in the issue description and content.</li>
+<li class="">Each issue should focus on a single topic, please do not combine multiple issues into one.</li>
+<li class="">Unless a specific developer has been explicitly assigned to the issue in advance, please do not arbitrarily assign it to a particular developer.</li>
+<li class="">Do not include sensitive information such as passwords, keys, server addresses, or private data in the issue.</li>
+</ul>
+<p>Thank you for contributing to the improvement of the project! Every feedback you provide is the driving force behind our progress.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/community/feedback.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewB [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
new file mode 100644
index 00000000..dc572693
--- /dev/null
+++ b/community/index.html
@@ -0,0 +1,87 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-index" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Join Community | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/"><me [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="initial-contact">Initial contact<a href="#initial-contact" class="hash-link" aria-label="Direct link to Initial contact" title="Direct link to Initial contact" translate="no"></a></h2>
+<p>For the first time in Apache Fesod (Incubating) community, you can:</p>
+<ul>
+<li class="">Use our project and provide feedback.</li>
+<li class="">Provide us with the use-cases.</li>
+<li class="">Report bugs and submit patches.</li>
+<li class="">Contribute code, documentation.</li>
+<li class="">Subscribe to our mailing list.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="mailing-list">Mailing list<a href="#mailing-list" class="hash-link" aria-label="Direct link to Mailing list" title="Direct link to Mailing list" translate="no"></a></h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Desc</th><th>Subscribe</th><th>Unsubscribe</th><th>Post</th><th>Archive</th></tr></thead><tbody><tr><td><a href="mailto:dev@fesod.apache.org" target="_blank" rel="noopener noreferrer" class="">dev@fesod.apache.org</a></td><td>Development related discussions</td><td><a href="mailto:dev-subscribe@fesod.apache.org" target="_blank" rel="noopener noreferrer" class="">Subscribe</a></td><td><a href="mailto:dev-unsubscribe@fesod.apache.org" target="_blank" rel= [...]
+<p>Please make sure you are subscribed to the mailing list you are posting to!</p>
+<p>If you are not subscribed to the mailing list, your message will either be rejected or you won't receive the response.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="how-to-subscribe-to-a-mailing-list">How to subscribe to a mailing list<a href="#how-to-subscribe-to-a-mailing-list" class="hash-link" aria-label="Direct link to How to subscribe to a mailing list" title="Direct link to How to subscribe to a mailing list" translate="no"></a></h3>
+<p>Before you can post a message to a mailing list, you need to subscribe to the list first.</p>
+<ol>
+<li class="">Send an email without any contents or subject to <code>listname-subscribe@fesod.apache.org</code>. (replace listname with dev or commits)</li>
+<li class="">Wait till you receive an email with the subject <code>confirm subscribe to listname@fesod.apache.org</code>. Reply to that email, without editing the subject or including any contents.</li>
+<li class="">Wait till you receive an email with the subject <code>WELCOME to listname@fesod.apache.org</code>.</li>
+</ol>
+<p>If you email us with a code snippet, make sure that:</p>
+<ul>
+<li class="">you do not link to files in external services as such files can change, get deleted or the link might break and thus make an archived email thread useless</li>
+<li class="">you paste text instead of screenshots of text</li>
+<li class="">you keep formatting when pasting code to keep the code readable</li>
+<li class="">there are enough import statements to avoid ambiguities</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="post-plain-text-mails">Post Plain Text Mails<a href="#post-plain-text-mails" class="hash-link" aria-label="Direct link to Post Plain Text Mails" title="Direct link to Post Plain Text Mails" translate="no"></a></h3>
+<p>When posting to the mailing lists, please use plain text emails. <strong>Do not use HTML emails</strong>. HTML emails are more likely to be targeted as spam mails and rejected. It may get malformed through different mail clients and not easily readable by others.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="issues">Issues<a href="#issues" class="hash-link" aria-label="Direct link to Issues" title="Direct link to Issues" translate="no"></a></h2>
+<p>All issues will be tracked and handled through <a href="https://github.com/apache/fesod/issues" target="_blank" rel="noopener noreferrer" class="">GitHub Issues</a>.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="discussions">Discussions<a href="#discussions" class="hash-link" aria-label="Direct link to Discussions" title="Direct link to Discussions" translate="no"></a></h2>
+<p>For development discussions and user exchanges, please use <a href="https://github.com/apache/fesod/discussions" target="_blank" rel="noopener noreferrer" class="">GitHub Discussions</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/community/index.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page" [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/maturity/index.html b/community/maturity/index.html
new file mode 100644
index 00000000..dd6bc7b3
--- /dev/null
+++ b/community/maturity/index.html
@@ -0,0 +1,317 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-maturity" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Maturity | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/maturity">< [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>The goals of this maturity model are to describe how Apache projects operate in a concise and high-level way, and to provide a basic framework that projects may choose to use to evaluate themselves.</p>
+<p>More details can be found <a href="https://community.apache.org/apache-way/apache-project-maturity-model.html" target="_blank" rel="noopener noreferrer" class="">Apache Project Maturity Model</a>.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="status-of-this-assessment">Status of this assessment<a href="#status-of-this-assessment" class="hash-link" aria-label="Direct link to Status of this assessment" title="Direct link to Status of this assessment" translate="no"></a></h2>
+<p>This assessment is evaluated during Fesod's Incubating.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="maturity-model-assessment">Maturity model assessment<a href="#maturity-model-assessment" class="hash-link" aria-label="Direct link to Maturity model assessment" title="Direct link to Maturity model assessment" translate="no"></a></h2>
+<p>The following table is filled according to the <a href="https://community.apache.org/apache-way/apache-project-maturity-model.html" target="_blank" rel="noopener noreferrer" class="">Apache Maturity Model</a>. Mentors and community members are welcome to comment and modify it.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code">Code<a href="#code" class="hash-link" aria-label="Direct link to Code" title="Direct link to Code" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th><strong>ID</strong></th><th><strong>Description</strong></th><th><strong>Status</strong></th></tr></thead><tbody><tr><td><strong>CD10</strong></td><td>The project produces Open Source software for distribution to the public, at no charge.</td><td><strong>YES</strong> The project source code is licensed under the <code>Apache License 2.0</code>.</td></tr><tr><td><strong>CD20</strong></td><td>Anyone can easily discover and access the project's code.</td><td><stro [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="licenses-and-copyright">Licenses and Copyright<a href="#licenses-and-copyright" class="hash-link" aria-label="Direct link to Licenses and Copyright" title="Direct link to Licenses and Copyright" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th><strong>ID</strong></th><th><strong>Description</strong></th><th><strong>Status</strong></th></tr></thead><tbody><tr><td><strong>LC10</strong></td><td>The Apache License, version 2.0, covers the released code.</td><td><strong>YES</strong> The <a href="https://github.com/apache/fesod/blob/main/LICENSE" target="_blank" rel="noopener noreferrer" class="">LICENSE</a> is in GitHub repository. And all source files are with APLv2 header, checked by <code>korandoru/hawkeye@ [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="releases">Releases<a href="#releases" class="hash-link" aria-label="Direct link to Releases" title="Direct link to Releases" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th><strong>ID</strong></th><th><strong>Description</strong></th><th><strong>Status</strong></th></tr></thead><tbody><tr><td><strong>RE10</strong></td><td>Releases consist of source code, distributed using standard and open archive formats that are expected to stay readable in the long term.</td><td><strong>NO</strong> Source release is distributed via <a href="https://dist.apache.org/repos/dist/release/fesod/" target="_blank" rel="noopener noreferrer" class="">dist.apa [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="quality">Quality<a href="#quality" class="hash-link" aria-label="Direct link to Quality" title="Direct link to Quality" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th><strong>ID</strong></th><th><strong>Description</strong></th><th><strong>Status</strong></th></tr></thead><tbody><tr><td><strong>QU10</strong></td><td>The project is open and honest about the quality of its code. Various levels of quality and maturity for various modules are natural and acceptable as long as they are clearly communicated.</td><td><strong>YES</strong> We encourage user to <a href="https://github.com/apache/fesod/issues" target="_blank" rel="noopener [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="community">Community<a href="#community" class="hash-link" aria-label="Direct link to Community" title="Direct link to Community" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th><strong>ID</strong></th><th><strong>Description</strong></th><th><strong>Status</strong></th></tr></thead><tbody><tr><td><strong>CO10</strong></td><td>The project has a well-known homepage that points to all the information required to operate according to this maturity model.</td><td><strong>YES</strong> The <a href="https://fesod.apache.org/" target="_blank" rel="noopener noreferrer" class="">official website</a> includes all information user need to run Apache Fe [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="consensus-building">Consensus Building<a href="#consensus-building" class="hash-link" aria-label="Direct link to Consensus Building" title="Direct link to Consensus Building" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th><strong>ID</strong></th><th><strong>Description</strong></th><th><strong>Status</strong></th></tr></thead><tbody><tr><td><strong>CS10</strong></td><td>The project maintains a public list of its contributors who have decision power. The project's PPMC (Project Management Committee) consists of those contributors.</td><td><strong>Yes</strong> See <a href="https://fesod.apache.org/team" target="_blank" rel="noopener noreferrer" class="">members</a> with all PPMC m [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="independence">Independence<a href="#independence" class="hash-link" aria-label="Direct link to Independence" title="Direct link to Independence" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th><strong>ID</strong></th><th><strong>Description</strong></th><th><strong>Status</strong></th></tr></thead><tbody><tr><td><strong>IN10</strong></td><td>The project is independent from any corporate or organizational influence.</td><td><strong>YES</strong> The PPMC members and committer of Apache Fesod (Incubating) are from several different companies, and majority of them are NOT From the company that donated this project.</td></tr><tr><td><strong>IN20</strong></td> [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="trademark-and-branding">Trademark and Branding<a href="#trademark-and-branding" class="hash-link" aria-label="Direct link to Trademark and Branding" title="Direct link to Trademark and Branding" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th><strong>ID</strong></th><th><strong>Description</strong></th><th><strong>Status</strong></th></tr></thead><tbody><tr><td><strong>TB10</strong></td><td>The project uses "Apache Fesod™" as the project and software product name consistently, with appropriate trademark attributions.</td><td><strong>YES</strong> The project uses appropriately the trademark symbol.</td></tr><tr><td><strong>IB20</strong></td><td>The project's primary homepage is at projectn [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/pmc/become-pmc-member/index.html b/community/pmc/become-pmc-member/index.html
new file mode 100644
index 00000000..19d1e309
--- /dev/null
+++ b/community/pmc/become-pmc-member/index.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-pmc/become-pmc-member" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Become A PPMC member | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<ul>
+<li class=""><strong>(Co)mmunity</strong> - You can join us via our mailing list, issue trackers, discussions page to interact with community members, and share vision and knowledge</li>
+<li class=""><strong>(P)roject</strong> - a clear vision and consensus are needed</li>
+<li class=""><strong>(Do)cumentation</strong> - without it, the stuff remains only in the minds of the authors</li>
+<li class=""><strong>(C)ode</strong> - discussion goes nowhere without code</li>
+</ul>
+<p>Apache Fesod (Incubating) community strives to be meritocratic. Thus, once someone has contributed sufficiently to any area of CoPDoC they can be a candidate for PPMC membership and at last voted in as an Apache Fesod (Incubating)
+PMC member. Being an Apache Fesod (Incubating) PPMC member does not necessarily mean you must commit code with your commit privilege to the codebase; it means you are committed to the Apache Fesod (Incubating) project and are productively contributing to our community's success.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="ppmc-member-requirements">PPMC member requirements<a href="#ppmc-member-requirements" class="hash-link" aria-label="Direct link to PPMC member requirements" title="Direct link to PPMC member requirements" translate="no"></a></h2>
+<p>There are no strict rules for becoming a committer or PPMC member.Candidates for new PPMC member are typically people that are active contributors and community members. Anyway, if the rules can be clarified a little bit, it can somehow clear the doubts in the minds of contributors and make the community more transparent, reasonable, and fair.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="continuous-contributions">Continuous contributions<a href="#continuous-contributions" class="hash-link" aria-label="Direct link to Continuous contributions" title="Direct link to Continuous contributions" translate="no"></a></h3>
+<p>PPMC member candidates should have a decent amount of continuous engagements and contributions (fixing bugs, adding new features, writing documentation, maintaining issues boards, code review, or answering community questions) to the Apache Fesod (Incubating).</p>
+<ul>
+<li class="">12+ months with activity and engagement.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="quality-of-contributions">Quality of contributions<a href="#quality-of-contributions" class="hash-link" aria-label="Direct link to Quality of contributions" title="Direct link to Quality of contributions" translate="no"></a></h3>
+<ul>
+<li class="">A solid general understanding of the project</li>
+<li class="">Well tested, well-designed, following Apache Fesod coding standards, and simple patches.</li>
+<li class="">Well-organized and detailed user-oriented documentation.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="community-involvement">Community involvement<a href="#community-involvement" class="hash-link" aria-label="Direct link to Community involvement" title="Direct link to Community involvement" translate="no"></a></h3>
+<ul>
+<li class="">Be active, courteous, and respectful on the dev mailing list and help mentor newer contributors and users.</li>
+<li class="">Be active, courteous, and respectful on the issue tracker for project maintenance</li>
+<li class="">Be active, courteous, and respectful for pull requests reviewing</li>
+<li class="">Be involved in the design road map discussions with a professional and diplomatic approach even if there is a disagreement</li>
+<li class="">Promoting the project by writing articles or holding events</li>
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/community/pmc/become-pmc-member.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Bllq" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/pmc/nominate-committer/index.html b/community/pmc/nominate-committer/index.html
new file mode 100644
index 00000000..1742245e
--- /dev/null
+++ b/community/pmc/nominate-committer/index.html
@@ -0,0 +1,88 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-pmc/nominate-committer" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Nominate Committer | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/p [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="template">Template<a href="#template" class="hash-link" aria-label="Direct link to Template" title="Direct link to Template" translate="no"></a></h2>
+<p>Note that, there are three placeholder in template should be replaced before using</p>
+<ul>
+<li class="">CANDIDATE_NAME: The full name of the candidate.</li>
+<li class="">CANDIDATE_GITHUB_ID: The GitHub id of the candidate.</li>
+<li class="">NOMINATOR: The GitHub id of the candidate.</li>
+</ul>
+<div class="theme-admonition theme-admonition-note admonition_mMJ5 alert alert--secondary"><div class="admonitionHeading_Loix"><span class="admonitionIcon_qNbI"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="discuss">Discuss<a href="#discuss" class="hash-link" aria-label="Direct link to Discuss" title="Direct link to Discuss" translate="no"></a></h2>
+<p>If any PPMC member recognize someone has met our requirements and can be the potential committer, please start a
+discussion about the candidate via sending email to: <a href="mailto:private@fesod.apache.org" target="_blank" rel="noopener noreferrer" class="">private@fesod.apache.org</a>:</p>
+<p>Title:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">[DISCUSS] New committer: [CANDIDATE_NAME]</span><br></span></code></pre></div></div>
+<p>Content:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Hi all,</span><br></span><span class="token-line" style="color:#393A34"><span class="token [...]
+<p>The discussion will last at least <strong>one week</strong>.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="start-a-vote">Start a vote<a href="#start-a-vote" class="hash-link" aria-label="Direct link to Start a vote" title="Direct link to Start a vote" translate="no"></a></h2>
+<p>If the proposed candidate seems to be received positively by a majority of those responding, please start a vote about
+the candidate via sending email to: <a href="mailto:private@fesod.apache.org" target="_blank" rel="noopener noreferrer" class="">private@fesod.apache.org</a>:</p>
+<p>Title:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">[VOTE] Add candidate ${CANDIDATE_NAME} as a new committer</span><br></span></code></pre></d [...]
+<p>Content:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Hi all,</span><br></span><span class="token-line" style="color:#393A34"><span class="token [...]
+<p>Let the Vote thread run for <strong>one week</strong>.</p>
+<p>Note that, Voting ends one week from today, i.e.:</p>
+<ul>
+<li class=""><a href="https://www.timeanddate.com/counters/customcounter.html?year=YYYY&month=MM&day=DD" target="_blank" rel="noopener noreferrer" class="">midnight UTC on YYYY-MM-DD</a></li>
+<li class=""><a href="https://community.apache.org/newcommitter.html" target="_blank" rel="noopener noreferrer" class="">Apache Voting Guidelines</a></li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="close-vote">Close Vote<a href="#close-vote" class="hash-link" aria-label="Direct link to Close Vote" title="Direct link to Close Vote" translate="no"></a></h2>
+<p>After <strong>at least 3 +1 binding vote</strong> and <strong>no veto</strong>, claim the vote result:</p>
+<p>Title:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">[RESULT] [VOTE] Add candidate ${CANDIDATE_NAME} as a new committer</span><br></span></code> [...]
+<p>Content:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Hi all,</span><br></span><span class="token-line" style="color:#393A34"><span class="token [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="send-invitation-to-the-candidate">Send invitation to the candidate<a href="#send-invitation-to-the-candidate" class="hash-link" aria-label="Direct link to Send invitation to the candidate" title="Direct link to Send invitation to the candidate" translate="no"></a></h2>
+<p>If the vote result is positive, send an invitation to the candidate and cc <a href="mailto:private@fesod.apache.org" target="_blank" rel="noopener noreferrer" class="">private@fesod.apache.org</a>:</p>
+<p>Title:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Invitation to become Apache Fesod (Incubating) Committer: ${CANDIDATE_NAME}</span><br></spa [...]
+<p>Content:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Hello ${CANDIDATE_NAME},</span><br></span><span class="token-line" style="color:#393A34"><s [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="the-candidate-accepts-the-invitation">The candidate accepts the invitation<a href="#the-candidate-accepts-the-invitation" class="hash-link" aria-label="Direct link to The candidate accepts the invitation" title="Direct link to The candidate accepts the invitation" translate="no"></a></h2>
+<p>If the invitation is accepted, the candidate will receive an email from the ASF.</p>
+<p>Title:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Invitation to become Apache Fesod (Incubating) Committer: ${CANDIDATE_NAME}</span><br></spa [...]
+<p>Content:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Welcome. Here are the next steps in becoming a project committer. After that</span><br></sp [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="add-the-candidate-to-the-committer-list">Add the candidate to the committer list<a href="#add-the-candidate-to-the-committer-list" class="hash-link" aria-label="Direct link to Add the candidate to the committer list" title="Direct link to Add the candidate to the committer list" translate="no"></a></h2>
+<p>After the candidate accepts the invitation and the iCLA is recorded, add the candidate to the committer list
+by <a href="https://whimsy.apache.org/roster/committee/fesod" target="_blank" rel="noopener noreferrer" class="">whimsy roster tools</a></p>
+<p><img decoding="async" loading="lazy" alt="Roster" src="/assets/images/roster-add-committer-20873b578f8c3b1853cd24d52171ca44.png" width="461" height="146" class="img_BbTd"></p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="welcome-the-new-committer">Welcome the new committer<a href="#welcome-the-new-committer" class="hash-link" aria-label="Direct link to Welcome the new committer" title="Direct link to Welcome the new committer" translate="no"></a></h2>
+<p>Send a welcome email to the new committer.</p>
+<p>Title:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Welcome, ${CANDIDATE_NAME}, New Committer!</span><br></span></code></pre></div></div>
+<p>Content:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Hello, ${CANDIDATE_NAME},</span><br></span><span class="token-line" style="color:#393A34">< [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="announcement">Announcement<a href="#announcement" class="hash-link" aria-label="Direct link to Announcement" title="Direct link to Announcement" translate="no"></a></h2>
+<p>Announcing the new committer in the <a href="mailto:dev@fesod.apache.org" target="_blank" rel="noopener noreferrer" class="">dev@fesod.apache.org</a> mailing list.</p>
+<p>Title:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">[ANNOUNCEMENT] New committer: ${CANDIDATE_NAME}</span><br></span></code></pre></div></div>
+<p>Content:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">The Podling Project Management Committee (PPMC) for Apache Fesod (Incubating)</span><br></s [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/pmc/onboarding/index.html b/community/pmc/onboarding/index.html
new file mode 100644
index 00000000..4c2926e4
--- /dev/null
+++ b/community/pmc/onboarding/index.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-pmc/onboarding" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Onboarding | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/pmc/onboa [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>Upon receiving an invitation email from Apache Fesod (Incubating) PPMC, a new PPMC member should consider whether accepting.
+If they decide in favor, they should select <strong>"Reply All"</strong> and express their decision.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="subscribe-to-private-mailing-list">Subscribe to Private Mailing List<a href="#subscribe-to-private-mailing-list" class="hash-link" aria-label="Direct link to Subscribe to Private Mailing List" title="Direct link to Subscribe to Private Mailing List" translate="no"></a></h2>
+<ul>
+<li class="">Send email to <a href="mailto:private-subscribe@fesod.apache.org" target="_blank" rel="noopener noreferrer" class="">private-subscribe@fesod.apache.org</a></li>
+<li class="">You will receive an email with the subject <code>confirm subscribe to private@fesod.apache.org</code></li>
+<li class="">Reply to the email with "Confirm" in the body</li>
+</ul>
+<p>If you receive an email with the subject <code>WELCOME to private@fesod.apache.org</code>, you have successfully subscribed to the private mailing list.</p>
+<p>It's required for PPMC members to subscribe the private mailing list. The private list is only for confidential discussions that should not be made public, such as the suitability of a particular individual to become a committer or a member of the PPMC.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="dont-mix-private-and-public-lists-in-posts">Don’t mix private and public lists in posts<a href="#dont-mix-private-and-public-lists-in-posts" class="hash-link" aria-label="Direct link to Don’t mix private and public lists in posts" title="Direct link to Don’t mix private and public lists in posts" translate="no"></a></h3>
+<ul>
+<li class="">Don’t post to both the dev and private lists. Each member of the PPMC should be on the dev list, so posting to dev is sufficient.</li>
+<li class="">Likewise, don’t post to both the Incubator general and Incubator private lists. Each member of the IPMC is on the Incubator general list, so posting to the general list is sufficient.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="read-ppmc-member-guide">Read PPMC Member Guide<a href="#read-ppmc-member-guide" class="hash-link" aria-label="Direct link to Read PPMC Member Guide" title="Direct link to Read PPMC Member Guide" translate="no"></a></h2>
+<p>Please read <a href="https://incubator.apache.org/guides/ppmc.html" target="_blank" rel="noopener noreferrer" class="">PPMC GUIDE</a> to know about the general responsibilities of Project Management Committee (PMC) members in managing our project and common how-to procedures for day to day maintenance.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apach [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/release/release-version/index.html b/community/release/release-version/index.html
new file mode 100644
index 00000000..56873309
--- /dev/null
+++ b/community/release/release-version/index.html
@@ -0,0 +1,130 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-release/release-version" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">How to Release | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/relea [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="11-apache-release-documentation">1.1 Apache Release Documentation<a href="#11-apache-release-documentation" class="hash-link" aria-label="Direct link to 1.1 Apache Release Documentation" title="Direct link to 1.1 Apache Release Documentation" translate="no"></a></h2>
+<p>Refer to the following links to understand the ASF release process:</p>
+<ul>
+<li class=""><a href="http://www.apache.org/dev/release-publishing" target="_blank" rel="noopener noreferrer" class="">Apache Release Guide</a></li>
+<li class=""><a href="http://www.apache.org/dev/release.html" target="_blank" rel="noopener noreferrer" class="">Apache Release Policy</a></li>
+<li class=""><a href="http://www.apache.org/dev/publishing-maven-artifacts.html" target="_blank" rel="noopener noreferrer" class="">Maven Release Info</a></li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="12-pgp-signing">1.2 PGP Signing<a href="#12-pgp-signing" class="hash-link" aria-label="Direct link to 1.2 PGP Signing" title="Direct link to 1.2 PGP Signing" translate="no"></a></h2>
+<p>Follow the Apache Release Guide to sign the release version. Users can also use this signature to verify that the downloaded version has not been tampered with.</p>
+<p>Create a <code>pgp</code> key for release signing, using <strong><your Apache ID>@apache.org</strong> as the key USER-ID.</p>
+<p>For details, refer to <a href="https://infra.apache.org/release-signing" target="_blank" rel="noopener noreferrer" class="">Apache Releases Signing documentation</a> and <a href="http://www.apache.org/dev/openpgp.html" target="_blank" rel="noopener noreferrer" class="">Cryptography with OpenPGP</a>.</p>
+<p>Brief process for generating a key:</p>
+<ul>
+<li class="">
+<p>Generate a new <code>gpg</code> key using <code>gpg --full-gen-key</code>, setting the key length to 4096.</p>
+<p>Note: You can set it to never expire, or set an expiration date based on your needs. However, if it expires, you must update the public key in the <a href="https://dist.apache.org/repos/dist/dev/incubator/fesod/KEYS" target="_blank" rel="noopener noreferrer" class="">DEV KEYS file</a> and <a href="https://dist.apache.org/repos/dist/release/incubator/fesod/KEYS" target="_blank" rel="noopener noreferrer" class="">RELEASE KEYS file</a>.</p>
+</li>
+<li class="">
+<p>Upload the key to the public key server using <code>gpg --keyserver keys.openpgp.org --send-key <your key id></code>.</p>
+</li>
+</ul>
+<p>Note: If the server is inaccessible, you can upload the public key online via <a href="https://keyserver.ubuntu.com/" target="_blank" rel="noopener noreferrer" class="">OpenPGP Keyserver (ubuntu.com)</a>.</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Use this command to find the keyid, e.g.: gpg - [...]
+<p>Convert the generated public and private keys to ASCII format:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">gpg </span><span class="token parameter variable" style="color:#36acaa">--armor</span><span [...]
+<p>View the key list:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">root@localhost ~</span><span [...]
+<p>Upload the public key to the public key server:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">root@localhost gpgtest</span> [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="13-pom-configuration">1.3 POM Configuration<a href="#13-pom-configuration" class="hash-link" aria-label="Direct link to 1.3 POM Configuration" title="Direct link to 1.3 POM Configuration" translate="no"></a></h2>
+<p>Configure the POM file to deploy the version to the ASF Nexus repository.</p>
+<p>① Add Apache POM inheritance default settings:</p>
+<div class="language-xml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-xml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">pare [...]
+<p>② Add key information to the Maven configuration file <code>settings.xml</code>:</p>
+<div class="language-xml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-xml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">sett [...]
+<p><strong>Tips:</strong> It is recommended to use <a href="http://maven.apache.org/guides/mini/guide-encryption.html" target="_blank" rel="noopener noreferrer" class="">Maven's password encryption capabilities</a> to encrypt <code>gpg.passphrase</code>.</p>
+<h1>2. Release Process</h1>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="21-prepare-branch">2.1 Prepare Branch<a href="#21-prepare-branch" class="hash-link" aria-label="Direct link to 2.1 Prepare Branch" title="Direct link to 2.1 Prepare Branch" translate="no"></a></h2>
+<p>Create a new release branch from the main branch. For example, if you want to release version <code>${release_version}</code>, create a new branch <code>${release_version}</code> from the development branch. All modifications involving Release Candidates and tagging for <code>${release_version}</code> will be done on this branch. Ensure that all GitHub Actions CI checks pass on this branch. Finally, merge it back into the main branch after the release is complete.</p>
+<p>Example: If the Java SDK needs to release version <code>2.2.0-incubating</code>, create a new branch <code>release-2.2.0-incubating</code> from the <code>main</code> branch, and submit a commit on this branch replacing the Snapshot version number with the <code>2.2.0-incubating</code> version number.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="22-prepare-binary-and-source-packages">2.2 Prepare Binary and Source Packages<a href="#22-prepare-binary-and-source-packages" class="hash-link" aria-label="Direct link to 2.2 Prepare Binary and Source Packages" title="Direct link to 2.2 Prepare Binary and Source Packages" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="221-prepare-the-sdk-release-according-to-publishing-maven-artifacts-4-instructions">2.2.1 Prepare the SDK release according to <a href="https://infra.apache.org/publishing-maven-artifacts.html" target="_blank" rel="noopener noreferrer" class="">publishing maven artifacts</a> [4] instructions<a href="#221-prepare-the-sdk-release-according-to-publishing-maven-artifacts-4-instructions" class="hash-link" aria-label="Direct link to 221-prep [...]
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">mvn clean deploy -Papache-release </span><span class="token parameter variable" style="colo [...]
+<p>At this point, the Fesod SDK is published to the <a href="https://repository.apache.org/#stagingRepositories" target="_blank" rel="noopener noreferrer" class="">Staging Repository</a> (requires Apache account login). Find the released version (i.e., <code>${STAGING.RELEASE}</code>) and click <strong>Close</strong>.</p>
+<p>Note: If the close operation fails, it is likely because the public key corresponding to the signing key cannot be found on keys.openpgp.org. Please check via <a href="https://keyserver.ubuntu.com/" target="_blank" rel="noopener noreferrer" class="">OpenPGP Keyserver (ubuntu.com)</a>.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="222-package-source">2.2.2 Package Source<a href="#222-package-source" class="hash-link" aria-label="Direct link to 2.2.2 Package Source" title="Direct link to 2.2.2 Package Source" translate="no"></a></h3>
+<div class="theme-admonition theme-admonition-caution admonition_mMJ5 alert alert--warning"><div class="admonitionHeading_Loix"><span class="admonitionIcon_qNbI"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>Note</div [...]
+<blockquote>
+<p>Local files such as <code>node_modules</code>, IDE configurations (e.g., <code>.idea</code>, <code>.vscode</code>), or leftover empty directories from refactoring can accidentally be packaged into the <code>source-release.zip</code>. This will cause compliance issues (e.g., distributing unauthorized binaries) and lead to vote failures.</p>
+</blockquote>
+<p>You <strong>MUST</strong> perform the release process in a <strong>fresh git clone</strong> to ensure the artifacts are reproducible and clean.</p>
+<p><strong>Note</strong>: Do not open this directory with an IDE (like IntelliJ or VS Code) immediately, as it may generate configuration files or compilation caches. Run the Maven release commands directly from the terminal first.</p>
+<p>First, confirm that the current codebase is ready for release.</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 1. Switch to the main branch and update</span>< [...]
+<p>Use <code>git archive</code> to ensure the source package is clean (excludes the .git directory or other ignored files).</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 1. Export the source package</span><span class= [...]
+<blockquote>
+<p><strong>Note</strong>: The hash <code>e7546d11...</code> here corresponds to the commit hash of tag <code>2.0.0-incubating-rc1</code>.</p>
+</blockquote>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="223-sign-and-hash">2.2.3 Sign and Hash<a href="#223-sign-and-hash" class="hash-link" aria-label="Direct link to 2.2.3 Sign and Hash" title="Direct link to 2.2.3 Sign and Hash" translate="no"></a></h3>
+<p>Perform GPG signing and SHA512 calculation on the generated source package.</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 1. GPG Signature (.asc)</span><span class="toke [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="224-upload-source-package-to-svn-upload-to-dist">2.2.4 Upload Source Package to SVN (Upload to Dist)<a href="#224-upload-source-package-to-svn-upload-to-dist" class="hash-link" aria-label="Direct link to 2.2.4 Upload Source Package to SVN (Upload to Dist)" title="Direct link to 2.2.4 Upload Source Package to SVN (Upload to Dist)" translate="no"></a></h3>
+<p>Upload the signed source package to the Apache development distribution area (<code>dist/dev</code>).</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 1. Checkout SVN dev repository</span><span clas [...]
+<hr>
+<h1>3. Voting Phase</h1>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="31-internal-community-vote">3.1 Internal Community Vote<a href="#31-internal-community-vote" class="hash-link" aria-label="Direct link to 3.1 Internal Community Vote" title="Direct link to 3.1 Internal Community Vote" translate="no"></a></h2>
+<p><strong>The vote lasts for at least 72 hours and requires 3 +1 binding votes.</strong></p>
+<p>Send to:</p>
+<div class="language-mail codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-mail codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">dev@fesod.apache.org</span><br></span><span class="token-line" style="color:#393A34"><span [...]
+<p>Subject:</p>
+<p><code>[VOTE]Release Apache Fesod (Incubating) x.x.x-RCN (RoundN)</code></p>
+<p>RC N and Round N: N represents the count, i.e., which round of voting for this version.</p>
+<p>Body:</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Hi Fesod Community,</span><br></span><span class="token-line" style="color:#393A34"><span c [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="312-complete-vote">3.1.2 Complete Vote<a href="#312-complete-vote" class="hash-link" aria-label="Direct link to 3.1.2 Complete Vote" title="Direct link to 3.1.2 Complete Vote" translate="no"></a></h3>
+<p>Publish the vote pass email.</p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Hi Community,</span><br></span><span class="token-line" style="color:#393A34"><span class=" [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="32-vote-in-incubator">3.2 Vote in Incubator<a href="#32-vote-in-incubator" class="hash-link" aria-label="Direct link to 3.2 Vote in Incubator" title="Direct link to 3.2 Vote in Incubator" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="321-vote-in-incubator">3.2.1 Vote in Incubator<a href="#321-vote-in-incubator" class="hash-link" aria-label="Direct link to 3.2.1 Vote in Incubator" title="Direct link to 3.2.1 Vote in Incubator" translate="no"></a></h3>
+<p>Similar to the community vote, but requires adding the community vote thread link to prove that consensus has been reached within the community.</p>
+<p>Send email to <code>general@incubator.apache.org</code></p>
+<p>Subject:</p>
+<p><code>[VOTE]Release Apache Fesod (Incubating) x.x.x-RCN</code></p>
+<p><strong>The vote lasts for at least 72 hours and requires 3 +1 binding votes.</strong></p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Hello everyone,</span><br></span><span class="token-line" style="color:#393A34"><span class [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="322-announce-incubator-vote-result">3.2.2 Announce Incubator Vote Result<a href="#322-announce-incubator-vote-result" class="hash-link" aria-label="Direct link to 3.2.2 Announce Incubator Vote Result" title="Direct link to 3.2.2 Announce Incubator Vote Result" translate="no"></a></h3>
+<p>After 72 hours, if there are at least 3 passing votes and no opposing votes, send the result email referencing the following template.</p>
+<p>Send email to <code>general@incubator.apache.org</code></p>
+<p>Subject: <code>[RESULT][VOTE] Release Apache Fesod (incubating) x.x.x-RCN</code></p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Hi Incubator PMC,</span><br></span><span class="token-line" style="color:#393A34"><span cla [...]
+<h1>4. Finalize Release</h1>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="41-release-version">4.1 Release Version<a href="#41-release-version" class="hash-link" aria-label="Direct link to 4.1 Release Version" title="Direct link to 4.1 Release Version" translate="no"></a></h2>
+<ol>
+<li class="">From the Apache Nexus repository, select the previously closed <strong>orgapachefesod-XXX</strong> and click the <code>Release</code> icon.</li>
+<li class="">Move the signature files, src, and bin from the dev path to the release path, referring to the following command:
+<code>svn mv https://dist.apache.org/repos/dist/dev/incubator/fesod/x.x.x-RCN https://dist.apache.org/repos/dist/release/incubator/fesod/x.x.x -m "Release Fesod X.X.X"</code></li>
+<li class="">Set the previous release note to "Set as the latest release" and submit.</li>
+<li class="">Update the x.x.x documentation on the Fesod official website, and add the corresponding download links for binary and source.</li>
+</ol>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="42-announcement">4.2 Announcement<a href="#42-announcement" class="hash-link" aria-label="Direct link to 4.2 Announcement" title="Direct link to 4.2 Announcement" translate="no"></a></h2>
+<p>Send email to <code>general@incubator.apache.org</code></p>
+<p>Subject: <code>[ANNOUNCE] Apache Fesod(Incubating) vx.x.x available</code></p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Hi All,</span><br></span><span class="token-line" style="color:#393A34"><span class="token [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/release/verify-release/index.html b/community/release/verify-release/index.html
new file mode 100644
index 00000000..16652515
--- /dev/null
+++ b/community/release/verify-release/index.html
@@ -0,0 +1,109 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-release/verify-release" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">How to Verify Release | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/communit [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="1-download-the-release-candidate">1. Download the Release Candidate<a href="#1-download-the-release-candidate" class="hash-link" aria-label="Direct link to 1. Download the Release Candidate" title="Direct link to 1. Download the Release Candidate" translate="no"></a></h2>
+<blockquote>
+<p><strong>Prerequisite:</strong> Ensure you have <code>gpg</code> or <code>gpg2</code> installed.</p>
+</blockquote>
+<div class="theme-admonition theme-admonition-caution admonition_mMJ5 alert alert--warning"><div class="admonitionHeading_Loix"><span class="admonitionIcon_qNbI"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>Note</div [...]
+<p>Set environment variables for convenience (replace with actual versions):</p>
+<div class="language-shell codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-shell codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Example: export RELEASE_VERSION=0.1.0</span>< [...]
+<p>Download the artifacts:</p>
+<div class="language-shell codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-shell codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Option 1: SVN checkout (Recommended, includes [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="2-verify-compliance-and-integrity">2. Verify Compliance and Integrity<a href="#2-verify-compliance-and-integrity" class="hash-link" aria-label="Direct link to 2. Verify Compliance and Integrity" title="Direct link to 2. Verify Compliance and Integrity" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="21-check-package-completeness">2.1 Check Package Completeness<a href="#21-check-package-completeness" class="hash-link" aria-label="Direct link to 2.1 Check Package Completeness" title="Direct link to 2.1 Check Package Completeness" translate="no"></a></h3>
+<p>The uploaded artifacts must contain:</p>
+<ol>
+<li class=""><strong>Source Package</strong> (Required)</li>
+<li class=""><strong>Signature file</strong> (.asc, Required)</li>
+<li class=""><strong>Hash file</strong> (.sha512, Required)</li>
+</ol>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="22-verify-gpg-signature">2.2 Verify GPG Signature<a href="#22-verify-gpg-signature" class="hash-link" aria-label="Direct link to 2.2 Verify GPG Signature" title="Direct link to 2.2 Verify GPG Signature" translate="no"></a></h3>
+<p><strong>2.2.1 Import KEYS</strong></p>
+<div class="language-shell codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-shell codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Download KEYS</span><span class="token plain" [...]
+<p><strong>2.2.2 Trust the Public Key (Optional but Recommended)</strong></p>
+<div class="language-shell codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-shell codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Find the Key ID used for this release</span>< [...]
+<p><strong>2.2.3 Verify the Signature</strong></p>
+<div class="language-shell codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-shell codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Verify Source Package</span><span class="toke [...]
+<blockquote>
+<p><strong>Success Indicator:</strong> The output must include <strong><code>Good signature</code></strong>.</p>
+</blockquote>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="23-verify-sha512-checksum">2.3 Verify SHA512 Checksum<a href="#23-verify-sha512-checksum" class="hash-link" aria-label="Direct link to 2.3 Verify SHA512 Checksum" title="Direct link to 2.3 Verify SHA512 Checksum" translate="no"></a></h3>
+<p><strong>Mac OS / Linux:</strong></p>
+<div class="language-shell codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-shell codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Verify Source Package</span><span class="toke [...]
+<p><strong>Windows:</strong></p>
+<div class="language-shell codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-shell codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">certUtil </span><span class="token parameter variable" style="color:#36acaa">-hashfile</s [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="3-check-source-package-content-crucial">3. Check Source Package Content (Crucial)<a href="#3-check-source-package-content-crucial" class="hash-link" aria-label="Direct link to 3. Check Source Package Content (Crucial)" title="Direct link to 3. Check Source Package Content (Crucial)" translate="no"></a></h2>
+<p>Extract the source package:</p>
+<div class="language-shell codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-shell codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> </span><span class="token p [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="31-incubator-specific-checks">3.1 Incubator Specific Checks<a href="#31-incubator-specific-checks" class="hash-link" aria-label="Direct link to 3.1 Incubator Specific Checks" title="Direct link to 3.1 Incubator Specific Checks" translate="no"></a></h3>
+<ul class="contains-task-list containsTaskList_cmlc">
+<li class="task-list-item"><input type="checkbox" disabled=""> <strong>DISCLAIMER:</strong> Ensure a <code>DISCLAIMER</code> (or <code>DISCLAIMER-WIP</code>) file exists in the root directory. This is mandatory for incubating projects.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="32-asf-license-header-check-rat">3.2 ASF License Header Check (RAT)<a href="#32-asf-license-header-check-rat" class="hash-link" aria-label="Direct link to 3.2 ASF License Header Check (RAT)" title="Direct link to 3.2 ASF License Header Check (RAT)" translate="no"></a></h3>
+<p>Run the Apache RAT (Release Audit Tool) check:</p>
+<div class="language-shell codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-shell codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Run RAT check</span><span class="token plain" [...]
+<p><strong>Check the report (<code>target/rat.txt</code>):</strong></p>
+<ul>
+<li class=""><strong>Unapproved Licenses:</strong> Must be <strong>0</strong>.</li>
+<li class=""><strong>Binaries:</strong> Should be <strong>0</strong> (Source packages should not contain compiled jars/classes).</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="33-compilation-verification">3.3 Compilation Verification<a href="#33-compilation-verification" class="hash-link" aria-label="Direct link to 3.3 Compilation Verification" title="Direct link to 3.3 Compilation Verification" translate="no"></a></h3>
+<p>Ensure the source code compiles successfully.</p>
+<div class="language-shell codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-shell codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># This may take time depending on network to do [...]
+<p><strong>Checklist:</strong></p>
+<ul class="contains-task-list containsTaskList_cmlc">
+<li class="task-list-item"><input type="checkbox" disabled=""> Build Success.</li>
+<li class="task-list-item"><input type="checkbox" disabled=""> No unexpected binary files in the source tree.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="34-license-and-notice">3.4 License and Notice<a href="#34-license-and-notice" class="hash-link" aria-label="Direct link to 3.4 License and Notice" title="Direct link to 3.4 License and Notice" translate="no"></a></h3>
+<p>Manually check the following files in the root directory:</p>
+<ul class="contains-task-list containsTaskList_cmlc">
+<li class="task-list-item"><input type="checkbox" disabled=""> <strong>LICENSE:</strong> Exists and contains the Apache License 2.0.</li>
+<li class="task-list-item"><input type="checkbox" disabled=""> <strong>NOTICE:</strong></li>
+<li class="">
+<ul>
+<li class="">Exists.</li>
+</ul>
+</li>
+<li class="">
+<ul>
+<li class="">Copyright year is current (e.g., includes 2025/2026).</li>
+</ul>
+</li>
+<li class="">
+<ul>
+<li class="">Contains required attributions for bundled dependencies (if any).</li>
+</ul>
+</li>
+<li class="task-list-item"><input type="checkbox" disabled=""> <strong>DISCLAIMER:</strong> Exists.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="4-email-reply-templates">4. Email Reply Templates<a href="#4-email-reply-templates" class="hash-link" aria-label="Direct link to 4. Email Reply Templates" title="Direct link to 4. Email Reply Templates" translate="no"></a></h2>
+<p>After verification, reply to the vote thread on <code>dev@fesod.apache.org</code>.</p>
+<div class="theme-admonition theme-admonition-tip admonition_mMJ5 alert alert--success"><div class="admonitionHeading_Loix"><span class="admonitionIcon_qNbI"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<p><strong>Template for PPMC Members:</strong></p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">+1 (binding)</span><br></span><span class="token-line" style="color:#393A34"><span class="t [...]
+<p><strong>Template for Contributors (Non-PPMC):</strong></p>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">+1 (non-binding)</span><br></span><span class="token-line" style="color:#393A34"><span clas [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/security/index.html b/community/security/index.html
new file mode 100644
index 00000000..ab2e9583
--- /dev/null
+++ b/community/security/index.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-security" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Security | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/community/security">< [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>If you have any concerns regarding Apache Fesod (Incubating)’s security, or you discover a vulnerability or potential threat, please don’t hesitate to get in touch with the <a href="http://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="">Apache Security Team</a> by dropping an email at <a href="mailto:security@apache.org" target="_blank" rel="noopener noreferrer" class="">security@apache.org</a>.</p>
+<p>Please specify the project name as "Apache Fesod (Incubating)" in the email, and provide a description of the relevant problem or potential threat. You are also urged to recommend how to reproduce and replicate the issue.</p>
+<p>The Apache Security Team and the Apache Fesod (Incubating) community will get back to you after assessing and analyzing the findings.</p>
+<p><strong>Please note</strong> that the security issue should be reported on the security email first, before disclosing it on any public domain.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="advisories-for-dependencies">Advisories for Dependencies<a href="#advisories-for-dependencies" class="hash-link" aria-label="Direct link to Advisories for Dependencies" title="Direct link to Advisories for Dependencies" translate="no"></a></h2>
+<p>Many organizations employ security scanning tools to identify components with known security advisories. Although we strongly recommend these tools as they can alert users to potential risks, they often generate false positives. This occurs because a vulnerable dependency may not necessarily impact Apache Fesod (Incubating) if used in a non-exploitable manner.</p>
+<p>Therefore, advisories regarding Apache Fesod (Incubating)'s dependencies are not automatically considered critical. However, if additional analysis indicates that Apache Fesod (Incubating) might be affected by a dependency's vulnerability, please report your findings privately to <a href="mailto:security@apache.org" target="_blank" rel="noopener noreferrer" class="">security@apache.org</a>.</p>
+<p>If a dependency advisory is identified, please:</p>
+<ol>
+<li class="">Verify if our DependencyCheck suppressions contain relevant details.</li>
+<li class="">Check our issue tracker for discussions regarding this advisory.</li>
+<li class="">Conduct your own analysis to determine whether Apache Fesod (Incubating) is affected.
+<ul>
+<li class="">If affected, report your findings privately through <a href="mailto:security@apache.org" target="_blank" rel="noopener noreferrer" class="">security@apache.org</a>.</li>
+<li class="">If not affected, please contribute by updating the DependencyCheck suppression list, clearly documenting why Apache Fesod (Incubating) is not impacted.</li>
+</ul>
+</li>
+</ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/community/security.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Bllq" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/download/index.html b/docs/download/index.html
new file mode 100644
index 00000000..a72ef292
--- /dev/null
+++ b/docs/download/index.html
@@ -0,0 +1,95 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-download" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Download | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/download"><meta [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>Here is the Apache Fesod (Incubating) official download page. Apache Fesod provides source releases that can be downloaded from the ASF distribution site. Binary artifacts are available through Maven Central.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="the-latest-stable-release">The Latest Stable Release<a href="#the-latest-stable-release" class="hash-link" aria-label="Direct link to The Latest Stable Release" title="Direct link to The Latest Stable Release" translate="no"></a></h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th style="text-align:center">Version</th><th style="text-align:center">Date</th><th style="text-align:left">Download</th><th style="text-align:center">Release Notes</th></tr></thead><tbody><tr><td style="text-align:center">2.0.2-incubating</td><td style="text-align:center">2026-05-30</td><td style="text-align:left"><a href="https://www.apache.org/dyn/closer.lua/incubator/fesod/2.0.2-incubating/apache-fesod-2.0.2-incubating-src.tar.gz" target="_blank" rel="noopener nore [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="all-archived-releases">All Archived Releases<a href="#all-archived-releases" class="hash-link" aria-label="Direct link to All Archived Releases" title="Direct link to All Archived Releases" translate="no"></a></h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th style="text-align:center">Version</th><th style="text-align:center">Date</th><th style="text-align:left">Download</th><th style="text-align:center">Release Notes</th></tr></thead><tbody><tr><td style="text-align:center">2.0.1-incubating</td><td style="text-align:center">2026-02-11</td><td style="text-align:left"><a href="https://www.apache.org/dyn/closer.lua/incubator/fesod/2.0.1-incubating/apache-fesod-2.0.1-incubating-src.tar.gz" target="_blank" rel="noopener nore [...]
+<p>For older releases, please check the <a href="https://archive.apache.org/dist/incubator/fesod/" target="_blank" rel="noopener noreferrer" class="">archive</a>.</p>
+<p>For non-Apache releases, please check the <a href="https://repo1.maven.org/maven2/cn/idev/excel/fastexcel/" target="_blank" rel="noopener noreferrer" class="">non-apache releases</a>.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="verifying-apache-releases">Verifying Apache Releases<a href="#verifying-apache-releases" class="hash-link" aria-label="Direct link to Verifying Apache Releases" title="Direct link to Verifying Apache Releases" translate="no"></a></h2>
+<p>Before use, please refer to this <a href="https://www.apache.org/info/verification.html" target="_blank" rel="noopener noreferrer" class="">official guide</a> to verify all Apache release versions, including the integrity and authenticity of source code releases.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="download-verification-files">Download Verification Files<a href="#download-verification-files" class="hash-link" aria-label="Direct link to Download Verification Files" title="Direct link to Download Verification Files" translate="no"></a></h3>
+<p>Download the <a href="https://downloads.apache.org/incubator/fesod/KEYS" target="_blank" rel="noopener noreferrer" class="">project release KEYS</a> file containing the public keys used for signing releases.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="verify-signature">Verify Signature<a href="#verify-signature" class="hash-link" aria-label="Direct link to Verify Signature" title="Direct link to Verify Signature" translate="no"></a></h3>
+<ol>
+<li class="">
+<p>Import the KEYS file to your GPG keyring:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">gpg </span><span class="token parameter variable" style="color:#36acaa">--import</span><spa [...]
+</li>
+<li class="">
+<p>Download the source release, .asc signature file, and .sha512 checksum file.</p>
+</li>
+<li class="">
+<p>Verify the GPG signature:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">gpg </span><span class="token parameter variable" style="color:#36acaa">--verify</span><spa [...]
+</li>
+</ol>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="verify-checksum">Verify Checksum<a href="#verify-checksum" class="hash-link" aria-label="Direct link to Verify Checksum" title="Direct link to Verify Checksum" translate="no"></a></h3>
+<p>Verify the <code>SHA-512</code> checksum:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">shasum </span><span class="token parameter variable" style="color:#36acaa">-a</span><span c [...]
+<p>Or on Linux:</p>
+<div class="language-bash codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-bash codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">sha512sum </span><span class="token parameter variable" style="color:#36acaa">-c</span><spa [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 00000000..effaa22f
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,52 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-introduce" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Introduction | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/"><meta data [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="introduction">Introduction<a href="#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no"></a></h2>
+<p><strong>Apache Fesod (Incubating)</strong> is a high-performance and memory-efficient Java library for reading and writing
+spreadsheet
+files, designed to simplify development and ensure reliability.</p>
+<p>Apache Fesod (Incubating) can provide developers and enterprises with great freedom and flexibility. We plan to
+introduce more new features in the future to continually enhance user experience and tool usability. Apache Fesod (
+Incubating) is committed to being your best choice for handling spreadsheet files.</p>
+<p>The name fesod(pronounced <code>/ˈfɛsɒd/</code>), an acronym for "fast easy spreadsheet and other documents" expresses the
+project's origin, background and vision.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="features">Features<a href="#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features" translate="no"></a></h3>
+<ul>
+<li class=""><strong>High-performance Reading and Writing</strong>: Apache Fesod (Incubating) focuses on performance optimization, capable of
+efficiently handling large-scale spreadsheet data. Compared to some traditional spreadsheet processing libraries, it
+can
+significantly reduce memory consumption.</li>
+<li class=""><strong>Simplicity and Ease of Use</strong>: The library offers a simple and intuitive API, allowing developers to easily integrate
+it into projects, whether for simple spreadsheet operations or complex data processing.</li>
+<li class=""><strong>Stream Operations</strong>: Apache Fesod (Incubating) supports stream reading, minimizing the problem of loading large
+amounts of data at once. This design is especially important when dealing with hundreds of thousands or even millions
+of rows of data.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="quick-example">Quick Example<a href="#quick-example" class="hash-link" aria-label="Direct link to Quick Example" title="Direct link to Quick Example" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="read">Read<a href="#read" class="hash-link" aria-label="Direct link to Read" title="Direct link to Read" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token class-name">FesodSheet</span><span class="token punctuation" style="color:#393A34">.</span><span c [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="write">Write<a href="#write" class="hash-link" aria-label="Direct link to Write" title="Direct link to Write" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token class-name">FesodSheet</span><span class="token punctuation" style="color:#393A34">.</span><span c [...]
+<div class="theme-admonition theme-admonition-tip admonition_mMJ5 alert alert--success"><div class="admonitionHeading_Loix"><span class="admonitionIcon_qNbI"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/migration/from-fastexcel/index.html b/docs/migration/from-fastexcel/index.html
new file mode 100644
index 00000000..4e2a3784
--- /dev/null
+++ b/docs/migration/from-fastexcel/index.html
@@ -0,0 +1,575 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-migration/from-fastexcel" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">From FastExcel | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/migration/ [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>This guide provides a comprehensive roadmap for migrating applications from cn.idev FastExcel library to Apache Fesod (Incubating). Apache Fesod (Incubating) is the evolution of this project, now under the Apache Software Foundation (Incubating), offering the same high-performance Excel processing capabilities with enhanced community support and long-term sustainability.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="why-migrate">Why Migrate?<a href="#why-migrate" class="hash-link" aria-label="Direct link to Why Migrate?" title="Direct link to Why Migrate?" translate="no"></a></h3>
+<ul>
+<li class=""><strong>Apache Software Foundation Support</strong>: Apache Fesod (Incubating) is now part of the Apache Software Foundation, ensuring long-term maintenance and community-driven development</li>
+<li class=""><strong>Seamless Transition</strong>: The API remains virtually identical, requiring minimal code changes</li>
+<li class=""><strong>Enhanced Branding</strong>: Unified naming conventions under the Apache Fesod (Incubating) umbrella</li>
+<li class=""><strong>Continued Innovation</strong>: Access to future enhancements and features under active Apache governance</li>
+<li class=""><strong>Backward Compatibility</strong>: Deprecated aliases (FastExcel) are temporarily maintained for gradual migration</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="migration-scope">Migration Scope<a href="#migration-scope" class="hash-link" aria-label="Direct link to Migration Scope" title="Direct link to Migration Scope" translate="no"></a></h3>
+<p>This migration primarily involves:</p>
+<ol>
+<li class="">Updating Maven/Gradle dependencies</li>
+<li class="">Replacing deprecated class names with FesodSheet</li>
+<li class="">Updating package imports</li>
+<li class="">Verifying functionality through comprehensive testing</li>
+</ol>
+<p>The core API, annotations, and processing logic remain unchanged, ensuring a low-risk migration path.</p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="migration-steps">Migration Steps<a href="#migration-steps" class="hash-link" aria-label="Direct link to Migration Steps" title="Direct link to Migration Steps" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="step-1-update-dependencies">Step 1: Update Dependencies<a href="#step-1-update-dependencies" class="hash-link" aria-label="Direct link to Step 1: Update Dependencies" title="Direct link to Step 1: Update Dependencies" translate="no"></a></h3>
+<p>Replace your existing dependency with Apache Fesod (Incubating):</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Source</th><th>GroupId</th><th>ArtifactId</th><th>Version</th></tr></thead><tbody><tr><td><strong>cn.idev FastExcel</strong></td><td>cn.idev.excel</td><td>fastexcel</td><td>1.3.0</td></tr><tr><td><strong>Apache Fesod (Incubating)</strong> ✅</td><td>org.apache.fesod</td><td>fesod-sheet</td><td>2.0.2-incubating+</td></tr></tbody></table>
+<p><strong>Maven:</strong></p>
+<p>Before:</p>
+<div class="language-xml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-xml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">depe [...]
+<p>After:</p>
+<div class="language-xml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-xml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">depe [...]
+<p><strong>Gradle:</strong></p>
+<p>Before:</p>
+<div class="language-groovy codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-groovy codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">implementation 'cn.idev.excel:fastexcel:1.3.0'</span><br></span></code></pre> [...]
+<p>After:</p>
+<div class="language-gradle codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-gradle codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">implementation 'org.apache.fesod:fesod-sheet:2.0.2-incubating'</span><br></sp [...]
+<blockquote>
+<p><strong>Note</strong>: The <code>fesod-sheet</code> module is the core module for Excel/CSV processing. It automatically includes the necessary dependencies (<code>fesod-common</code> and <code>fesod-shaded</code>).</p>
+</blockquote>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="step-2-package-import-updates">Step 2: Package Import Updates<a href="#step-2-package-import-updates" class="hash-link" aria-label="Direct link to Step 2: Package Import Updates" title="Direct link to Step 2: Package Import Updates" translate="no"></a></h3>
+<p>Update all import statements to use the new Apache Fesod (Incubating) package structure.</p>
+<p><strong>Core Entry Classes Replacements:</strong></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td><code>import cn.idev.excel.FastExcel;</code></td><td><code>import org.apache.fesod.sheet.FastExcel;</code></td></tr><tr><td><code>import cn.idev.excel.FastExcelFactory;</code></td><td><code>import org.apache.fesod.sheet.FastExcelFactory;</code></td></tr><tr><td><code>import cn.idev.excel.ExcelWriter;</code></td><td><code>import org.apache.fesod.sheet.ExcelWriter;</code></td></tr><tr><td><code>import cn.idev.excel. [...]
+<blockquote>
+<p><strong>Note</strong>: After this phase, <code>FastExcel.read(...)</code> and <code>FastExcelFactory.writerSheet(...)</code>
+still compile — they resolve to the <code>@Deprecated</code> bridge classes in Fesod.
+Step 3 replaces them with the canonical <code>FesodSheet</code> class.</p>
+</blockquote>
+<p><strong>Read API Replacements:</strong></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td><code>import cn.idev.excel.read.listener.ReadListener;</code></td><td><code>import org.apache.fesod.sheet.read.listener.ReadListener;</code></td></tr><tr><td><code>import cn.idev.excel.read.listener.PageReadListener;</code></td><td><code>import org.apache.fesod.sheet.read.listener.PageReadListener;</code></td></tr><tr><td><code>import cn.idev.excel.read.metadata.ReadSheet;</code></td><td><code>import org.apache.fe [...]
+<p><strong>Write API Replacements:</strong></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td><code>import cn.idev.excel.write.metadata.WriteSheet;</code></td><td><code>import org.apache.fesod.sheet.write.metadata.WriteSheet;</code></td></tr><tr><td><code>import cn.idev.excel.write.metadata.WriteWorkbook;</code></td><td><code>import org.apache.fesod.sheet.write.metadata.WriteWorkbook;</code></td></tr><tr><td><code>import cn.idev.excel.write.metadata.WriteTable;</code></td><td><code>import org.apache.fesod. [...]
+<p><strong>Write Handlers Replacements:</strong></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td><code>import cn.idev.excel.write.handler.WriteHandler;</code></td><td><code>import org.apache.fesod.sheet.write.handler.WriteHandler;</code></td></tr><tr><td><code>import cn.idev.excel.write.handler.SheetWriteHandler;</code></td><td><code>import org.apache.fesod.sheet.write.handler.SheetWriteHandler;</code></td></tr><tr><td><code>import cn.idev.excel.write.handler.CellWriteHandler;</code></td><td><code>import org. [...]
+<p><strong>Annotations Replacements:</strong></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td><code>import cn.idev.excel.annotation.ExcelProperty;</code></td><td><code>import org.apache.fesod.sheet.annotation.ExcelProperty;</code></td></tr><tr><td><code>import cn.idev.excel.annotation.ExcelIgnore;</code></td><td><code>import org.apache.fesod.sheet.annotation.ExcelIgnore;</code></td></tr><tr><td><code>import cn.idev.excel.annotation.ExcelIgnoreUnannotated;</code></td><td><code>import org.apache.fesod.sheet. [...]
+<p><strong>Converters Replacements:</strong></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td><code>import cn.idev.excel.converters.Converter;</code></td><td><code>import org.apache.fesod.sheet.converters.Converter;</code></td></tr><tr><td><code>import cn.idev.excel.converters.AutoConverter;</code></td><td><code>import org.apache.fesod.sheet.converters.AutoConverter;</code></td></tr><tr><td><code>import cn.idev.excel.converters.ReadConverterContext;</code></td><td><code>import org.apache.fesod.sheet.conver [...]
+<p><strong>Enums Replacements:</strong></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td><code>import cn.idev.excel.enums.CellDataTypeEnum;</code></td><td><code>import org.apache.fesod.sheet.enums.CellDataTypeEnum;</code></td></tr><tr><td><code>import cn.idev.excel.enums.CellExtraTypeEnum;</code></td><td><code>import org.apache.fesod.sheet.enums.CellExtraTypeEnum;</code></td></tr><tr><td><code>import cn.idev.excel.enums.WriteDirectionEnum;</code></td><td><code>import org.apache.fesod.sheet.enums.Write [...]
+<p><strong>Exceptions and Metadata Replacements:</strong></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td><code>import cn.idev.excel.exception.ExcelAnalysisException;</code></td><td><code>import org.apache.fesod.sheet.exception.ExcelAnalysisException;</code></td></tr><tr><td><code>import cn.idev.excel.exception.ExcelAnalysisStopException;</code></td><td><code>import org.apache.fesod.sheet.exception.ExcelAnalysisStopException;</code></td></tr><tr><td><code>import cn.idev.excel.exception.ExcelCommonException;</code></td [...]
+<p><strong>Wildcard catch-all</strong></p>
+<p>After all specific replacements above, scan for any remaining wildcard imports:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td><code>import cn.idev.excel.</code></td><td><code>import org.apache.fesod.sheet.</code></td></tr><tr><td><code>import org.apache.fesod.excel.</code></td><td><code>import org.apache.fesod.sheet.</code></td></tr></tbody></table>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="step-3-entry-class-rename-strongly-recommended">Step 3: Entry class rename (STRONGLY RECOMMENDED)<a href="#step-3-entry-class-rename-strongly-recommended" class="hash-link" aria-label="Direct link to Step 3: Entry class rename (STRONGLY RECOMMENDED)" title="Direct link to Step 3: Entry class rename (STRONGLY RECOMMENDED)" translate="no"></a></h3>
+<p><code>FastExcel</code> and <code>FastExcelFactory</code> compile in Fesod but are <code>@Deprecated</code> and
+<strong>will be removed in a future release</strong>. Replace all call sites with <code>FesodSheet</code>.</p>
+<p><strong>Import Replacements:</strong></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td><code>import org.apache.fesod.sheet.FastExcel;</code></td><td><code>import org.apache.fesod.sheet.FesodSheet;</code></td></tr><tr><td><code>import org.apache.fesod.sheet.FastExcelFactory;</code></td><td><code>import org.apache.fesod.sheet.FesodSheet;</code></td></tr></tbody></table>
+<p><strong>Call Site Replacements - FastExcel</strong></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td><code>FastExcel.read()</code></td><td><code>FesodSheet.read()</code></td></tr><tr><td><code>FastExcel.write()</code></td><td><code>FesodSheet.write()</code></td></tr><tr><td><code>FastExcel.writerSheet()</code></td><td><code>FesodSheet.writerSheet()</code></td></tr><tr><td><code>FastExcel.readSheet()</code></td><td><code>FesodSheet.readSheet()</code></td></tr><tr><td><code>FastExcel.writerTable()</code></td><td><c [...]
+<p><strong>Call Site Replacements — FastExcelFactory</strong></p>
+<p>FastExcel 1.3 shipped <code>FastExcelFactory</code> as a second entry class with an
+identical API surface. All of its static methods map directly to <code>FesodSheet</code>:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td><code>FastExcelFactory.read()</code></td><td><code>FesodSheet.read()</code></td></tr><tr><td><code>FastExcelFactory.write()</code></td><td><code>FesodSheet.write()</code></td></tr><tr><td><code>FastExcelFactory.writerSheet()</code></td><td><code>FesodSheet.writerSheet()</code></td></tr><tr><td><code>FastExcelFactory.readSheet()</code></td><td><code>FesodSheet.readSheet()</code></td></tr><tr><td><code>FastExcelFact [...]
+<p><strong>Type Reference Rename</strong></p>
+<p>If <code>FastExcel</code> or <code>FastExcelFactory</code> appear as a <strong>type name</strong> (not a call site),
+rename those too:</p>
+<ul>
+<li class="">Variable type: <code>FastExcel x = ...</code> → <code>FesodSheet x = ...</code></li>
+<li class="">Class literal: <code>FastExcel.class</code> → <code>FesodSheet.class</code></li>
+</ul>
+<p><code>ExcelWriter</code> and <code>ExcelReader</code> are <strong>not renamed</strong>, they keep the same class name.</p>
+<p><strong>CGLIB class name (conditional)</strong></p>
+<p>This phase only applies if the project contains code that <strong>inspects or asserts
+on generated CGLIB class names at runtime</strong>, for example in tests or serialization logic.</p>
+<p>Search all <code>.java</code> files for the string <code>ByFastExcelCGLIB</code>.
+If found, replace with <code>ByFesodCGLIB</code>.</p>
+<p>In Fesod, the naming policy is defined in
+<code>org.apache.fesod.sheet.util.BeanMapUtils.FesodSheetNamingPolicy</code> and its
+<code>getTag()</code> returns <code>ByFesodCGLIB</code>.</p>
+<p>If no file references <code>ByFastExcelCGLIB</code>, skip this phase entirely.</p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="migration-strategies">Migration Strategies<a href="#migration-strategies" class="hash-link" aria-label="Direct link to Migration Strategies" title="Direct link to Migration Strategies" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="gradual-migration-recommended">Gradual Migration (Recommended)<a href="#gradual-migration-recommended" class="hash-link" aria-label="Direct link to Gradual Migration (Recommended)" title="Direct link to Gradual Migration (Recommended)" translate="no"></a></h3>
+<p>Utilize the deprecated alias classes for a phased migration approach.</p>
+<p><strong>Phase 1: Dependency Update Only</strong></p>
+<ul>
+<li class="">Update Maven/Gradle dependency to Apache Fesod (Incubating)</li>
+<li class="">Keep using FastExcel classes (now deprecated aliases)</li>
+<li class="">Update package imports only</li>
+<li class="">Run comprehensive tests to verify compatibility</li>
+</ul>
+<p><strong>Phase 2: Class Name Migration</strong></p>
+<ul>
+<li class="">Progressively replace deprecated classes with FesodSheet</li>
+<li class="">Use IDE refactoring tools for bulk renaming</li>
+<li class="">Migrate module by module or feature by feature</li>
+<li class="">Maintain thorough test coverage throughout</li>
+</ul>
+<p><strong>Phase 3: Cleanup</strong></p>
+<ul>
+<li class="">Remove all references to deprecated classes</li>
+<li class="">Resolve deprecation warnings</li>
+<li class="">Update documentation and code comments</li>
+</ul>
+<p><strong>Benefits:</strong></p>
+<ul>
+<li class="">Lower risk through incremental changes</li>
+<li class="">Easier rollback if issues arise</li>
+<li class="">Minimal disruption to ongoing development</li>
+<li class="">Allows time for thorough testing at each phase</li>
+</ul>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="conclusion">Conclusion<a href="#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion" translate="no"></a></h2>
+<p>Migrating from cn.idev FastExcel to Apache Fesod (Incubating) is a straightforward process due to the high degree of API compatibility and backward-compatible deprecated aliases. The primary effort involves updating dependency declarations and package imports, with minimal to no logic changes required.</p>
+<p>The gradual migration strategy, supported by the temporary deprecated aliases (FastExcel, FastExcelFactory), allows teams to migrate at their own pace while maintaining full functionality.</p>
+<p>By following this guide, organizations can seamlessly transition to Apache Fesod (Incubating) and benefit from the long-term sustainability and community support of the Apache Software Foundation ecosystem.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/migration/from-fastexcel.md" target="_blank" rel="noopener norefer [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/quickstart/guide/index.html b/docs/quickstart/guide/index.html
new file mode 100644
index 00000000..b6cf0777
--- /dev/null
+++ b/docs/quickstart/guide/index.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-quickstart/guide" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Guide | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/quickstart/guide">< [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="compatibility-information">Compatibility Information<a href="#compatibility-information" class="hash-link" aria-label="Direct link to Compatibility Information" title="Direct link to Compatibility Information" translate="no"></a></h2>
+<p>The following table lists the minimum Java language version requirements for each version of the Apache Fesod(
+Incubating) library:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Version</th><th>JDK Version Support Range</th><th>Notes</th></tr></thead><tbody><tr><td>2.0.2-incubating</td><td>JDK8 - JDK25</td><td>Apache Incubator release</td></tr><tr><td>2.0.1-incubating</td><td>JDK8 - JDK25</td><td>Apache Incubator release</td></tr><tr><td>2.0.0-incubating</td><td>JDK8 - JDK25</td><td>NA(not available)</td></tr><tr><td>1.3.x</td><td>JDK8 - JDK25</td><td>Non-Apache release</td></tr><tr><td>1.2.x</td><td>JDK8 - JDK21</td><td>Non-Apache release< [...]
+<p>We strongly recommend using the latest version of Apache Fesod(Incubating), as performance optimizations, bug fixes, and
+new features
+in the latest version will enhance your experience.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="dependencies">Dependencies<a href="#dependencies" class="hash-link" aria-label="Direct link to Dependencies" title="Direct link to Dependencies" translate="no"></a></h3>
+<p>Apache Fesod(Incubating) uses the following key dependencies:</p>
+<ul>
+<li class=""><strong>Apache POI 5.5.1</strong> - For Excel file processing</li>
+<li class=""><strong>Apache Commons CSV 1.14.1</strong> - For CSV file support</li>
+<li class=""><strong>Ehcache 3.9.11</strong> - For caching functionality</li>
+</ul>
+<blockquote>
+<p>If your project already includes POI-related components, you may need to manually exclude POI-related jar files to
+avoid version conflicts.</p>
+</blockquote>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="version-update">Version Update<a href="#version-update" class="hash-link" aria-label="Direct link to Version Update" title="Direct link to Version Update" translate="no"></a></h2>
+<p>For detailed update logs, refer
+to <a href="https://github.com/apache/fesod/releases" target="_blank" rel="noopener noreferrer" class="">Details of version updates</a>. You can also find all
+available versions in the <a href="https://mvnrepository.com/artifact/org.apache.fesod/fesod-sheet" target="_blank" rel="noopener noreferrer" class="">Maven Central Repository</a>.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="maven">Maven<a href="#maven" class="hash-link" aria-label="Direct link to Maven" title="Direct link to Maven" translate="no"></a></h2>
+<p>If you are using Maven for project building, add the following configuration in the <code>pom.xml</code> file:</p>
+<div class="language-xml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-xml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34" [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="gradle">Gradle<a href="#gradle" class="hash-link" aria-label="Direct link to Gradle" title="Direct link to Gradle" translate="no"></a></h2>
+<p>If you are using Gradle for project building, add the following configuration in the <code>build.gradle</code> file:</p>
+<div class="language-gradle codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-gradle codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">dependencies {</span><br></span><span class="token-line" style="color:#393A34"><span cl [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/quickstart/simple-example/index.html b/docs/quickstart/simple-example/index.html
new file mode 100644
index 00000000..638c1492
--- /dev/null
+++ b/docs/quickstart/simple-example/index.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-quickstart/simple-example" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Simple example | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/quickstart [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="read-the-spreadsheet">Read the spreadsheet<a href="#read-the-spreadsheet" class="hash-link" aria-label="Direct link to Read the spreadsheet" title="Direct link to Read the spreadsheet" translate="no"></a></h3>
+<p>Below is an example of reading a spreadsheet document:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Implement the ReadListener interface to set up [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="write-the-spreadsheet">Write the spreadsheet<a href="#write-the-spreadsheet" class="hash-link" aria-label="Direct link to Write the spreadsheet" title="Direct link to Write the spreadsheet" translate="no"></a></h3>
+<p>Below is a simple example of creating a spreadsheet document:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Sample data class</span><span class="token pla [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/advanced/custom-converter/index.html b/docs/sheet/advanced/custom-converter/index.html
new file mode 100644
index 00000000..f3759047
--- /dev/null
+++ b/docs/sheet/advanced/custom-converter/index.html
@@ -0,0 +1,66 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/advanced/custom-converter" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Custom Converter | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/ad [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to create and register custom converters for both read and write operations.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>Fesod provides a <code>Converter</code> interface that allows you to define custom data transformation logic. Converters can be registered per-field (via annotation) or globally (via builder), and work for both reading and writing.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="creating-a-custom-converter">Creating a Custom Converter<a href="#creating-a-custom-converter" class="hash-link" aria-label="Direct link to Creating a Custom Converter" title="Direct link to Creating a Custom Converter" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="converter-implementation">Converter Implementation<a href="#converter-implementation" class="hash-link" aria-label="Direct link to Converter Implementation" title="Direct link to Converter Implementation" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="per-field-vs-global-registration">Per-Field vs. Global Registration<a href="#per-field-vs-global-registration" class="hash-link" aria-label="Direct link to Per-Field vs. Global Registration" title="Direct link to Per-Field vs. Global Registration" translate="no"></a></h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th style="text-align:left">Approach</th><th style="text-align:left">Scope</th><th style="text-align:left">How</th></tr></thead><tbody><tr><td style="text-align:left">Per-field</td><td style="text-align:left">Single field only</td><td style="text-align:left"><code>@ExcelProperty(converter = MyConverter.class)</code></td></tr><tr><td style="text-align:left">Global</td><td style="text-align:left">All fields matching Java type + Excel type</td><td style="text-align:left">< [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="converter-resolution-priority">Converter Resolution Priority<a href="#converter-resolution-priority" class="hash-link" aria-label="Direct link to Converter Resolution Priority" title="Direct link to Converter Resolution Priority" translate="no"></a></h3>
+<ol>
+<li class="">Field-level converter (<code>@ExcelProperty(converter = ...)</code>) — highest priority</li>
+<li class="">Builder-level converter (<code>.registerConverter(...)</code>)</li>
+<li class="">Built-in default converter — lowest priority</li>
+</ol>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="global-registration-example">Global Registration Example<a href="#global-registration-example" class="hash-link" aria-label="Direct link to Global Registration Example" title="Direct link to Global Registration Example" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="write-with-global-converter">Write with Global Converter<a href="#write-with-global-converter" class="hash-link" aria-label="Direct link to Write with Global Converter" title="Direct link to Write with Global Converter" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="read-with-global-converter">Read with Global Converter<a href="#read-with-global-converter" class="hash-link" aria-label="Direct link to Read with Global Converter" title="Direct link to Read with Global Converter" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/advanced/large-file/index.html b/docs/sheet/advanced/large-file/index.html
new file mode 100644
index 00000000..02f44861
--- /dev/null
+++ b/docs/sheet/advanced/large-file/index.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/advanced/large-file" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Large File Writing | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/ [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to write very large Excel files (100,000+ rows) with memory optimization.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>When exporting large datasets (e.g., database dumps, log analysis), loading all rows at once would exhaust memory. Fesod uses Apache POI's streaming API (SXSSF) internally, but temporary XML files can consume significant disk space. Enabling compression reduces disk usage at the cost of slightly more CPU.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="batch-writing-with-compressed-temp-files">Batch Writing with Compressed Temp Files<a href="#batch-writing-with-compressed-temp-files" class="hash-link" aria-label="Direct link to Batch Writing with Compressed Temp Files" title="Direct link to Batch Writing with Compressed Temp Files" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="architecture">Architecture<a href="#architecture" class="hash-link" aria-label="Direct link to Architecture" title="Direct link to Architecture" translate="no"></a></h2>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">Data (in memory, batched) Fesod POI/SXSSF</span><br></span><span class="tok [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="performance-tips">Performance Tips<a href="#performance-tips" class="hash-link" aria-label="Direct link to Performance Tips" title="Direct link to Performance Tips" translate="no"></a></h2>
+<ul>
+<li class="">Use <code>ExcelWriter</code> (try-with-resources) for batch writing instead of loading all data with <code>doWrite()</code>.</li>
+<li class="">Enable temp file compression for disk-constrained environments.</li>
+<li class="">Tune batch size (100 rows here) based on your row width and available memory.</li>
+<li class="">Monitor temp directory size: <code>FileUtils.getPoiFilesPath()</code>.</li>
+</ul>
+<div class="theme-admonition theme-admonition-tip admonition_mMJ5 alert alert--success"><div class="admonitionHeading_Loix"><span class="admonitionIcon_qNbI"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/advanced/password/index.html b/docs/sheet/advanced/password/index.html
new file mode 100644
index 00000000..83a3cf1f
--- /dev/null
+++ b/docs/sheet/advanced/password/index.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/advanced/password" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Password Protection | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to read and write password-protected Excel files.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>Fesod supports Excel's built-in password protection for both reading and writing. Use <code>.password("xxx")</code> on the builder to encrypt/decrypt files. For <code>.xlsx</code> output, Fesod uses Apache POI's encryption (AES-based) which can be memory-intensive for large workbooks. For legacy <code>.xls</code> files, password protection behaves as write-protection rather than full content encryption, so behavior and security guarantees differ from <code>.xlsx</c [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="writing-with-password">Writing with Password<a href="#writing-with-password" class="hash-link" aria-label="Direct link to Writing with Password" title="Direct link to Writing with Password" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="reading-with-password">Reading with Password<a href="#reading-with-password" class="hash-link" aria-label="Direct link to Reading with Password" title="Direct link to Reading with Password" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="security-notes">Security Notes<a href="#security-notes" class="hash-link" aria-label="Direct link to Security Notes" title="Direct link to Security Notes" translate="no"></a></h2>
+<ul>
+<li class="">Excel password protection encrypts the file content, making it unreadable without the password.</li>
+<li class="">Without the correct password, reading will throw an <code>EncryptedDocumentException</code>.</li>
+<li class="">In production, avoid hardcoding passwords — use configuration files or secrets management.</li>
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/sheet/advanced/password.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Bllq" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0. [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/fill/index.html b/docs/sheet/fill/index.html
new file mode 100644
index 00000000..712e612f
--- /dev/null
+++ b/docs/sheet/fill/index.html
@@ -0,0 +1,88 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/fill/fill" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Fill | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/fill/"><meta d [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This section explains how to use Fesod to fill data into files.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="simple-fill">Simple Fill<a href="#simple-fill" class="hash-link" aria-label="Direct link to Simple Fill" title="Direct link to Simple Fill" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Fill data into spreadsheet based on a template file using objects or Map.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class">POJO Class<a href="#pojo-class" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="template">Template<a href="#template" class="hash-link" aria-label="Direct link to Template" title="Direct link to Template" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsIAAABkCAYAAACMyFYDAAAABWZkRUNSJJPjAOWrYpkAACKvSURBVHgB5cRjtCVn2oDh+3mravPY57RtxLYzM0kGydi2bdu2EYxi22bbPH2szap6n2/Vj7PWXr06mWimZ773x3Xxohe/TF3mMpf9J7zoJS9Tl7nMVS96ycvVZS5z2X/KC1/yCnXZv4sBcJnLXPbvhgCAy1zmIhAAXOYylz3bQNibIgC47N/FALjMZS77d0EgAeAyl7kIBACXucxlzzYQAFz2n2YAXOYyl/07IADgMpe5CIQEgMtc5rKnC4THA7A3BQBc9u9kAFzmMpe5zGUuc5nLXLY/gPCvADwZCiQAXPbvZgBc5jKXPdsQAHCZy1wEAoDLXOayfwcF9gbgsv8UY8M [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result">Result<a href="#result" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlUAAABZCAYAAAAXW9HgAAAABWZkRUNSJJPjAOWrYpkAABm1SURBVHgB5cRjtCVn2oDh+3mravPY57RtxLYzM0kGydi2bdu2EYxi22bbPH2szap6n2/Vj7PWXr06mWimZ773x3Xxohe/TPflne9+r376M5/Rr33ta+qy/eXTn/mMvvPd79UXvfhl+u/ywnNfou94xzv0U5/6lH7ta19Tlz1dn/rUp/Qd73iHvvDcl+iLXvwyTbzoJS/Tvb3zPe/VT33qU/q1r31NXeYyl7nMZS4yAPuyu3cPj61ex933PYjL9pfHVq9jd+8eAP5dxBh6+4dYtXYDd9/3IC57ulat3UBv/xBiDAAIAOxtd+8eVq3bwN33P4jLXPb/1d33P4TLXOayx2M [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="fill-list">Fill List<a href="#fill-list" class="hash-link" aria-label="Direct link to Fill List" title="Direct link to Fill List" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-1">Overview<a href="#overview-1" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Fill multiple data items into a template list, supporting in-memory batch operations and file cache batch filling.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="template-1">Template<a href="#template-1" class="hash-link" aria-label="Direct link to Template" title="Direct link to Template" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVcAAABOCAYAAACUn1X/AAAABWZkRUNSJJPjAOWrYpkAABJkSURBVHgB5cRjtCVn2oDh+3mravPY57RtxLYzM0kGydi2bdu2EYxi22bbPH2szap6n2/Vj7PWXr06mWimZ773x3Xxohe/TF3mMpf9u7zoJS9Tl7lsbwbAZS5z2b8DAgAuc9nejA3L/CedfsqJ2LCMy57I6aeciA3LuOw/6fRTTsSGZZ4Ntlrm/5vTTz4RWy3jsify4hc+n6a6HPtiAP6TPM8DwGVPxPM8AFz2n+R5HgAueyKe5wHgsiciIgDsiwH4T/J9HwCXPRHf9wFw2X+S7/sAuOyJ+L4PgMueiIgAsC8G4D/J8zwAXPZEPM8DwGX/SZ7nAeCyJ+J5HgAueyIiAsC [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result-1">Result<a href="#result-1" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/listFill_result-c126158195ba15c7ad37c143c1f2940b.png" width="445" height="432" class="img_BbTd"></p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="complex-fill">Complex Fill<a href="#complex-fill" class="hash-link" aria-label="Direct link to Complex Fill" title="Direct link to Complex Fill" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-2">Overview<a href="#overview-2" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Fill various data types in a template, including lists and regular variables.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-2">Code Example<a href="#code-example-2" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="template-2">Template<a href="#template-2" class="hash-link" aria-label="Direct link to Template" title="Direct link to Template" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfcAAACICAYAAAD6dqKHAAAABWZkRUNSJJPjAOWrYpkAACNGSURBVHgB5cRjtCVn2oDh+3mravPY57RtxLYzM0kGydi2bdu2EYxi22bbPH2szap6n2/Vj7PWXr06mWimZ773x3Xxohe/TF3mMpf9u7zoJS9Tl7nMVS96ycvVZf+tDIDLXOYyl7nMZS5zkQFwmctc9u+AAIDLXOYiEABc9t/K2LDMf9Lpp5yIDcu47ImcfsqJ2LCMy/6TTj/lRGxY5tlgq2Vc9v/R6SefiK2WcdkTsdUS/ymnn3wCtlrCZU/k9JNPwFZLTDIA/0me5wHgsifieR4ALvtP8jwPAJe57F/xPA8Al/238DwPAJc9Ec/zAJhkAP6TfN8HwGVPxPd9AFz2n+T [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result-2">Result<a href="#result-2" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/complexFill_result-3908e6375dce9ca1e29fdcc1eb7ba0b6.png" width="502" height="471" class="img_BbTd"></p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="complex-fill-with-large-data">Complex Fill with Large Data<a href="#complex-fill-with-large-data" class="hash-link" aria-label="Direct link to Complex Fill with Large Data" title="Direct link to Complex Fill with Large Data" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-3">Overview<a href="#overview-3" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Optimize performance for filling large data, ensuring the template list is at the last row, and subsequent data is
+filled using <code>WriteTable</code>.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-3">Code Example<a href="#code-example-3" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="template-3">Template<a href="#template-3" class="hash-link" aria-label="Direct link to Template" title="Direct link to Template" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfYAAAB7CAYAAACGsqIOAAAABWZkRUNSJJPjAOWrYpkAAB9XSURBVHgB5cRjtCVn2oDh+3mravPY57RtxLYzM0kGydi2bdu2EYxi22bbPH2szap6n2/Vj7PWXr06mWimZ773x3Xxohe/TJ/IO9/9Xv30Zz6jX/va19Rl+8unP/MZfee736svevHL9N/lhee+RN/xjnfopz71Kf3a176mLnu6PvWpT+k73vEOfeG5L9EXvfhlmnjRS16me3vne96rn/rUp/RrX/uausxlLnPZf5IBeCK7e/fw2Op13H3fg7hsf3ls9Tp29+4B4N9FjKG3f4hVazdw930P4rKna9XaDfT2DyHGAIAAwN529+5h1boN3H3/g7jMZf9f3X3/Q7jsv4kBcJn [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result-3">Result<a href="#result-3" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/complexFillWithTable_result-21cb25bd329df76baf680fd0f94ef43b.png" width="495" height="469" class="img_BbTd"></p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="horizontal-fill">Horizontal Fill<a href="#horizontal-fill" class="hash-link" aria-label="Direct link to Horizontal Fill" title="Direct link to Horizontal Fill" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-4">Overview<a href="#overview-4" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Fill list data horizontally, suitable for scenarios with dynamic column numbers.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-4">Code Example<a href="#code-example-4" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="template-4">Template<a href="#template-4" class="hash-link" aria-label="Direct link to Template" title="Direct link to Template" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaoAAACHCAYAAABHyh2qAAAABWZkRUNSJJPjAOWrYpkAAB6PSURBVHgB5cRjtCVn2oDh+3mravPY57RtxLYzM0kGydi2bdu2EYxi22bbPH2szap6n2/Vj7PWXr06mWimZ773x3Xxohe/TF3mMpc9m170kpepy1zmshe95OX6n2IAXOYylz1bEABwmctcBEIC4D/FALjMZS5zmctc9r/MALjMZS57NiAA4DKXuQgEgP80Y8My/06nn3IiNizjMpf9f3T6KSdiwzK2WsZlj+f0k0/EVsu47ImcfvKJ2GqZ/0W2WuLf7fSTT8BWS9QyAP9OnucB4DKX/X/keR4ALnsinucB4LIn4nkeAC57Ip7nAVDLAPw7+b4PgMtc9v+R7/sAuOyJ+L4 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result-4">Result<a href="#result-4" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/horizontalFill_result-6c236308703bda3338b429425b18c2a4.png" width="853" height="135" class="img_BbTd"></p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="fill-multiple-lists-together">Fill Multiple Lists Together<a href="#fill-multiple-lists-together" class="hash-link" aria-label="Direct link to Fill Multiple Lists Together" title="Direct link to Fill Multiple Lists Together" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-5">Overview<a href="#overview-5" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Support filling multiple lists simultaneously, with prefixes to differentiate between lists.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-5">Code Example<a href="#code-example-5" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="template-5">Template<a href="#template-5" class="hash-link" aria-label="Direct link to Template" title="Direct link to Template" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/compositeFill_file-ba1c7222a9c310e389363a04777fa279.png" width="847" height="242" class="img_BbTd"></p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result-5">Result<a href="#result-5" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/compositeFill_result-94a945a637d60e2b0e8c055c83f92d8e.png" width="922" height="601" class="img_BbTd"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/sheet/fill/fill.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="cu [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/help/annotation/index.html b/docs/sheet/help/annotation/index.html
new file mode 100644
index 00000000..5b230901
--- /dev/null
+++ b/docs/sheet/help/annotation/index.html
@@ -0,0 +1,402 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/help/annotation" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Annotation | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/help/ann [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This section describes how to read annotations provided in the project.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="entity-class-annotations">Entity Class Annotations<a href="#entity-class-annotations" class="hash-link" aria-label="Direct link to Entity Class Annotations" title="Direct link to Entity Class Annotations" translate="no"></a></h2>
+<p>Entity classes are the foundation of read and write operations. FesodSheet provides various annotations to help
+developers easily define fields and formats.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="excelproperty"><code>@ExcelProperty</code><a href="#excelproperty" class="hash-link" aria-label="Direct link to excelproperty" title="Direct link to excelproperty" translate="no"></a></h3>
+<p>Defines the column name in spreadsheet and the field name to map. Specific parameters are as follows:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>value</td><td>Empty</td><td>Used to match the header in spreadsheet, must be fully matched. If there are multiple header rows, it will match the last row header.</td></tr><tr><td>order</td><td>Integer.MAX_VALUE</td><td>Higher priority than <code>value</code>, will match the order of entities and data in spreadsheet according to the order of <code>order</code>.</td></tr><tr><td>index</td>< [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="excelignore"><code>@ExcelIgnore</code><a href="#excelignore" class="hash-link" aria-label="Direct link to excelignore" title="Direct link to excelignore" translate="no"></a></h3>
+<p>By default, all fields will match spreadsheet. Adding this annotation will ignore the field.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="excelignoreunannotated"><code>@ExcelIgnoreUnannotated</code><a href="#excelignoreunannotated" class="hash-link" aria-label="Direct link to excelignoreunannotated" title="Direct link to excelignoreunannotated" translate="no"></a></h3>
+<p>By default, all properties without the <code>@ExcelProperty</code> annotation are involved in read/write operations. Properties
+with this annotation are not involved in read/write operations.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="datetimeformat"><code>@DateTimeFormat</code><a href="#datetimeformat" class="hash-link" aria-label="Direct link to datetimeformat" title="Direct link to datetimeformat" translate="no"></a></h3>
+<p>Date conversion: When using <code>String</code> to receive data in spreadsheet date format, this annotation will be called. The
+parameters are as follows:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>value</td><td>Empty</td><td>Refer to <code>java.text.SimpleDateFormat</code> .</td></tr><tr><td>use1904windowing</td><td>Automatically selected</td><td>In spreadsheet, time is stored as a double-precision floating-point number starting from 1900, but sometimes the default start date is 1904, so set this value to change the default start date to 1904.</td></tr></tbody></table>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="numberformat"><code>@NumberFormat</code><a href="#numberformat" class="hash-link" aria-label="Direct link to numberformat" title="Direct link to numberformat" translate="no"></a></h3>
+<p>Number conversion, using <code>String</code> to receive data in spreadsheet number format will trigger this annotation.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>value</td><td>Empty</td><td>Refer to <code>java.text.DecimalFormat</code>.</td></tr><tr><td>roundingMode</td><td>RoundingMode.HALF_UP</td><td>Set the rounding mode when formatting</td></tr></tbody></table>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="columnwidth"><code>@ColumnWidth</code><a href="#columnwidth" class="hash-link" aria-label="Direct link to columnwidth" title="Direct link to columnwidth" translate="no"></a></h3>
+<p>Specifies the column width.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="headrowheight--contentrowheight"><code>@HeadRowHeight</code> & <code>@ContentRowHeight</code><a href="#headrowheight--contentrowheight" class="hash-link" aria-label="Direct link to headrowheight--contentrowheight" title="Direct link to headrowheight--contentrowheight" translate="no"></a></h3>
+<p>Specifies the height of the header rows (<code>@HeadRowHeight</code>) or the content rows (<code>@ContentRowHeight</code>). The
+parameters are as follows:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>value</td><td>-1</td><td>Set the height. <code>-1</code> indicates automatic height setting.</td></tr></tbody></table>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="headfontstyle--contentfontstyle"><code>@HeadFontStyle</code> & <code>@ContentFontStyle</code><a href="#headfontstyle--contentfontstyle" class="hash-link" aria-label="Direct link to headfontstyle--contentfontstyle" title="Direct link to headfontstyle--contentfontstyle" translate="no"></a></h3>
+<p>Customizes the font style for headers (<code>@HeadFontStyle</code>) or content data (<code>@ContentFontStyle</code>). The
+parameters are as follows:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>fontName</td><td>Empty</td><td>The name for the font (e.g., "Arial").</td></tr><tr><td>fontHeightInPoints</td><td>-1</td><td>Set font height.</td></tr><tr><td>italic</td><td>BooleanEnum.DEFAULT</td><td>Whether to use italics.</td></tr><tr><td>strikeout</td><td>BooleanEnum.DEFAULT</td><td>Whether to use a strikeout horizontal line through the text.</td></tr><tr><td>color</td><td> [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="headstyle--contentstyle"><code>@HeadStyle</code> & <code>@ContentStyle</code><a href="#headstyle--contentstyle" class="hash-link" aria-label="Direct link to headstyle--contentstyle" title="Direct link to headstyle--contentstyle" translate="no"></a></h3>
+<p>Customizes the cell style (borders, alignment, colors...) for header data (<code>@HeadStyle</code>) or content data (<code>@ContentStyle</code>).
+The parameters are as follows:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>dataFormat</td><td>-1</td><td>Set the data format (must be a valid format defined at <code>org.apache.poi.ss.usermodel.BuiltinFormats</code>).</td></tr><tr><td>hidden</td><td>BooleanEnum.DEFAULT</td><td>set the cell to be hidden. <strong>Note: This only takes effect if the sheet is protected.</strong></td></tr><tr><td>locked</td><td>BooleanEnum.DEFAULT</td><td>Set the cell to be locked. < [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="contentloopmerge"><code>@ContentLoopMerge</code><a href="#contentloopmerge" class="hash-link" aria-label="Direct link to contentloopmerge" title="Direct link to contentloopmerge" translate="no"></a></h3>
+<p>Defines a loop merge strategy for content cells. The parameters are as follows:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>eachRow</td><td>1</td><td>The number of rows to include in each merge loop.</td></tr><tr><td>columnExtend</td><td>1</td><td>The number of columns to extend the merge.</td></tr></tbody></table>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="onceabsolutemerge"><code>@OnceAbsoluteMerge</code><a href="#onceabsolutemerge" class="hash-link" aria-label="Direct link to onceabsolutemerge" title="Direct link to onceabsolutemerge" translate="no"></a></h3>
+<p>Defines a one-time absolute merge region. The parameters are as follows:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>firstRowIndex</td><td>-1</td><td>The index of the first row to merge.</td></tr><tr><td>lastRowIndex</td><td>-1</td><td>The index of the last row to merge.</td></tr><tr><td>firstColumnIndex</td><td>-1</td><td>The index of the first column to merge.</td></tr><tr><td>lastColumnIndex</td><td>-1</td><td>The index of the last column to merge.</td></tr></tbody></table>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="freezepane"><code>@FreezePane</code><a href="#freezepane" class="hash-link" aria-label="Direct link to freezepane" title="Direct link to freezepane" translate="no"></a></h3>
+<p>Define a freeze pane for an Excel sheet. The parameters are as follows:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>colSplit</td><td>0</td><td>Horizontal position of freeze pane.</td></tr><tr><td>rowSplit</td><td>0</td><td>Vertical position of freeze pane.</td></tr><tr><td>leftmostColumn</td><td>-1</td><td>Left column visible in right pane. By default, it's equal to <code>colSplit</code>.</td></tr><tr><td>topRow</td><td>-1</td><td>Top row visible in bottom pane. By default, it's equal to <cod [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/help/core-class/index.html b/docs/sheet/help/core-class/index.html
new file mode 100644
index 00000000..00f10a1f
--- /dev/null
+++ b/docs/sheet/help/core-class/index.html
@@ -0,0 +1,390 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/help/core-class" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Core Class | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/help/cor [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This section introduces the core classes in the project.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>If you use this project for custom read/write operations, you need to understand its important concepts and classes.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="core-concepts">Core Concepts<a href="#core-concepts" class="hash-link" aria-label="Direct link to Core Concepts" title="Direct link to Core Concepts" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="fesodsheet">FesodSheet<a href="#fesodsheet" class="hash-link" aria-label="Direct link to FesodSheet" title="Direct link to FesodSheet" translate="no"></a></h3>
+<p>Entry class used to start various operations</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="multiple-builders">Multiple Builders<a href="#multiple-builders" class="hash-link" aria-label="Direct link to Multiple Builders" title="Direct link to Multiple Builders" translate="no"></a></h3>
+<p>There are corresponding Builder classes for read and write operations:</p>
+<ul>
+<li class=""><strong><code>ExcelReaderBuilder</code> and <code>ExcelWriterBuilder</code></strong>:Constructs a <code>ReadWorkbook</code> or <code>WriteWorkbook</code>, which can be
+understood as an spreadsheet object; only one spreadsheet needs to be constructed</li>
+<li class=""><strong><code>ExcelReaderSheetBuilder</code> and <code>ExcelWriterSheetBuilder</code></strong>:Constructs a <code>ReadSheet</code> or <code>WriteSheet</code> object, which can
+be understood as a page in spreadsheet; each page needs to be constructed</li>
+<li class=""><strong><code>CsvReaderBuilder</code> and <code>CsvWriterBuilder</code></strong>:Construct the CsvFormat required internally.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="readlistener">ReadListener<a href="#readlistener" class="hash-link" aria-label="Direct link to ReadListener" title="Direct link to ReadListener" translate="no"></a></h3>
+<p>Called to handle data after each row is read</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="writehandler">WriteHandler<a href="#writehandler" class="hash-link" aria-label="Direct link to WriteHandler" title="Direct link to WriteHandler" translate="no"></a></h3>
+<p>Called to handle data for each operation, including creating cells, creating tables, etc.</p>
+<p>All configurations are inherited. The configuration of <code>Workbook</code> will be inherited by <code>Sheet</code>, so when setting
+parameters in FesodSheet, the scope is the entire sheet before the <code>FesodSheet.sheet()</code> method, and the scope is the
+entire csv before the <code>FesodSheet.csv()</code> method.</p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="writehandler-1">WriteHandler<a href="#writehandler-1" class="hash-link" aria-label="Direct link to WriteHandler" title="Direct link to WriteHandler" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-1">Overview<a href="#overview-1" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p><code>WriteHandler</code> is an interface provided by FesodSheet for intercepting the writing process when writing to a spreadsheet
+file, allowing developers to customize operations such as setting cell styles, merging cells, adding hyperlinks,
+inserting comments, etc. By implementing <code>WriteHandler</code>, developers can have precise control over the writing process to
+meet complex business requirements.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="writehandler-interface-categories">WriteHandler Interface Categories<a href="#writehandler-interface-categories" class="hash-link" aria-label="Direct link to WriteHandler Interface Categories" title="Direct link to WriteHandler Interface Categories" translate="no"></a></h3>
+<p>FesodSheet provides the following WriteHandler interfaces for handling different writing scenarios:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Interface Name</th><th>Description</th></tr></thead><tbody><tr><td><strong>CellWriteHandler</strong></td><td>Interceptor at the cell level, allows custom operations on cell data and styles.</td></tr><tr><td><strong>RowWriteHandler</strong></td><td>Row-level interceptor, used to perform additional operations after row data is written.</td></tr><tr><td><strong>SheetWriteHandler</strong></td><td>Worksheet-level interceptor, used to set worksheet-level properties (such [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="use">Use<a href="#use" class="hash-link" aria-label="Direct link to Use" title="Direct link to Use" translate="no"></a></h3>
+<ol>
+<li class="">
+<p>Implement the corresponding <code>WriteHandler</code> interface:</p>
+<ul>
+<li class="">Choose the appropriate interface (<code>CellWriteHandler</code>, <code>RowWriteHandler</code>, or <code>SheetWriteHandler</code>).</li>
+<li class="">Implement the methods in the interface, defining custom logic in the methods.</li>
+</ul>
+</li>
+<li class="">
+<p>Register the WriteHandler:</p>
+<ul>
+<li class="">Register your custom WriteHandler when calling <code>FesodSheet.write()</code> using <code>.registerWriteHandler()</code>.</li>
+</ul>
+</li>
+</ol>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no"></a></h3>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="set-cell-style">Set Cell Style<a href="#set-cell-style" class="hash-link" aria-label="Direct link to Set Cell Style" title="Direct link to Set Cell Style" translate="no"></a></h4>
+<p>Set the background color to yellow and font color to blue for all content cells.</p>
+<p>Customise a <code>CellWriteHandler</code></p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<p>Register and Use</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="inserting-comments">Inserting Comments<a href="#inserting-comments" class="hash-link" aria-label="Direct link to Inserting Comments" title="Direct link to Inserting Comments" translate="no"></a></h4>
+<p>Insert a comment for the first row, second column of the header.</p>
+<p>Customise a <code>RowWriteHandler</code></p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<p>Register and Use</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="adding-dropdown-lists">Adding Dropdown Lists<a href="#adding-dropdown-lists" class="hash-link" aria-label="Direct link to Adding Dropdown Lists" title="Direct link to Adding Dropdown Lists" translate="no"></a></h4>
+<p>Add a dropdown list for the first column of the first two rows.</p>
+<p>Customise a <code>SheetWriteHandler</code></p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<p>Register and Use</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="readlistener-1">ReadListener<a href="#readlistener-1" class="hash-link" aria-label="Direct link to ReadListener" title="Direct link to ReadListener" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-2">Overview<a href="#overview-2" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p><code>ReadListener</code> is an interface provided by FesodSheet for processing each row of data when reading a spreadsheet file.
+It is
+one of the core components of FesodSheet, allowing developers to implement custom logic to handle data rows, process
+headers, and even perform specific operations after reading is complete.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="methods">Methods<a href="#methods" class="hash-link" aria-label="Direct link to Methods" title="Direct link to Methods" translate="no"></a></h3>
+<p><code>ReadListener</code> is a generic interface, where the generic type is the type of object to be read (e.g., <code>DemoData</code>). Its
+core methods are as follows:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Method Name</th><th>Description</th></tr></thead><tbody><tr><td><code>void invoke(T data, AnalysisContext context)</code></td><td>Triggered when a line of data is read. <code>data</code> is the parsed current line object, and <code>context</code> contains the read context information.</td></tr><tr><td><code>void doAfterAllAnalysed(AnalysisContext context)</code></td><td>Called after all data parsing is complete, it can be used for resource release or statistical dat [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="use-cases">Use Cases<a href="#use-cases" class="hash-link" aria-label="Direct link to Use Cases" title="Direct link to Use Cases" translate="no"></a></h3>
+<ul>
+<li class=""><strong>Simplify code</strong>: Suitable for simple row-by-row processing, reducing control over memory and processing logic.</li>
+<li class=""><strong>Exception handling</strong>: Able to capture and handle exceptions during the reading process.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="implementation-steps">Implementation Steps<a href="#implementation-steps" class="hash-link" aria-label="Direct link to Implementation Steps" title="Direct link to Implementation Steps" translate="no"></a></h3>
+<ol>
+<li class="">
+<p>Implement the <code>ReadListener</code> interface:</p>
+<ul>
+<li class="">Use an entity class as the generic type (e.g., <code>ReadListener<DemoData></code>).</li>
+<li class="">Implement the core methods and add data processing logic as needed.</li>
+</ul>
+</li>
+<li class="">
+<p>Register the custom <code>ReadListener</code> during reading:</p>
+<ul>
+<li class="">When calling the <code>FesodSheet.read()</code> method, pass in the custom listener instance.</li>
+</ul>
+</li>
+</ol>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="example-1">Example<a href="#example-1" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no"></a></h3>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="process-row-data">Process Row Data<a href="#process-row-data" class="hash-link" aria-label="Direct link to Process Row Data" title="Direct link to Process Row Data" translate="no"></a></h4>
+<p>Customise a <code>ReadListener</code></p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<p>Use</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="processing-table-headers">Processing Table Headers<a href="#processing-table-headers" class="hash-link" aria-label="Direct link to Processing Table Headers" title="Direct link to Processing Table Headers" translate="no"></a></h4>
+<p>Customise a <code>ReadListener</code></p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<p>Use</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="handling-exceptions">Handling Exceptions<a href="#handling-exceptions" class="hash-link" aria-label="Direct link to Handling Exceptions" title="Direct link to Handling Exceptions" translate="no"></a></h4>
+<p>Customise a <code>ReadListener</code></p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<p>Use</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="pagination">Pagination<a href="#pagination" class="hash-link" aria-label="Direct link to Pagination" title="Direct link to Pagination" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<blockquote>
+<p><strong>Note</strong>:</p>
+<ul>
+<li class=""><code>PageReadListener</code> is a convenient utility class provided by FesodSheet that supports batch processing based on
+pagination.</li>
+<li class="">The default page size is 1, which can be specified using the constructor.</li>
+</ul>
+</blockquote>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="analysiseventlistener">AnalysisEventListener<a href="#analysiseventlistener" class="hash-link" aria-label="Direct link to AnalysisEventListener" title="Direct link to AnalysisEventListener" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-3">Overview<a href="#overview-3" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p><code>AnalysisEventListener</code> is the core listener used in FesodSheet for processing spreadsheet data. It is based on an
+event-driven
+mechanism, allowing developers to perform custom operations when reading each row of data and to perform corresponding
+processing after all data has been parsed. It is typically used for streaming large amounts of data and is suitable for
+scenarios that require processing large data volumes and performing batch operations (such as batch insertion into a
+database).</p>
+<p>Core Features:</p>
+<ul>
+<li class=""><strong>Line-by-line reading</strong>: <code>AnalysisEventListener</code> reads data from spreadsheet files line by line, executing the
+<code>invoke</code>
+method when reading each line of data, making it suitable for streaming processing.</li>
+<li class=""><strong>Memory control</strong>: You can set <code>BATCH_COUNT</code> to control the amount of data processed each time, preventing memory
+overflow.</li>
+<li class=""><strong>Batch Processing</strong>: You can cache a certain amount of data and process it in batches, suitable for scenarios with
+large data volumes.</li>
+<li class=""><strong>Event-Driven</strong>: The <code>invoke</code> method is called when reading each row of data; after all data has been read, the
+<code>doAfterAllAnalysed</code> method is called.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="methods-1">Methods<a href="#methods-1" class="hash-link" aria-label="Direct link to Methods" title="Direct link to Methods" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Method Name</th><th>Description</th></tr></thead><tbody><tr><td><code>invoke(T data, AnalysisContext context)</code></td><td>Triggered when a line of data is read. <code>data</code> is the parsed current line object, and <code>context</code> contains the read context information.</td></tr><tr><td><code>doAfterAllAnalysed(AnalysisContext context)</code></td><td>Called after all data parsing is complete, used for resource cleanup or post-processing of batch operations [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="use-cases-1">Use Cases<a href="#use-cases-1" class="hash-link" aria-label="Direct link to Use Cases" title="Direct link to Use Cases" translate="no"></a></h3>
+<ul>
+<li class=""><strong>Streaming Data Processing</strong>: For example, when reading large amounts of data, you can process the data as you read
+it, reducing memory consumption.</li>
+<li class=""><strong>Batch insertion into a database</strong>: For example, batch processing row data from spreadsheet and storing it in a
+database.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="implementation-steps-1">Implementation Steps<a href="#implementation-steps-1" class="hash-link" aria-label="Direct link to Implementation Steps" title="Direct link to Implementation Steps" translate="no"></a></h3>
+<ol>
+<li class="">Inherit from <code>AnalysisEventListener</code> and implement its methods.</li>
+<li class="">Pass in a custom listener during reading and register it using <code>FesodSheet.read()</code>.</li>
+</ol>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="example-2">Example<a href="#example-2" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no"></a></h3>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="process-each-row-of-data-and-batch-import-into-the-database">Process each row of data and batch import into the database<a href="#process-each-row-of-data-and-batch-import-into-the-database" class="hash-link" aria-label="Direct link to Process each row of data and batch import into the database" title="Direct link to Process each row of data and batch import into the database" translate="no"></a></h4>
+<p>Inherit <code>AnalysisEventListener</code></p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<p>Use</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="processing-table-headers-1">Processing Table Headers<a href="#processing-table-headers-1" class="hash-link" aria-label="Direct link to Processing Table Headers" title="Direct link to Processing Table Headers" translate="no"></a></h4>
+<p>You can use the <code>invokeHead</code> method to obtain header information for handling dynamic header scenarios or for
+customising header data parsing.</p>
+<p>Inherit <code>AnalysisEventListener</code></p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<p>Use</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="handling-exceptions-1">Handling Exceptions<a href="#handling-exceptions-1" class="hash-link" aria-label="Direct link to Handling Exceptions" title="Direct link to Handling Exceptions" translate="no"></a></h4>
+<p>The <code>onException</code> method is provided so that developers can catch exceptions during reading and handle them (e.g., log
+errors, skip error lines, etc.).</p>
+<p>Inherit <code>AnalysisEventListener</code></p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<p>Use</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="compared-to-readlistener">Compared to ReadListener<a href="#compared-to-readlistener" class="hash-link" aria-label="Direct link to Compared to ReadListener" title="Direct link to Compared to ReadListener" translate="no"></a></h3>
+<p><code>AnalysisEventListener</code> and <code>ReadListener</code> are both interfaces provided by FesodSheet, designed to allow developers to
+perform customised processing when reading spreadsheet files. However, they have some key differences in terms of
+functionality and use cases.</p>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="different">Different<a href="#different" class="hash-link" aria-label="Direct link to Different" title="Direct link to Different" translate="no"></a></h4>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Features</th><th><code>AnalysisEventListener</code></th><th><code>ReadListener</code></th></tr></thead><tbody><tr><td><strong>Interface Design</strong></td><td>Event-driven, processes each row of data and saves batch data</td><td>Callback interface, simplifies processing, suitable for simple use</td></tr><tr><td><strong>Memory Control</strong></td><td>Controls memory usage via <code>BATCH_COUNT</code>, suitable for large data volume processing</td><td>No dedicated m [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="how-to-choose">How to choose<a href="#how-to-choose" class="hash-link" aria-label="Direct link to How to choose" title="Direct link to How to choose" translate="no"></a></h4>
+<p>Use <code>AnalysisEventListener</code>:</p>
+<ul>
+<li class="">If you need to control memory consumption, batch process data, or handle complex read logic (such as paginated reading
+or batch writing to a database).</li>
+<li class="">Suitable for processing large datasets, offering greater flexibility.</li>
+</ul>
+<p>Use <code>ReadListener</code>:</p>
+<ul>
+<li class="">If you want to simplify your code and do not have complex memory control requirements, and only need to handle the
+logic for each row of data.</li>
+<li class="">Suitable for simple spreadsheet data reading and exception handling scenarios.</li>
+</ul>
+<p>In summary, <code>ReadListener</code> is a more simplified interface suitable for simpler scenarios, while <code>AnalysisEventListener</code>
+offers greater control and scalability, making it suitable for complex data processing requirements. Developers can
+choose the appropriate listener based on their actual needs.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="converter">Converter<a href="#converter" class="hash-link" aria-label="Direct link to Converter" title="Direct link to Converter" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-4">Overview<a href="#overview-4" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p><code>Converter</code> is an interface provided by FesodSheet for converting data when processing spreadsheet files. It allows
+developers
+to customise operations by implementing the <code>Converter</code> interface to define custom data conversion logic.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="methods-2">Methods<a href="#methods-2" class="hash-link" aria-label="Direct link to Methods" title="Direct link to Methods" translate="no"></a></h3>
+<p><code>Converter</code> is a generic interface, and the generic type is the object type to be converted (such as <code>Date</code>). Its core
+methods are as follows:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Method Name</th><th>Description</th></tr></thead><tbody><tr><td><code>Class<?> supportJavaTypeKey()</code><em>(Optional)</em></td><td>Returns the supported Java object types.</td></tr><tr><td><code>CellDataTypeEnum supportExcelTypeKey()</code><em>(Optional)</em></td><td>Returns the supported cell types, enumerated as CellDataTypeEnum.</td></tr><tr><td><code>T convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfigur [...]
+<p>FesodSheet provides many commonly used type converters by default, which are already registered in
+<code>DefaultConverterLoader</code>.</p>
+<p>You can customise converters, but the types must not overlap with the default types. When registering types, use
+<code>ConverterKeyBuild.buildKey(converter.supportJavaTypeKey(), converter.supportExcelTypeKey())</code> as the key value.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="use-cases-2">Use Cases<a href="#use-cases-2" class="hash-link" aria-label="Direct link to Use Cases" title="Direct link to Use Cases" translate="no"></a></h3>
+<ul>
+<li class=""><strong>Data Conversion</strong>: Convert spreadsheet data, such as converting dates to strings, converting strings to dates, etc.</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="implementation-steps-2">Implementation Steps<a href="#implementation-steps-2" class="hash-link" aria-label="Direct link to Implementation Steps" title="Direct link to Implementation Steps" translate="no"></a></h3>
+<ol>
+<li class="">Implement the <code>Converter</code> interface and its methods.</li>
+<li class="">Pass in a custom converter when reading or writing.</li>
+</ol>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="example-3">Example<a href="#example-3" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no"></a></h3>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="timestampnumber-converter">TimestampNumber Converter<a href="#timestampnumber-converter" class="hash-link" aria-label="Direct link to TimestampNumber Converter" title="Direct link to TimestampNumber Converter" translate="no"></a></h4>
+<p>Implement <code>Converter</code></p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<p>Use</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/help/faq/index.html b/docs/sheet/help/faq/index.html
new file mode 100644
index 00000000..242ef232
--- /dev/null
+++ b/docs/sheet/help/faq/index.html
@@ -0,0 +1,299 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/help/faq" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">FAQ | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/help/faq"><meta [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This section describes common issues that may arise when using this project.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="feature-limitations">Feature Limitations<a href="#feature-limitations" class="hash-link" aria-label="Direct link to Feature Limitations" title="Direct link to Feature Limitations" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> What functions does FesodSheet support? What functions are not supported?</li>
+<li class=""><strong>A:</strong> FesodSheet supports efficient reading and writing operations for spreadsheet files, including support for CSV
+format.
+Unsupported functions include concurrent writing to a single file, reading and writing image macros, etc.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="choosing-write-operations">Choosing Write Operations<a href="#choosing-write-operations" class="hash-link" aria-label="Direct link to Choosing Write Operations" title="Direct link to Choosing Write Operations" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> When writing to spreadsheet, when should I choose the fill mode and when should I choose direct writing?</li>
+<li class=""><strong>A:</strong> For complex export content, it is recommended to use template filling; for simple format scenarios, direct
+writing is more efficient.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="lombok-annotations">Lombok Annotations<a href="#lombok-annotations" class="hash-link" aria-label="Direct link to Lombok Annotations" title="Direct link to Lombok Annotations" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> What is the role of Lombok annotations in using FesodSheet?</li>
+<li class=""><strong>A:</strong> Commonly used Lombok annotations in entity classes such as <code>@Getter</code>, <code>@Setter</code>, <code>@EqualsAndHashCode</code> are used
+to automatically generate getter, setter methods, equals, and hashCode methods. If you do not want to use these
+auto-generated methods, you can implement them yourself.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="field-matching">Field Matching<a href="#field-matching" class="hash-link" aria-label="Direct link to Field Matching" title="Direct link to Field Matching" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> How to solve the problem of some fields not being read or written correctly?</li>
+<li class=""><strong>A:</strong> Ensure that the entity class fields follow the camel case naming convention, avoid using
+<code>@Accessors(chain = true)</code>, and recommend using <code>@Builder</code> instead. Also, ensure that the entity class uses the
+<code>@ExcelProperty</code> annotation to mark the fields participating in reading and writing.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="compatibility-issues">Compatibility Issues<a href="#compatibility-issues" class="hash-link" aria-label="Direct link to Compatibility Issues" title="Direct link to Compatibility Issues" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> What should I do if I encounter compatibility issues when using FesodSheet?</li>
+<li class=""><strong>A:</strong> Common compatibility issues include <code>NoSuchMethodException</code>, <code>ClassNotFoundException</code>, <code>NoClassDefFoundError</code>,
+etc., usually caused by jar conflicts. It is recommended to check and clean up dependencies in the project to ensure
+that the version of FesodSheet used is compatible with other libraries in the project.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="online-deployment">Online Deployment<a href="#online-deployment" class="hash-link" aria-label="Direct link to Online Deployment" title="Direct link to Online Deployment" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> Why are there issues in the online environment when it runs fine locally?</li>
+<li class=""><strong>A:</strong> In most cases, this is due to the lack of necessary font libraries in the online environment. You can solve
+this problem by installing font libraries (such as <code>dejavu-sans-fonts</code> and <code>fontconfig</code>) or enabling memory processing
+mode.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="concurrent-reading">Concurrent Reading<a href="#concurrent-reading" class="hash-link" aria-label="Direct link to Concurrent Reading" title="Direct link to Concurrent Reading" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> Why shouldn't the Listener be managed by Spring?</li>
+<li class=""><strong>A:</strong> Listeners should not be managed by Spring because this would cause the Listener to become a singleton, which
+may lead to data confusion when reading files concurrently. A new Listener instance should be created each time a file
+is read.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="performance-optimization">Performance Optimization<a href="#performance-optimization" class="hash-link" aria-label="Direct link to Performance Optimization" title="Direct link to Performance Optimization" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> For large files over 10M, what reading strategies does FesodSheet provide?</li>
+<li class=""><strong>A:</strong> FesodSheet supports default large file processing strategies, as well as customizable high-speed modes and
+optimization settings for high concurrency and super large files.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="writing-and-format-setting">Writing and Format Setting<a href="#writing-and-format-setting" class="hash-link" aria-label="Direct link to Writing and Format Setting" title="Direct link to Writing and Format Setting" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> How to set cell formats?</li>
+<li class=""><strong>A:</strong> You can set cell formats by using annotations such as <code>@ContentStyle</code> on entity class properties, for example,
+numeric formats, date formats, etc.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="export-issues">Export Issues<a href="#export-issues" class="hash-link" aria-label="Direct link to Export Issues" title="Direct link to Export Issues" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> How to resolve the issue of spreadsheet files exported cannot be opened or prompt for repair?</li>
+<li class=""><strong>A:</strong> This is usually caused by frontend frameworks or backend interceptors modifying the file stream. It is
+recommended to test local exports first, ensure the backend logic is correct, and then investigate frontend and
+network-related issues.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="large-file-reading-optimization">Large File Reading Optimization<a href="#large-file-reading-optimization" class="hash-link" aria-label="Direct link to Large File Reading Optimization" title="Direct link to Large File Reading Optimization" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> How does FesodSheet optimize memory usage when reading large files?</li>
+<li class=""><strong>A:</strong> FesodSheet automatically determines the processing method for large files. For files with shared strings
+exceeding 5MB, a file storage strategy is used to reduce memory usage. You can enable ultra-fast mode by setting the
+<code>readCache</code> parameter, but this will increase memory consumption.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="concurrent-processing">Concurrent Processing<a href="#concurrent-processing" class="hash-link" aria-label="Direct link to Concurrent Processing" title="Direct link to Concurrent Processing" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> How to efficiently read spreadsheet files in a high-concurrency environment?</li>
+<li class=""><strong>A:</strong> In a high-concurrency environment, you can optimize reading performance using <code>SimpleReadCacheSelector</code>. By
+setting the <code>maxUseMapCacheSize</code> and <code>maxCacheActivateBatchCount</code> parameters, you can control the cache strategy for
+shared strings, improve hit rates, and reduce file read delays.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="field-mapping">Field Mapping<a href="#field-mapping" class="hash-link" aria-label="Direct link to Field Mapping" title="Direct link to Field Mapping" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to handle cases where entity class fields do not match spreadsheet column names?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can use the <code>@ExcelProperty</code> annotation to specify the correspondence between entity class fields and
+spreadsheet column names. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@ExcelProperty</span><span class="token punctuation" [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="data-validation">Data Validation<a href="#data-validation" class="hash-link" aria-label="Direct link to Data Validation" title="Direct link to Data Validation" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to validate data when reading spreadsheet data?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> Data validation logic can be implemented in the <code>ReadListener</code>. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="custom-styles">Custom Styles<a href="#custom-styles" class="hash-link" aria-label="Direct link to Custom Styles" title="Direct link to Custom Styles" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to customize cell styles?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can customize cell styles by implementing the <code>WriteHandler</code> interface. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="fill-mode">Fill Mode<a href="#fill-mode" class="hash-link" aria-label="Direct link to Fill Mode" title="Direct link to Fill Mode" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to solve the issue of fields not being replaced in fill mode?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> Using the <code>inMemory(true)</code> parameter can ensure correct field replacement. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token class-name">FesodSheet</span><span class="token punctuation" style="color:#393A34">.</span><span c [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="error-handling">Error Handling<a href="#error-handling" class="hash-link" aria-label="Direct link to Error Handling" title="Direct link to Error Handling" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to handle exceptions thrown during the reading process?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> Exceptions can be caught and handled in the <code>ReadListener</code>. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="dependency-conflict">Dependency Conflict<a href="#dependency-conflict" class="hash-link" aria-label="Direct link to Dependency Conflict" title="Direct link to Dependency Conflict" translate="no"></a></h2>
+<ul>
+<li class=""><strong>Q:</strong> How to resolve dependency conflict issues?</li>
+<li class=""><strong>A:</strong> Common dependency conflicts include POI, ehcache, commons-io, etc. It is recommended to check the dependency
+tree in the project, ensure that the versions used are compatible with FesodSheet. You can use the Maven
+<code>dependency:tree</code> command to view the dependency tree.</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="performance-monitoring">Performance Monitoring<a href="#performance-monitoring" class="hash-link" aria-label="Direct link to Performance Monitoring" title="Direct link to Performance Monitoring" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to monitor the performance of FesodSheet?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can monitor the performance of FesodSheet by enabling debug logging. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token class-name">LoggerContext</span><span class="token plain"> lc </span><span class="token operator" [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="multi-sheet-reading">Multi-Sheet Reading<a href="#multi-sheet-reading" class="hash-link" aria-label="Direct link to Multi-Sheet Reading" title="Direct link to Multi-Sheet Reading" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to monitor the performance of FesodSheet?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can monitor the performance of FesodSheet by enabling debug logging. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token class-name">FesodSheet</span><span class="token punctuation" style="color:#393A34">.</span><span c [...]
+<p>Alternatively, you can get information on all sheets before reading:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token class-name">ExcelReader</span><span class="token plain"> excelReader </span><span class="token ope [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="get-total-rows">Get Total Rows<a href="#get-total-rows" class="hash-link" aria-label="Direct link to Get Total Rows" title="Direct link to Get Total Rows" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to get the total number of rows in a spreadsheet file?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can use <code>analysisContext.readSheetHolder().getApproximateTotalRowNumber()</code> method in the listener to get an
+approximate number of rows. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Override</span><span class="token plain"></span><br [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="memory-mode">Memory Mode<a href="#memory-mode" class="hash-link" aria-label="Direct link to Memory Mode" title="Direct link to Memory Mode" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to use memory mode to process spreadsheet files?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> Memory mode is suitable for processing smaller files and can significantly improve processing speed. For
+example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token class-name">FesodSheet</span><span class="token punctuation" style="color:#393A34">.</span><span c [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="read-csv-files">Read CSV Files<a href="#read-csv-files" class="hash-link" aria-label="Direct link to Read CSV Files" title="Direct link to Read CSV Files" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to read CSV files and modify the delimiter?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can modify the delimiter of CSV files by setting <code>CsvFormat</code>. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token class-name">FesodSheet</span><span class="token punctuation" style="color:#393A34">.</span><span c [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="custom-read-listener">Custom Read Listener<a href="#custom-read-listener" class="hash-link" aria-label="Direct link to Custom Read Listener" title="Direct link to Custom Read Listener" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to customize the read listener?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can inherit the <code>AnalysisEventListener</code> class and implement your own logic. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="ignore-unannotated-fields-during-reading">Ignore Unannotated Fields During Reading<a href="#ignore-unannotated-fields-during-reading" class="hash-link" aria-label="Direct link to Ignore Unannotated Fields During Reading" title="Direct link to Ignore Unannotated Fields During Reading" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to ignore fields not annotated with <code>@ExcelProperty</code> during reading?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> Add the <code>@ExcelIgnoreUnannotated</code> annotation at the top of the class. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Data</span><span class="token plain"></span><br></s [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="set-header-style-during-export">Set Header Style During Export<a href="#set-header-style-during-export" class="hash-link" aria-label="Direct link to Set Header Style During Export" title="Direct link to Set Header Style During Export" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to set header style during export?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can customize the header style by implementing the <code>WriteHandler</code> interface. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="set-cell-data-format-during-export">Set Cell Data Format During Export<a href="#set-cell-data-format-during-export" class="hash-link" aria-label="Direct link to Set Cell Data Format During Export" title="Direct link to Set Cell Data Format During Export" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to set the data format of cells during export?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can set the data format by using the <code>@ContentStyle</code> annotation on entity class properties. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@ExcelProperty</span><span class="token punctuation" [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="merge-cells-during-export">Merge Cells During Export<a href="#merge-cells-during-export" class="hash-link" aria-label="Direct link to Merge Cells During Export" title="Direct link to Merge Cells During Export" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to merge cells during export?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can customize the logic for merging cells by implementing the <code>WriteHandler</code> interface. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="set-font-during-export">Set Font During Export<a href="#set-font-during-export" class="hash-link" aria-label="Direct link to Set Font During Export" title="Direct link to Set Font During Export" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to set the font of cells during export?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can set the font by creating a <code>Font</code> object and applying it to the <code>CellStyle</code>. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="handle-null-values-during-reading">Handle Null Values During Reading<a href="#handle-null-values-during-reading" class="hash-link" aria-label="Direct link to Handle Null Values During Reading" title="Direct link to Handle Null Values During Reading" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to handle null values during reading?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can handle null values in the <code>ReadListener</code>. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+</li>
+</ul>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="data-filtering-during-reading">Data Filtering During Reading<a href="#data-filtering-during-reading" class="hash-link" aria-label="Direct link to Data Filtering During Reading" title="Direct link to Data Filtering During Reading" translate="no"></a></h2>
+<ul>
+<li class="">
+<p><strong>Q:</strong> How to filter data during reading?</p>
+</li>
+<li class="">
+<p><strong>A:</strong> You can implement filtering logic in the <code>ReadListener</code>. For example:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+</li>
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/sheet/help/faq.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Bllq" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/help/large-data/index.html b/docs/sheet/help/large-data/index.html
new file mode 100644
index 00000000..eddbc8dd
--- /dev/null
+++ b/docs/sheet/help/large-data/index.html
@@ -0,0 +1,68 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/help/large-data" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Large Data | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/help/lar [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="reading">Reading<a href="#reading" class="hash-link" aria-label="Direct link to Reading" title="Direct link to Reading" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>When reading files larger than 10 MB, Microsoft Excel 03 is unable to handle them and consumes significantly more
+memory. Microsoft Excel 2007 introduces the concept
+of <a href="https://learn.microsoft.com/en-us/office/open-xml/spreadsheet/working-with-the-shared-string-table" target="_blank" rel="noopener noreferrer" class="">Shared Strings</a>,
+which can consume a significant amount of memory.
+If all shared strings are loaded into memory, the memory usage can be approximately 3 to 10 times the size of the spreadsheet
+file. Therefore, FesodSheet uses a strategy of first storing the file and then deserialising it to read the data,
+thereby
+saving memory. Of course, after deserialising the file, efficiency will decrease by approximately 30-50% (this is not
+fixed and depends on the hit rate, which may exceed 100%).</p>
+<p>If the read efficiency is acceptable, use the default setting. The permanent memory usage (for the entire process of
+reading a single spreadsheet file) generally does not exceed 50MB (most likely around 30MB), and the remaining temporary
+memory is quickly recycled by the garbage collector.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="default-policy">Default Policy<a href="#default-policy" class="hash-link" aria-label="Direct link to Default Policy" title="Direct link to Default Policy" translate="no"></a></h3>
+<p>By default, large file processing is automatically determined. Shared strings under 5M are stored in memory, which
+occupies approximately 15-50M of memory. Strings over 5M are stored in files, and file storage also requires additional
+memory to store temporary shared strings, with a default of 20M. Apart from the memory used by shared strings, other
+memory usage is minimal, so it can be estimated at 10MB. Therefore, the default of approximately 30MB is sufficient to
+read an extremely large file.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="configure-memory">Configure Memory<a href="#configure-memory" class="hash-link" aria-label="Direct link to Configure Memory" title="Direct link to Configure Memory" translate="no"></a></h3>
+<p>If you want to customise the settings, first determine how much memory you are willing to allocate for reading a very
+large spreadsheet file.
+For example, if you want the spreadsheet file to occupy a maximum of 100MB of memory during the reading process (this is the
+permanent memory usage during reading, not including memory immediately reclaimed by the young generation), then set the
+size of the shared string stored in the file to 20MB (less than 20MB is stored in memory, more than 20MB is stored in a
+temporary file), and then set the memory size occupied by the temporary shared string when stored in the file to
+approximately 90MB.</p>
+<p>If the maximum number of file entries is only a few hundred thousand, and the spreadsheet file is only a few dozen megabytes,
+and there is no high concurrency, and memory is sufficient,</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Force memory storage, so a 20M spreadsheet fil [...]
+<p>High concurrency requirements, and often involve extremely large files.</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// The first parameter specifies how many MB of s [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="about-maxcacheactivatesize">About maxCacheActivateSize<a href="#about-maxcacheactivatesize" class="hash-link" aria-label="Direct link to About maxCacheActivateSize" title="Direct link to About maxCacheActivateSize" translate="no"></a></h3>
+<p>When using file storage, FesodSheet splits the shared string into batches of <strong>1000</strong> items and then stores them in file
+storage. Spreadsheets typically read shared strings in sequential order, so by default, 1000 entries (approximately 20MB) are
+kept in memory. If a match is found, the data is returned directly; if not, the file is read. Therefore, the size should
+not be set too small, as this makes it difficult to find a match and results in constant file reads. Conversely, setting
+it too large can consume excessive memory.</p>
+<p>To determine whether <code>maxCacheActivateSize</code> needs adjustment, enabling <code>debug</code> logs will output <code>Already put :4000000</code>
+as the last value, which can be estimated to be 4 million. Then, checking <code>Cache misses count:4001</code> yields a value of
+4,000. <code>4 million / 4,000 = 1,000</code> indicates that <code>maxCacheActivateSize</code> is already very reasonable. If the value is
+less than 500, there is a significant issue. Values between 500 and 1000 should be acceptable.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/sheet/help/large-data.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_ [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/help/parameter/index.html b/docs/sheet/help/parameter/index.html
new file mode 100644
index 00000000..43dc6f5f
--- /dev/null
+++ b/docs/sheet/help/parameter/index.html
@@ -0,0 +1,443 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/help/parameter" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Parameter | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/help/para [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This section introduces the parameters used in the project.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="class-diagram">Class Diagram<a href="#class-diagram" class="hash-link" aria-label="Direct link to Class Diagram" title="Direct link to Class Diagram" translate="no"></a></h2>
+<!-- -->
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="general-parameters">General Parameters<a href="#general-parameters" class="hash-link" aria-label="Direct link to General Parameters" title="Direct link to General Parameters" translate="no"></a></h2>
+<p>All parameters inherit from <code>BasicParameter</code>.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>head</td><td>Empty</td><td>Choose one of <code>head</code> or <code>clazz</code>. Reads the list corresponding to the file header and matches the data based on the list. It is recommended to use class.</td></tr><tr><td>clazz</td><td>Empty</td><td>Choose one of <code>head</code> or <code>clazz</code>. Reads the class corresponding to the file header, and annotations can also be used. If ne [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="reading-operations">Reading Operations<a href="#reading-operations" class="hash-link" aria-label="Direct link to Reading Operations" title="Direct link to Reading Operations" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="readbasicparameter">ReadBasicParameter<a href="#readbasicparameter" class="hash-link" aria-label="Direct link to ReadBasicParameter" title="Direct link to ReadBasicParameter" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>customReadListenerList</td><td>Empty</td><td>Can register multiple listeners. When reading spreadsheet, the listener's methods will be continuously called.</td></tr><tr><td>headRowNumber</td><td>1</td><td>The number of rows in the header of spreadsheet, default is 1 row.</td></tr></tbody></table>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="readworkbook">ReadWorkbook<a href="#readworkbook" class="hash-link" aria-label="Direct link to ReadWorkbook" title="Direct link to ReadWorkbook" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>excelType</td><td>Empty</td><td>The current type of spreadsheet, supports XLS, XLSX, CSV.</td></tr><tr><td>inputStream</td><td>Empty</td><td>Choose between <code>file</code> and <code>inputStream</code>. Reads the file stream. If a stream is received, it is used directly. If not, it is recommended to use the <code>file</code> parameter. Using <code>inputStream</code> will help create temp [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="readsheet">ReadSheet<a href="#readsheet" class="hash-link" aria-label="Direct link to ReadSheet" title="Direct link to ReadSheet" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>sheetNo</td><td>0</td><td>The code of the Sheet to be read, recommended to use this to specify which Sheet to read.</td></tr><tr><td>sheetName</td><td>Empty</td><td>Match the Sheet by name.</td></tr><tr><td>sheetHidden</td><td>false</td><td>Normal Hidden Status</td></tr><tr><td>sheetVeryHidden</td><td>false</td><td>Absolute Hidden State</td></tr><tr><td>numRows</td><td>0</td><td>Read the [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="writing-operations">Writing Operations<a href="#writing-operations" class="hash-link" aria-label="Direct link to Writing Operations" title="Direct link to Writing Operations" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="writebasicparameter">WriteBasicParameter<a href="#writebasicparameter" class="hash-link" aria-label="Direct link to WriteBasicParameter" title="Direct link to WriteBasicParameter" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>customWriteHandlerList</td><td>Empty</td><td>Writing handler. Can implement <code>WorkbookWriteHandler</code>, <code>SheetWriteHandler</code>, <code>RowWriteHandler</code>, <code>CellWriteHandler</code>, which will be called at different stages of writing to spreadsheet.</td></tr><tr><td>relativeHeadRowIndex</td><td>0</td><td>Number of rows to leave blank above spreadsheet.</td></tr><tr>< [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="header-merge-strategy">Header Merge Strategy<a href="#header-merge-strategy" class="hash-link" aria-label="Direct link to Header Merge Strategy" title="Direct link to Header Merge Strategy" translate="no"></a></h4>
+<p>The <code>headerMergeStrategy</code> parameter provides fine-grained control over how headers are merged:</p>
+<ul>
+<li class=""><strong>NONE</strong>: No automatic merging is performed.</li>
+<li class=""><strong>HORIZONTAL_ONLY</strong>: Only merges cells horizontally (same row).</li>
+<li class=""><strong>VERTICAL_ONLY</strong>: Only merges cells vertically (same column).</li>
+<li class=""><strong>FULL_RECTANGLE</strong>: Only merges complete rectangular regions where all cells have the same name.</li>
+<li class=""><strong>AUTO</strong>: Automatic merging (default behavior for backward compatibility).</li>
+</ul>
+<p><strong>Example</strong>:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token class-name">FesodSheet</span><span class="token punctuation" style="color:#393A34">.</span><span c [...]
+<p><strong>Note</strong>: If <code>headerMergeStrategy</code> is not set, the behavior is determined by <code>automaticMergeHead</code>:</p>
+<ul>
+<li class=""><code>automaticMergeHead == true</code> → <code>HeaderMergeStrategy.AUTO</code></li>
+<li class=""><code>automaticMergeHead == false</code> → <code>HeaderMergeStrategy.NONE</code></li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="writeworkbook">WriteWorkbook<a href="#writeworkbook" class="hash-link" aria-label="Direct link to WriteWorkbook" title="Direct link to WriteWorkbook" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>excelType</td><td>Empty</td><td>The current type of spreadsheet, supports XLS, XLSX, CSV.</td></tr><tr><td>outputStream</td><td>Empty</td><td>Choose between <code>file</code> and <code>outputStream</code>. Writes the file stream.</td></tr><tr><td>file</td><td>Empty</td><td>Choose between <code>outputStream</code> and <code>file</code>. Writes the file.</td></tr><tr><td>templateInputStream [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="writesheet">WriteSheet<a href="#writesheet" class="hash-link" aria-label="Direct link to WriteSheet" title="Direct link to WriteSheet" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>sheetNo</td><td>0</td><td>Code of the Sheet to be written.</td></tr><tr><td>sheetName</td><td>Empty</td><td>Name of the Sheet to be written, defaults to <code>sheetNo</code>.</td></tr></tbody></table>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="writetable">WriteTable<a href="#writetable" class="hash-link" aria-label="Direct link to WriteTable" title="Direct link to WriteTable" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Name</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>tableNo</td><td>0</td><td>Code of the table to be written.</td></tr></tbody></table></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/sheet/help/parameter.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/read/converter/index.html b/docs/sheet/read/converter/index.html
new file mode 100644
index 00000000..32a7b970
--- /dev/null
+++ b/docs/sheet/read/converter/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/read/converter" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Converter | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/read/conv [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>Fesod supports date, number, and custom format conversions.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>During usage, we may need to convert read or written data into specific formats. Fesod provides a flexible converter
+mechanism that allows users to define custom data conversion rules to meet various business requirements.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class">POJO Class<a href="#pojo-class" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="converter">Converter<a href="#converter" class="hash-link" aria-label="Direct link to Converter" title="Direct link to Converter" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/read/csv/index.html b/docs/sheet/read/csv/index.html
new file mode 100644
index 00000000..7f797a6d
--- /dev/null
+++ b/docs/sheet/read/csv/index.html
@@ -0,0 +1,108 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/read/csv" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">CSV | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/read/csv"><meta [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to use Fesod to read custom CSV files.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>Fesod reads CSV files through different parameter configurations. It
+uses <a href="https://commons.apache.org/proper/commons-csv" target="_blank" rel="noopener noreferrer" class="">Apache Commons CSV</a> as the underlying implementation and also
+supports direct configuration
+through <a href="https://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html" target="_blank" rel="noopener noreferrer" class="">CSVFormat</a>
+settings to achieve reading objectives.</p>
+<p>The main parameters are as follows:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th style="text-align:left">Name</th><th style="text-align:left">Default Value</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><code>delimiter</code></td><td style="text-align:left"><code>,</code> (comma)</td><td style="text-align:left">Field delimiter. It's recommended to use predefined constants from <code>CsvConstant</code>, such as <code>CsvConstant.AT</code>(<code>@</code>), <code>CsvConstant.TAB</code>, etc. [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="parameter-details-and-examples">Parameter Details and Examples<a href="#parameter-details-and-examples" class="hash-link" aria-label="Direct link to Parameter Details and Examples" title="Direct link to Parameter Details and Examples" translate="no"></a></h2>
+<p>The following sections will explain each parameter in detail with code examples.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="delimiter">delimiter<a href="#delimiter" class="hash-link" aria-label="Direct link to delimiter" title="Direct link to delimiter" translate="no"></a></h3>
+<p><code>delimiter</code> specifies the field separator in CSV files. The default value is a comma <code>,</code>.
+Additionally, Fesod provides constants in <code>CsvConstant</code> to simplify usage.</p>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h4>
+<p>If the CSV file uses <code>\u0000</code> as the separator, you can configure it as follows:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="quote">quote<a href="#quote" class="hash-link" aria-label="Direct link to quote" title="Direct link to quote" translate="no"></a></h3>
+<p><code>quote</code> specifies the quote character that wraps fields. The default value is double quote <code>"</code>.
+This should be set when field content contains delimiters or line breaks.</p>
+<blockquote>
+<p>Note: This cannot be the same as the <code>recordSeparator</code> setting. It's recommended to use in combination with
+<code>QuoteMode</code>.</p>
+</blockquote>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="recordseparator">recordSeparator<a href="#recordseparator" class="hash-link" aria-label="Direct link to recordSeparator" title="Direct link to recordSeparator" translate="no"></a></h3>
+<p><code>recordSeparator</code> specifies the line separator in the file. Different operating systems may use different line
+separators (for example, Windows uses <code>CRLF</code>, while Unix/Linux uses <code>LF</code>).</p>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-2">Code Example<a href="#code-example-2" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="nullstring">nullString<a href="#nullstring" class="hash-link" aria-label="Direct link to nullString" title="Direct link to nullString" translate="no"></a></h3>
+<p><code>nullString</code> defines a specific string in the file that represents <code>null</code> values. For example, you can parse the string
+<code>"N/A"</code> as a <code>null</code> object.</p>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-3">Code Example<a href="#code-example-3" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="escape">escape<a href="#escape" class="hash-link" aria-label="Direct link to escape" title="Direct link to escape" translate="no"></a></h3>
+<p><code>escape</code> specifies an escape character that can be used when quote characters (<code>quote</code>) appear within field values.</p>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-4">Code Example<a href="#code-example-4" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="csvformat-configuration-details-and-examples">CSVFormat Configuration Details and Examples<a href="#csvformat-configuration-details-and-examples" class="hash-link" aria-label="Direct link to CSVFormat Configuration Details and Examples" title="Direct link to CSVFormat Configuration Details and Examples" translate="no"></a></h2>
+<p>Supports directly building a <code>CSVFormat</code> object.</p>
+<blockquote>
+<p>Fesod currently still supports this approach, but it's not the most recommended usage method.</p>
+</blockquote>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-5">Code Example<a href="#code-example-5" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/read/exception/index.html b/docs/sheet/read/exception/index.html
new file mode 100644
index 00000000..fb3c74be
--- /dev/null
+++ b/docs/sheet/read/exception/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/read/exception" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Exception | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/read/exce [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to handle exceptions.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>Handle data conversion or other reading exceptions by overriding the <code>onException</code> method in the listener.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="data-listener">Data Listener<a href="#data-listener" class="hash-link" aria-label="Direct link to Data Listener" title="Direct link to Data Listener" translate="no"></a></h2>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Slf4j</span><span class="token plain"></span><br></ [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h2>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/read/extra/index.html b/docs/sheet/read/extra/index.html
new file mode 100644
index 00000000..0fa4b621
--- /dev/null
+++ b/docs/sheet/read/extra/index.html
@@ -0,0 +1,49 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/read/extra" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Extra | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/read/extra">< [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to read extra information such as comments, hyperlinks, merged cells, etc.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="comments">Comments<a href="#comments" class="hash-link" aria-label="Direct link to Comments" title="Direct link to Comments" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Read extra comment information.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="data-listener">Data Listener<a href="#data-listener" class="hash-link" aria-label="Direct link to Data Listener" title="Direct link to Data Listener" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Slf4j</span><span class="token plain"></span><br></ [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="hyperlinks">Hyperlinks<a href="#hyperlinks" class="hash-link" aria-label="Direct link to Hyperlinks" title="Direct link to Hyperlinks" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-1">Overview<a href="#overview-1" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Read extra hyperlink information.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="data-listener-1">Data Listener<a href="#data-listener-1" class="hash-link" aria-label="Direct link to Data Listener" title="Direct link to Data Listener" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Slf4j</span><span class="token plain"></span><br></ [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="merged-cells">Merged Cells<a href="#merged-cells" class="hash-link" aria-label="Direct link to Merged Cells" title="Direct link to Merged Cells" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-2">Overview<a href="#overview-2" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Read merged cell range information.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="data-listener-2">Data Listener<a href="#data-listener-2" class="hash-link" aria-label="Direct link to Data Listener" title="Direct link to Data Listener" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Slf4j</span><span class="token plain"></span><br></ [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-2">Code Example<a href="#code-example-2" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/read/format/index.html b/docs/sheet/read/format/index.html
new file mode 100644
index 00000000..a9c02077
--- /dev/null
+++ b/docs/sheet/read/format/index.html
@@ -0,0 +1,109 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/read/format" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Format | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/read/format" [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces data formatting when reading data.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="custom-format-reading">Custom Format Reading<a href="#custom-format-reading" class="hash-link" aria-label="Direct link to Custom Format Reading" title="Direct link to Custom Format Reading" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>When reading Excel files, date and number cells can be automatically converted to formatted <code>String</code> values using annotations. This is useful when you want to control the exact text representation of dates and numbers.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class">POJO Class<a href="#pojo-class" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Getter</span><span class="token plain"></span><br>< [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="conversion-behavior">Conversion Behavior<a href="#conversion-behavior" class="hash-link" aria-label="Direct link to Conversion Behavior" title="Direct link to Conversion Behavior" translate="no"></a></h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th style="text-align:left">Excel Cell Value</th><th style="text-align:left">Annotation</th><th style="text-align:left">Java Field Value</th></tr></thead><tbody><tr><td style="text-align:left"><code>Hello</code></td><td style="text-align:left"><code>@ExcelProperty(converter = CustomStringStringConverter.class)</code></td><td style="text-align:left"><code>"Custom: Hello"</code></td></tr><tr><td style="text-align:left"><code>2025-01-01 12:30:00</code></td><td st [...]
+<div class="theme-admonition theme-admonition-tip admonition_mMJ5 alert alert--success"><div class="admonitionHeading_Loix"><span class="admonitionIcon_qNbI"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="annotation-reference">Annotation Reference<a href="#annotation-reference" class="hash-link" aria-label="Direct link to Annotation Reference" title="Direct link to Annotation Reference" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="datetimeformat"><code>@DateTimeFormat</code><a href="#datetimeformat" class="hash-link" aria-label="Direct link to datetimeformat" title="Direct link to datetimeformat" translate="no"></a></h3>
+<p>Converts date cells to formatted strings when the field type is <code>String</code>.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th style="text-align:left">Parameter</th><th style="text-align:left">Default</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><code>value</code></td><td style="text-align:left">Empty</td><td style="text-align:left">Date format pattern, refer to <code>java.text.SimpleDateFormat</code></td></tr><tr><td style="text-align:left"><code>use1904windowing</code></td><td style="text-align:left">Auto</td><td style="text-align:lef [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="numberformat"><code>@NumberFormat</code><a href="#numberformat" class="hash-link" aria-label="Direct link to numberformat" title="Direct link to numberformat" translate="no"></a></h3>
+<p>Converts number cells to formatted strings when the field type is <code>String</code>.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th style="text-align:left">Parameter</th><th style="text-align:left">Default</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><code>value</code></td><td style="text-align:left">Empty</td><td style="text-align:left">Number format pattern, refer to <code>java.text.DecimalFormat</code></td></tr><tr><td style="text-align:left"><code>roundingMode</code></td><td style="text-align:left"><code>HALF_UP</code></td><td style="tex [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/read/head/index.html b/docs/sheet/read/head/index.html
new file mode 100644
index 00000000..4c510b4e
--- /dev/null
+++ b/docs/sheet/read/head/index.html
@@ -0,0 +1,46 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/read/head" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Head | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/read/head"><me [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to read header data from the spreadsheet files.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="reading-header-data">Reading Header Data<a href="#reading-header-data" class="hash-link" aria-label="Direct link to Reading Header Data" title="Direct link to Reading Header Data" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>You can obtain header information by overriding the <code>invokeHead</code> method in the listener.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="data-listener">Data Listener<a href="#data-listener" class="hash-link" aria-label="Direct link to Data Listener" title="Direct link to Data Listener" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="multi-row-header-reading">Multi-Row Header Reading<a href="#multi-row-header-reading" class="hash-link" aria-label="Direct link to Multi-Row Header Reading" title="Direct link to Multi-Row Header Reading" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-1">Overview<a href="#overview-1" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Parse multi-row headers by setting the <code>headRowNumber</code> parameter or automatically based on header annotations in entity
+classes.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="header-pojo">Header POJO<a href="#header-pojo" class="hash-link" aria-label="Direct link to Header POJO" title="Direct link to Header POJO" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-2">Overview<a href="#overview-2" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Set header POJO using the <code>head()</code> method.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-2">Code Example<a href="#code-example-2" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/read/num-rows/index.html b/docs/sheet/read/num-rows/index.html
new file mode 100644
index 00000000..6ac9604c
--- /dev/null
+++ b/docs/sheet/read/num-rows/index.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/read/num-rows" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Rows | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/read/num-rows" [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to read a specified number of rows.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>During data analysis and processing, quickly viewing the first few rows of a spreadsheet file can help us better
+understand the data structure and content.
+By default, Fesod reads all data from the entire spreadsheet file.
+However, by setting the <code>numRows</code> parameter, you can limit the number of rows to read. 0 means no limit on the number of
+rows, i.e., read all rows. The row count includes header rows.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="all-sheets">All Sheets<a href="#all-sheets" class="hash-link" aria-label="Direct link to All Sheets" title="Direct link to All Sheets" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="single-sheet">Single Sheet<a href="#single-sheet" class="hash-link" aria-label="Direct link to Single Sheet" title="Direct link to Single Sheet" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/read/pojo/index.html b/docs/sheet/read/pojo/index.html
new file mode 100644
index 00000000..017934c0
--- /dev/null
+++ b/docs/sheet/read/pojo/index.html
@@ -0,0 +1,51 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/read/pojo" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">POJO | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/read/pojo"><me [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to read data by configuring POJO classes.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="reading-by-column-name-or-column-index">Reading by Column Name or Column Index<a href="#reading-by-column-name-or-column-index" class="hash-link" aria-label="Direct link to Reading by Column Name or Column Index" title="Direct link to Reading by Column Name or Column Index" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>You can read spreadsheet data by specifying <strong>column names</strong> or <strong>column indexes</strong>. This makes interaction with
+dynamically generated spreadsheet files more flexible.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="example-code">Example Code<a href="#example-code" class="hash-link" aria-label="Direct link to Example Code" title="Direct link to Example Code" translate="no"></a></h3>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class">POJO Class<a href="#pojo-class" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="cell-objects">Cell Objects<a href="#cell-objects" class="hash-link" aria-label="Direct link to Cell Objects" title="Direct link to Cell Objects" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-1">Overview<a href="#overview-1" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Use the <code>CellData</code> type to receive cell data to support formulas and various cell formats.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class-1">POJO Class<a href="#pojo-class-1" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="without-pojo-classes-and-listeners">Without POJO Classes and Listeners<a href="#without-pojo-classes-and-listeners" class="hash-link" aria-label="Direct link to Without POJO Classes and Listeners" title="Direct link to Without POJO Classes and Listeners" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-2">Overview<a href="#overview-2" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Fesod supports reading spreadsheet files directly without defining POJO classes, using <code>Map<Integer, String></code> to read
+data
+directly.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="data-listener">Data Listener<a href="#data-listener" class="hash-link" aria-label="Direct link to Data Listener" title="Direct link to Data Listener" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/read/sheet/index.html b/docs/sheet/read/sheet/index.html
new file mode 100644
index 00000000..3ea766af
--- /dev/null
+++ b/docs/sheet/read/sheet/index.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/read/sheet" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Sheet | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/read/sheet">< [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to configure Sheets to read data.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="reading-multiple-sheets">Reading Multiple Sheets<a href="#reading-multiple-sheets" class="hash-link" aria-label="Direct link to Reading Multiple Sheets" title="Direct link to Reading Multiple Sheets" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>You can read multiple sheets from a spreadsheet file, but the same sheet cannot be read repeatedly.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="reading-all-sheets">Reading All Sheets<a href="#reading-all-sheets" class="hash-link" aria-label="Direct link to Reading All Sheets" title="Direct link to Reading All Sheets" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="reading-specific-sheets">Reading Specific Sheets<a href="#reading-specific-sheets" class="hash-link" aria-label="Direct link to Reading Specific Sheets" title="Direct link to Reading Specific Sheets" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-1">Overview<a href="#overview-1" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>You can read a specific sheet from a spreadsheet file, supporting specification by sheet index or name.</p>
+<blockquote>
+<p><strong>Note:</strong> Sheet names are limited to 31 characters in Microsoft Excel. When reading sheets by name, use the actual
+sheet name that appears in the Microsoft Excel file.</p>
+</blockquote>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="ignoring-hidden-sheets">Ignoring Hidden Sheets<a href="#ignoring-hidden-sheets" class="hash-link" aria-label="Direct link to Ignoring Hidden Sheets" title="Direct link to Ignoring Hidden Sheets" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-2">Overview<a href="#overview-2" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>By setting the <code>ignoreHiddenSheet</code> parameter to true, data from sheets in "hidden" state will not be read.
+This supports both <strong>"normal hidden"</strong> and <strong>"very hidden"</strong> states.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-2">Code Example<a href="#code-example-2" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<blockquote>
+<p>In Microsoft Excel, Sheets have two hidden states: "normal hidden (xlSheetHidden)" and "very hidden (
+xlSheetVeryHidden)". Very hidden can be set through <code>VBA</code>, and in this case, the hidden sheet cannot be unhidden
+through
+the "Unhide" operation.</p>
+</blockquote></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/sheet/read/sheet.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Bllq" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/read/simple/index.html b/docs/sheet/read/simple/index.html
new file mode 100644
index 00000000..337998b9
--- /dev/null
+++ b/docs/sheet/read/simple/index.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/read/simple" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Simple | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/read/simple" [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to use this project to perform simple spreadsheet reading operations.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="data-listeners">Data Listeners<a href="#data-listeners" class="hash-link" aria-label="Direct link to Data Listeners" title="Direct link to Data Listeners" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Fesod provides a listener mechanism for processing each row of data while reading spreadsheet files.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="usage">Usage<a href="#usage" class="hash-link" aria-label="Direct link to Usage" title="Direct link to Usage" translate="no"></a></h3>
+<p>Data listeners need to be instantiated and support various usage patterns.</p>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="instantiation">Instantiation<a href="#instantiation" class="hash-link" aria-label="Direct link to Instantiation" title="Direct link to Instantiation" translate="no"></a></h4>
+<p>Listeners cannot be managed by Spring and must be re-instantiated each time a spreadsheet file is read.</p>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="lambda-expressions"><code>Lambda</code> Expressions<a href="#lambda-expressions" class="hash-link" aria-label="Direct link to lambda-expressions" title="Direct link to lambda-expressions" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="anonymous-inner-classes">Anonymous Inner Classes<a href="#anonymous-inner-classes" class="hash-link" aria-label="Direct link to Anonymous Inner Classes" title="Direct link to Anonymous Inner Classes" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="data-listeners-1">Data Listeners<a href="#data-listeners-1" class="hash-link" aria-label="Direct link to Data Listeners" title="Direct link to Data Listeners" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-classes-and-listeners">POJO Classes and Listeners<a href="#pojo-classes-and-listeners" class="hash-link" aria-label="Direct link to POJO Classes and Listeners" title="Direct link to POJO Classes and Listeners" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-1">Overview<a href="#overview-1" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Fesod provides a simple way to read spreadsheet files. Users only need to define a POJO class to represent the data
+structure, then read data through Fesod's listener mechanism.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class">POJO Class<a href="#pojo-class" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<p>The <code>DemoData</code> POJO class corresponding to the spreadsheet structure:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="data-listener">Data Listener<a href="#data-listener" class="hash-link" aria-label="Direct link to Data Listener" title="Direct link to Data Listener" translate="no"></a></h3>
+<p><code>DemoDataListener</code> is a custom listener used to process data read from spreadsheet.</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="without-pojo-classes-and-listeners">Without POJO Classes and Listeners<a href="#without-pojo-classes-and-listeners" class="hash-link" aria-label="Direct link to Without POJO Classes and Listeners" title="Direct link to Without POJO Classes and Listeners" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-2">Overview<a href="#overview-2" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Fesod supports reading spreadsheet files directly without defining POJO classes, using <code>Map<Integer, String></code> to read
+data directly, where the key is the <strong>column index</strong> and the value is the <strong>cell data</strong>.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="data-listener-1">Data Listener<a href="#data-listener-1" class="hash-link" aria-label="Direct link to Data Listener" title="Direct link to Data Listener" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="synchronous-reading">Synchronous Reading<a href="#synchronous-reading" class="hash-link" aria-label="Direct link to Synchronous Reading" title="Direct link to Synchronous Reading" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-3">Overview<a href="#overview-3" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Use the <code>doReadSync</code> method to directly read spreadsheet data into a list <strong>in memory</strong>. This method is recommended for
+scenarios with <strong>small data volumes</strong>. The read data can be either a list of POJO objects or a list of Maps.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class-1">POJO Class<a href="#pojo-class-1" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<p>The <code>DemoData</code> POJO class corresponding to the spreadsheet structure:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-examples">Code Examples<a href="#code-examples" class="hash-link" aria-label="Direct link to Code Examples" title="Direct link to Code Examples" translate="no"></a></h3>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="reading-as-pojo-object-list">Reading as POJO Object List<a href="#reading-as-pojo-object-list" class="hash-link" aria-label="Direct link to Reading as POJO Object List" title="Direct link to Reading as POJO Object List" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="reading-as-map-list">Reading as Map List<a href="#reading-as-map-list" class="hash-link" aria-label="Direct link to Reading as Map List" title="Direct link to Reading as Map List" translate="no"></a></h4>
+<p>When not using POJOs, each row can be read as a Map, where the key is the column index and the value is the cell
+content.</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/read/spring/index.html b/docs/sheet/read/spring/index.html
new file mode 100644
index 00000000..9369cbe4
--- /dev/null
+++ b/docs/sheet/read/spring/index.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/read/spring" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Spring | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/read/spring" [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to integrate and use Fesod in the Spring framework to handle spreadsheet files uploaded by
+users.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>By creating RESTful API endpoints, users can upload spreadsheet files using HTTP requests, and the server uses Fesod to
+parse the data.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="environment-dependencies">Environment Dependencies<a href="#environment-dependencies" class="hash-link" aria-label="Direct link to Environment Dependencies" title="Direct link to Environment Dependencies" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="maven">Maven<a href="#maven" class="hash-link" aria-label="Direct link to Maven" title="Direct link to Maven" translate="no"></a></h3>
+<p>Ensure the necessary dependencies are included in your pom.xml file:</p>
+<div class="language-xml codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-xml codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34" [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="creating-upload-endpoints">Creating Upload Endpoints<a href="#creating-upload-endpoints" class="hash-link" aria-label="Direct link to Creating Upload Endpoints" title="Direct link to Creating Upload Endpoints" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class">POJO Class<a href="#pojo-class" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<p>First, define a POJO class for mapping spreadsheet data:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="data-listener">Data Listener<a href="#data-listener" class="hash-link" aria-label="Direct link to Data Listener" title="Direct link to Data Listener" translate="no"></a></h3>
+<p>Create a listener to handle each row of data:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="spring-controller">Spring Controller<a href="#spring-controller" class="hash-link" aria-label="Direct link to Spring Controller" title="Direct link to Spring Controller" translate="no"></a></h3>
+<p>Create a controller to handle file upload requests:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="complex-scenarios">Complex Scenarios<a href="#complex-scenarios" class="hash-link" aria-label="Direct link to Complex Scenarios" title="Direct link to Complex Scenarios" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="multi-template-parsing">Multi-Template Parsing<a href="#multi-template-parsing" class="hash-link" aria-label="Direct link to Multi-Template Parsing" title="Direct link to Multi-Template Parsing" translate="no"></a></h3>
+<p>By defining multiple different model classes and processing methods within the same listener, you can extend support for
+multi-template parsing as needed.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="exception-handling">Exception Handling<a href="#exception-handling" class="hash-link" aria-label="Direct link to Exception Handling" title="Direct link to Exception Handling" translate="no"></a></h3>
+<p>To improve user experience and ensure program robustness, exception handling logic needs to be added during data
+processing.
+You can override the <code>onException</code> method in custom listeners for detailed exception handling.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="practical-applications">Practical Applications<a href="#practical-applications" class="hash-link" aria-label="Direct link to Practical Applications" title="Direct link to Practical Applications" translate="no"></a></h3>
+<p>In real-world scenarios, parsed data may be stored in a database.
+Database interaction logic can be implemented in the <code>doAfterAllAnalysed</code> method to ensure data persistence.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/sheet/read/spring.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/write/converter/index.html b/docs/sheet/write/converter/index.html
new file mode 100644
index 00000000..e0f67949
--- /dev/null
+++ b/docs/sheet/write/converter/index.html
@@ -0,0 +1,51 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/write/converter" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Converter | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/write/con [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to use custom converters when writing data.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>Fesod supports custom data converters for write operations. You can transform Java field values before they are written to Excel cells, enabling custom formatting, encryption, or any data transformation logic.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="per-field-converter">Per-Field Converter<a href="#per-field-converter" class="hash-link" aria-label="Direct link to Per-Field Converter" title="Direct link to Per-Field Converter" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-1">Overview<a href="#overview-1" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Apply a converter to a specific field using the <code>@ExcelProperty(converter = ...)</code> annotation.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="converter-1">Converter<a href="#converter-1" class="hash-link" aria-label="Direct link to Converter" title="Direct link to Converter" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class">POJO Class<a href="#pojo-class" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Getter</span><span class="token plain"></span><br>< [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="global-converter-registration">Global Converter Registration<a href="#global-converter-registration" class="hash-link" aria-label="Direct link to Global Converter Registration" title="Direct link to Global Converter Registration" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-2">Overview<a href="#overview-2" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Register a converter at the builder level to apply it to ALL fields matching the Java type and Excel type. This is useful when you want the same transformation applied globally without annotating each field.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="converter-resolution-priority">Converter Resolution Priority<a href="#converter-resolution-priority" class="hash-link" aria-label="Direct link to Converter Resolution Priority" title="Direct link to Converter Resolution Priority" translate="no"></a></h2>
+<p>When multiple converters could apply to a field, Fesod resolves them in this order:</p>
+<ol>
+<li class="">Field-level converter (<code>@ExcelProperty(converter = ...)</code>) — highest priority</li>
+<li class="">Builder-level converter (<code>.registerConverter(...)</code>)</li>
+<li class="">Built-in default converter — lowest priority</li>
+</ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/sheet/write/converter.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Bllq" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/write/csv/index.html b/docs/sheet/write/csv/index.html
new file mode 100644
index 00000000..5bbb9fe9
--- /dev/null
+++ b/docs/sheet/write/csv/index.html
@@ -0,0 +1,108 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/write/csv" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">CSV | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/write/csv"><met [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to use Fesod to write custom CSV files.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>Fesod writes CSV files through different parameter configurations. It
+uses <a href="https://commons.apache.org/proper/commons-csv" target="_blank" rel="noopener noreferrer" class="">Apache Commons CSV</a> as the underlying implementation and also
+supports direct configuration
+through <a href="https://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html" target="_blank" rel="noopener noreferrer" class="">CSVFormat</a>
+settings to achieve writing objectives.</p>
+<p>The main parameters are as follows:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th style="text-align:left">Name</th><th style="text-align:left">Default Value</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><code>delimiter</code></td><td style="text-align:left"><code>,</code> (comma)</td><td style="text-align:left">Field delimiter. It's recommended to use predefined constants from <code>CsvConstant</code>, such as <code>CsvConstant.AT</code> (<code>@</code>), <code>CsvConstant.TAB</code>, etc [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="parameter-details-and-examples">Parameter Details and Examples<a href="#parameter-details-and-examples" class="hash-link" aria-label="Direct link to Parameter Details and Examples" title="Direct link to Parameter Details and Examples" translate="no"></a></h2>
+<p>The following sections will explain each parameter in detail with code examples.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="delimiter">delimiter<a href="#delimiter" class="hash-link" aria-label="Direct link to delimiter" title="Direct link to delimiter" translate="no"></a></h3>
+<p><code>delimiter</code> specifies the field separator in CSV files. The default value is a comma <code>,</code>. Additionally, Fesod
+provides constants in <code>CsvConstant</code> to simplify usage.</p>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h4>
+<p>If the CSV file uses <code>\u0000</code> as the separator, you can configure it as follows:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="quote">quote<a href="#quote" class="hash-link" aria-label="Direct link to quote" title="Direct link to quote" translate="no"></a></h3>
+<p><code>quote</code> specifies the quote character that wraps fields. The default value is double quote <code>"</code>. This should be set when
+field content contains delimiters or line breaks.</p>
+<blockquote>
+<p>Note: This cannot be the same as the <code>recordSeparator</code> setting. It's recommended to use in combination with
+<code>QuoteMode</code>.</p>
+</blockquote>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="recordseparator">recordSeparator<a href="#recordseparator" class="hash-link" aria-label="Direct link to recordSeparator" title="Direct link to recordSeparator" translate="no"></a></h3>
+<p><code>recordSeparator</code> specifies the line separator in the file. Different operating systems may use different line
+separators (for example, Windows uses <code>CRLF</code>, while Unix/Linux uses <code>LF</code>).</p>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-2">Code Example<a href="#code-example-2" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="nullstring">nullString<a href="#nullstring" class="hash-link" aria-label="Direct link to nullString" title="Direct link to nullString" translate="no"></a></h3>
+<p><code>nullString</code> is used to replace <code>null</code> values with a specific string when writing to the file.
+For example, you can replace <code>null</code> objects with the string <code>"N/A"</code>.</p>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-3">Code Example<a href="#code-example-3" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="escape">escape<a href="#escape" class="hash-link" aria-label="Direct link to escape" title="Direct link to escape" translate="no"></a></h3>
+<p><code>escape</code> specifies the escape character. When <code>escape</code> is used, the output CSV will preserve and display the content.</p>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-4">Code Example<a href="#code-example-4" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="csvformat-configuration-details-and-examples">CSVFormat Configuration Details and Examples<a href="#csvformat-configuration-details-and-examples" class="hash-link" aria-label="Direct link to CSVFormat Configuration Details and Examples" title="Direct link to CSVFormat Configuration Details and Examples" translate="no"></a></h2>
+<p>Supports directly building a <code>CSVFormat</code> object.</p>
+<blockquote>
+<p>Fesod currently still supports this approach, but it's not the most recommended usage method.</p>
+</blockquote>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-5">Code Example<a href="#code-example-5" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/write/extra/index.html b/docs/sheet/write/extra/index.html
new file mode 100644
index 00000000..dd350c4d
--- /dev/null
+++ b/docs/sheet/write/extra/index.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/write/extra" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Extra | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/write/extra"> [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to write extra information such as comments, hyperlinks, formulas, merged cells, etc.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="comments">Comments<a href="#comments" class="hash-link" aria-label="Direct link to Comments" title="Direct link to Comments" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Add comments to specific cells through interceptors, suitable for annotations or special reminders.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<p>Custom interceptor</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Slf4j</span><span class="token plain"></span><br></ [...]
+<p>Usage</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result">Result<a href="#result" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/commentWrite-d6757c6db4d4ee3ba71d9df3904e489f.png" width="364" height="295" class="img_BbTd"></p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="hyperlinks">Hyperlinks<a href="#hyperlinks" class="hash-link" aria-label="Direct link to Hyperlinks" title="Direct link to Hyperlinks" translate="no"></a></h2>
+<p>Write extra hyperlink information</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class">POJO Class<a href="#pojo-class" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Getter</span><span class="token plain"></span><br>< [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result-1">Result<a href="#result-1" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/writeCellDataWrite-4dacef4c542b683bc9477c595ba19c4c.png" width="576" height="158" class="img_BbTd"></p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="formulas">Formulas<a href="#formulas" class="hash-link" aria-label="Direct link to Formulas" title="Direct link to Formulas" translate="no"></a></h2>
+<p>Write extra formula information</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class-1">POJO Class<a href="#pojo-class-1" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Getter</span><span class="token plain"></span><br>< [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-2">Code Example<a href="#code-example-2" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result-2">Result<a href="#result-2" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/writeCellDataWrite-4dacef4c542b683bc9477c595ba19c4c.png" width="576" height="158" class="img_BbTd"></p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="template-based-writing">Template-based Writing<a href="#template-based-writing" class="hash-link" aria-label="Direct link to Template-based Writing" title="Direct link to Template-based Writing" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-1">Overview<a href="#overview-1" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Supports using existing template files and filling data into templates, suitable for standardized output.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-3">Code Example<a href="#code-example-3" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="merged-cells">Merged Cells<a href="#merged-cells" class="hash-link" aria-label="Direct link to Merged Cells" title="Direct link to Merged Cells" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-2">Overview<a href="#overview-2" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Supports merged cells through annotations or custom merge strategies.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-4">Code Example<a href="#code-example-4" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<p>Annotation approach</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Getter</span><span class="token plain"></span><br>< [...]
+<p>Custom merge strategy</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+<p>Usage</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result-3">Result<a href="#result-3" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/mergeWrite-976e024ef4e1613c6dab373937cc56ff.png" width="384" height="291" class="img_BbTd"></p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="custom-interceptors">Custom Interceptors<a href="#custom-interceptors" class="hash-link" aria-label="Direct link to Custom Interceptors" title="Direct link to Custom Interceptors" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-3">Overview<a href="#overview-3" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Implement custom logic (such as adding dropdowns) through interceptor operations.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-5">Code Example<a href="#code-example-5" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<p>Setting dropdowns</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result-4">Result<a href="#result-4" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/customHandlerWrite-c05ff79257df5ba72a311793a6e9db60.png" width="387" height="299" class="img_BbTd"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/sheet/write/extra.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="cu [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/write/format/index.html b/docs/sheet/write/format/index.html
new file mode 100644
index 00000000..fcf023ff
--- /dev/null
+++ b/docs/sheet/write/format/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/write/format" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Format | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/write/format [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces data formatting when writing data.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="custom-format-writing">Custom Format Writing<a href="#custom-format-writing" class="hash-link" aria-label="Direct link to Custom Format Writing" title="Direct link to Custom Format Writing" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Supports date, number, or other custom formats through annotations.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class">POJO Class<a href="#pojo-class" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Getter</span><span class="token plain"></span><br>< [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result">Result<a href="#result" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/converterWrite-3246357a06c3ba04afb519b820c19bb2.png" width="497" height="293" class="img_BbTd"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/sheet/write/format.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="curre [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/write/head/index.html b/docs/sheet/write/head/index.html
new file mode 100644
index 00000000..14265ea0
--- /dev/null
+++ b/docs/sheet/write/head/index.html
@@ -0,0 +1,61 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/write/head" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Head | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/write/head"><m [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to write header data in spreadsheet.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="complex-header-writing">Complex Header Writing<a href="#complex-header-writing" class="hash-link" aria-label="Direct link to Complex Header Writing" title="Direct link to Complex Header Writing" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Supports setting multi-level headers by specifying main titles and subtitles through the <code>@ExcelProperty</code> annotation.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class">POJO Class<a href="#pojo-class" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result">Result<a href="#result" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/complexHeadWrite-ee9a9996adfccb73ce2bd8fd03bda05d.png" width="518" height="299" class="img_BbTd"></p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="dynamic-header-writing">Dynamic Header Writing<a href="#dynamic-header-writing" class="hash-link" aria-label="Direct link to Dynamic Header Writing" title="Direct link to Dynamic Header Writing" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-1">Overview<a href="#overview-1" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Generate dynamic headers in real-time, suitable for scenarios where header content changes dynamically.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result-1">Result<a href="#result-1" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/dynamicHeadWrite-b33468bf605a16abf195c740309137e3.png" width="383" height="318" class="img_BbTd"></p>
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="header-merge-strategy">Header Merge Strategy<a href="#header-merge-strategy" class="hash-link" aria-label="Direct link to Header Merge Strategy" title="Direct link to Header Merge Strategy" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-2">Overview<a href="#overview-2" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>By default, Fesod automatically merges header cells with the same name. However, you can control the merge behavior using the <code>headerMergeStrategy</code> parameter.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="merge-strategies">Merge Strategies<a href="#merge-strategies" class="hash-link" aria-label="Direct link to Merge Strategies" title="Direct link to Merge Strategies" translate="no"></a></h3>
+<ul>
+<li class=""><strong>NONE</strong>: No automatic merging is performed.</li>
+<li class=""><strong>HORIZONTAL_ONLY</strong>: Only merges cells horizontally (same row).</li>
+<li class=""><strong>VERTICAL_ONLY</strong>: Only merges cells vertically (same column).</li>
+<li class=""><strong>FULL_RECTANGLE</strong>: Only merges complete rectangular regions where all cells have the same name.</li>
+<li class=""><strong>AUTO</strong>: Automatic merging (default).</li>
+</ul>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-2">Code Example<a href="#code-example-2" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="common-use-cases">Common Use Cases<a href="#common-use-cases" class="hash-link" aria-label="Direct link to Common Use Cases" title="Direct link to Common Use Cases" translate="no"></a></h3>
+<p><strong>Disable merging</strong>: Use <code>NONE</code> to completely disable automatic merging:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token class-name">FesodSheet</span><span class="token punctuation" style="color:#393A34">.</span><span c [...]
+<p><strong>Note</strong>: The old <code>automaticMergeHead</code> parameter is still supported for backward compatibility. When <code>headerMergeStrategy</code> is not set, the behavior is determined by <code>automaticMergeHead</code>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/sheet/write/head.md" target="_blank" rel [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/write/image/index.html b/docs/sheet/write/image/index.html
new file mode 100644
index 00000000..c2a694a8
--- /dev/null
+++ b/docs/sheet/write/image/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/write/image" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Image | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/write/image"> [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces how to export files containing images.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="image-export">Image Export<a href="#image-export" class="hash-link" aria-label="Direct link to Image Export" title="Direct link to Image Export" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Supports exporting images through various methods including files, streams, byte arrays, URLs, etc.</p>
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class">POJO Class<a href="#pojo-class" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A3 [...]
+<h4 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h4>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result">Result<a href="#result" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<p><img decoding="async" loading="lazy" alt="img" src="/assets/images/imgWrite-3ef200f147e8e4f0cf2bb83c82256ce9.png" width="751" height="300" class="img_BbTd"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_uq95"><a href="https://github.com/apache/fesod/edit/main/website/docs/sheet/write/image.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/write/merge/index.html b/docs/sheet/write/merge/index.html
new file mode 100644
index 00000000..81a1c56d
--- /dev/null
+++ b/docs/sheet/write/merge/index.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/write/merge" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">Merge | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/write/merge"> [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
+<link rel="preconnect" href="https://analytics.apache.org/">
+<script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","83"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNo [...]
+<script src="/assets/js/runtime~main.a45376a7.js" defer="defer"></script>
+<script src="/assets/js/main.873ff924.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docu [...]
+<p>This chapter introduces cell merging strategies when writing Excel files.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
+<p>When generating Excel reports, you may need to merge cells — for example, merging repeated category names in a column, or creating summary rows. Fesod supports two approaches: annotation-based and strategy-based merging.</p>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="annotation-based-merging">Annotation-Based Merging<a href="#annotation-based-merging" class="hash-link" aria-label="Direct link to Annotation-Based Merging" title="Direct link to Annotation-Based Merging" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-1">Overview<a href="#overview-1" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Annotate a field with <code>@ContentLoopMerge(eachRow = N)</code> to automatically merge every N rows in that column.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="pojo-class">POJO Class<a href="#pojo-class" class="hash-link" aria-label="Direct link to POJO Class" title="Direct link to POJO Class" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Getter</span><span class="token plain"></span><br>< [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example">Code Example<a href="#code-example" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="result">Result<a href="#result" class="hash-link" aria-label="Direct link to Result" title="Direct link to Result" translate="no"></a></h3>
+<div class="language-text codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-text codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token plain">| String Title | Date Title | Number Title |</span><br></span><span class="token-l [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="strategy-based-merging">Strategy-Based Merging<a href="#strategy-based-merging" class="hash-link" aria-label="Direct link to Strategy-Based Merging" title="Direct link to Strategy-Based Merging" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-2">Overview<a href="#overview-2" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>Register a <code>LoopMergeStrategy(eachRow, columnIndex)</code> as a write handler. More flexible — can be configured at runtime and applied to any column.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-1">Code Example<a href="#code-example-1" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="custom-merge-strategy">Custom Merge Strategy<a href="#custom-merge-strategy" class="hash-link" aria-label="Direct link to Custom Merge Strategy" title="Direct link to Custom Merge Strategy" translate="no"></a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="overview-3">Overview<a href="#overview-3" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h3>
+<p>For complex merging logic (e.g., merge based on data content), implement the <code>AbstractMergeStrategy</code> class.</p>
+<h3 class="anchor anchorTargetStickyNavbar_qGBP" id="code-example-2">Code Example<a href="#code-example-2" class="hash-link" aria-label="Direct link to Code Example" title="Direct link to Code Example" translate="no"></a></h3>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token k [...]
+<p>Usage:</p>
+<div class="language-java codeBlockContainer_YGft theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__qCg"><pre tabindex="0" class="prism-code language-java codeBlock_VgSf thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_b9qJ"><span class="token-line" style="color:#393A34"><span class="token annotation punctuation" style="color:#393A34">@Test</span><span class="token plain"></span><br></s [...]
+<hr>
+<h2 class="anchor anchorTargetStickyNavbar_qGBP" id="when-to-use-which">When to Use Which<a href="#when-to-use-which" class="hash-link" aria-label="Direct link to When to Use Which" title="Direct link to When to Use Which" translate="no"></a></h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th style="text-align:left">Approach</th><th style="text-align:left">Best For</th></tr></thead><tbody><tr><td style="text-align:left"><code>@ContentLoopMerge</code></td><td style="text-align:left">Simple, fixed merge patterns baked into the data class</td></tr><tr><td style="text-align:left"><code>LoopMergeStrategy</code></td><td style="text-align:left">Dynamic merging, runtime configuration</td></tr><tr><td style="text-align:left"><code>AbstractMergeStrategy</code></td [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/sheet/write/pojo/index.html b/docs/sheet/write/pojo/index.html
new file mode 100644
index 00000000..97e2699e
--- /dev/null
+++ b/docs/sheet/write/pojo/index.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-sheet/write/pojo" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.9.2">
+<title data-rh="true">POJO | Apache Fesod (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" name="twitter:image" content="https://fesod.apache.org/img/logo.svg"><meta data-rh="true" property="og:url" content="https://fesod.apache.org/docs/sheet/write/pojo"><m [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fesod (Incubating) Atom Feed">
+<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Fesod (Incubating) JSON Feed">
+
+
+
+
+
... 11000 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@fesod.apache.org
For additional commands, e-mail: commits-help@fesod.apache.org