This is an automated email from the ASF dual-hosted git repository.

psxjoy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fesod.git


The following commit(s) were added to refs/heads/main by this push:
     new 62c46e81 docs: add missing feature docs and rearrange sidebar for 
progressive learning (#882)
62c46e81 is described below

commit 62c46e812f500941dd7ce385287b590b566602e7
Author: gongzhongqiang <[email protected]>
AuthorDate: Tue Mar 10 21:52:55 2026 +0800

    docs: add missing feature docs and rearrange sidebar for progressive 
learning (#882)
    
    * docs: expand sheet documentation with advanced guides and examples
    
    - Add custom converter documentation covering per-field and global 
registration
    - Add large file writing guide for handling 100,000+ row datasets
    - Add password protection documentation for secure spreadsheets
    - Add read format guide documenting supported Excel formats
    - Add write converter guide with practical examples
    - Add merge cells documentation for complex layouts
    - Simplify introduction examples to focus on quick start patterns
    - Update POJO read documentation with enhanced examples
    - Add Chinese translations for all new documentation pages
    - Update sidebar navigation to include new advanced topics
    
    * docs: fix markdownlint errors - add language to fenced code blocks and 
remove extra blank lines
    
    * docs: address PR review comments - fix password docs, date format, 
fullwidth colon, batch comments, and merge strategy caveat
---
 website/docs/introduce.md                          |  60 +--------
 website/docs/sheet/advanced/custom-converter.md    | 104 +++++++++++++++
 website/docs/sheet/advanced/large-file.md          |  82 ++++++++++++
 website/docs/sheet/advanced/password.md            |  72 ++++++++++
 website/docs/sheet/read/format.md                  | 100 ++++++++++++++
 website/docs/sheet/read/pojo.md                    |   2 +-
 website/docs/sheet/write/converter.md              | 124 +++++++++++++++++
 website/docs/sheet/write/merge.md                  | 148 +++++++++++++++++++++
 .../current/introduce.md                           |  60 +--------
 .../current/sheet/advanced/custom-converter.md     |  87 ++++++++++++
 .../current/sheet/advanced/large-file.md           |  65 +++++++++
 .../current/sheet/advanced/password.md             |  55 ++++++++
 .../current/sheet/read/format.md                   |  83 ++++++++++++
 .../current/sheet/write/converter.md               | 107 +++++++++++++++
 .../current/sheet/write/merge.md                   | 131 ++++++++++++++++++
 website/sidebars.js                                |  35 +++--
 16 files changed, 1199 insertions(+), 116 deletions(-)

diff --git a/website/docs/introduce.md b/website/docs/introduce.md
index 9b824ee3..c9da959b 100644
--- a/website/docs/introduce.md
+++ b/website/docs/introduce.md
@@ -48,66 +48,20 @@ project's origin, background and vision.
   amounts of data at once. This design is especially important when dealing 
with hundreds of thousands or even millions
   of rows of data.
 
-## Example
+## Quick Example
 
 ### Read
 
-Below is an example of reading a spreadsheet document:
-
 ```java
-// Implement the ReadListener interface to set up operations for reading data
-public class DemoDataListener implements ReadListener<DemoData> {
-    @Override
-    public void invoke(DemoData data, AnalysisContext context) {
-        System.out.println("Parsed a data entry" + JSON.toJSONString(data));
-    }
-
-    @Override
-    public void doAfterAllAnalysed(AnalysisContext context) {
-        System.out.println("All data parsed!");
-    }
-}
-
-public static void main(String[] args) {
-    String fileName = "demo.xlsx";
-    // Read file
-    FesodSheet.read(fileName, DemoData.class, new 
DemoDataListener()).sheet().doRead();
-}
+FesodSheet.read("demo.xlsx", DemoData.class, new 
DemoDataListener()).sheet().doRead();
 ```
 
 ### Write
 
-Below is a simple example of creating a spreadsheet document:
-
 ```java
-// Sample data class
-public class DemoData {
-    @ExcelProperty("String Title")
-    private String string;
-    @ExcelProperty("Date Title")
-    private Date date;
-    @ExcelProperty("Number Title")
-    private Double doubleData;
-    @ExcelIgnore
-    private String ignore;
-}
-
-// Prepare data to write
-private static List<DemoData> data() {
-    List<DemoData> list = new ArrayList<>();
-    for (int i = 0; i < 10; i++) {
-        DemoData data = new DemoData();
-        data.setString("String" + i);
-        data.setDate(new Date());
-        data.setDoubleData(0.56);
-        list.add(data);
-    }
-    return list;
-}
-
-public static void main(String[] args) {
-    String fileName = "demo.xlsx";
-    // Create a "Template" sheet and write data
-    FesodSheet.write(fileName, 
DemoData.class).sheet("Template").doWrite(data());
-}
+FesodSheet.write("demo.xlsx", 
DemoData.class).sheet("Template").doWrite(data());
 ```
+
+:::tip
+For complete examples with POJO definitions, listeners, and data preparation, 
see the [Quick Start](/docs/quickstart/simple-example) guide.
+:::
diff --git a/website/docs/sheet/advanced/custom-converter.md 
b/website/docs/sheet/advanced/custom-converter.md
new file mode 100644
index 00000000..71ce5ed5
--- /dev/null
+++ b/website/docs/sheet/advanced/custom-converter.md
@@ -0,0 +1,104 @@
+---
+id: 'custom-converter'
+title: 'Custom Converter'
+---
+
+<!--
+- 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.
+-->
+
+# Custom Converter
+
+This chapter introduces how to create and register custom converters for both 
read and write operations.
+
+## Overview
+
+Fesod provides a `Converter` 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.
+
+## Creating a Custom Converter
+
+### Converter Implementation
+
+```java
+public class CustomStringStringConverter implements Converter<String> {
+    @Override
+    public Class<?> supportJavaTypeKey() {
+        return String.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public String convertToJavaData(ReadConverterContext<?> context) {
+        return "Custom: " + context.getReadCellData().getStringValue();
+    }
+
+    @Override
+    public WriteCellData<?> convertToExcelData(WriteConverterContext<String> 
context) {
+        return new WriteCellData<>("Custom: " + context.getValue());
+    }
+}
+```
+
+---
+
+## Per-Field vs. Global Registration
+
+| Approach | Scope | How |
+|:---|:---|:---|
+| Per-field | Single field only | `@ExcelProperty(converter = 
MyConverter.class)` |
+| Global | All fields matching Java type + Excel type | 
`.registerConverter(new MyConverter())` on the builder |
+
+### Converter Resolution Priority
+
+1. Field-level converter (`@ExcelProperty(converter = ...)`) — highest priority
+2. Builder-level converter (`.registerConverter(...)`)
+3. Built-in default converter — lowest priority
+
+---
+
+## Global Registration Example
+
+### Write with Global Converter
+
+```java
+@Test
+public void customConverterWrite() {
+    String fileName = "customConverterWrite" + System.currentTimeMillis() + 
".xlsx";
+
+    FesodSheet.write(fileName, DemoData.class)
+        .registerConverter(new CustomStringStringConverter())
+        .sheet()
+        .doWrite(data());
+}
+```
+
+### Read with Global Converter
+
+```java
+@Test
+public void customConverterRead() {
+    String fileName = "path/to/demo.xlsx";
+
+    FesodSheet.read(fileName, DemoData.class, new DemoDataListener())
+        .registerConverter(new CustomStringStringConverter())
+        .sheet()
+        .doRead();
+}
+```
diff --git a/website/docs/sheet/advanced/large-file.md 
b/website/docs/sheet/advanced/large-file.md
new file mode 100644
index 00000000..5eec0754
--- /dev/null
+++ b/website/docs/sheet/advanced/large-file.md
@@ -0,0 +1,82 @@
+---
+id: 'large-file'
+title: 'Large File Writing'
+---
+
+<!--
+- 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.
+-->
+
+# Large File Writing
+
+This chapter introduces how to write very large Excel files (100,000+ rows) 
with memory optimization.
+
+## Overview
+
+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.
+
+## Batch Writing with Compressed Temp Files
+
+### Code Example
+
+```java
+@Test
+public void largeFileWrite() {
+    String fileName = "largeFile" + System.currentTimeMillis() + ".xlsx";
+
+    try (ExcelWriter excelWriter = FesodSheet.write(fileName, DemoData.class)
+            .registerWriteHandler(new WorkbookWriteHandler() {
+                @Override
+                public void afterWorkbookCreate(WorkbookWriteHandlerContext 
context) {
+                    Workbook workbook = 
context.getWriteWorkbookHolder().getWorkbook();
+                    if (workbook instanceof SXSSFWorkbook) {
+                        ((SXSSFWorkbook) workbook).setCompressTempFiles(true);
+                    }
+                }
+            })
+            .build()) {
+        WriteSheet writeSheet = FesodSheet.writerSheet("Template").build();
+        // Write data in batches — each data() call returns one batch
+        for (int i = 0; i < 1000; i++) {
+            excelWriter.write(data(), writeSheet);
+        }
+    }
+}
+```
+
+---
+
+## Architecture
+
+```text
+Data (in memory, batched)        Fesod          POI/SXSSF
+    │                              │                 │
+    ├─ 100 rows batch ───────────▶ write() ──────▶ temp XML (compressed)
+    ├─ 100 rows batch ───────────▶ write() ──────▶ temp XML (append)
+    │  ... (1000 batches)           │                 │
+    └─ close() ──────────────────▶ finalize ─────▶ final .xlsx
+```
+
+## Performance Tips
+
+- Use `ExcelWriter` (try-with-resources) for batch writing instead of loading 
all data with `doWrite()`.
+- Enable temp file compression for disk-constrained environments.
+- Tune batch size (100 rows here) based on your row width and available memory.
+- Monitor temp directory size: `FileUtils.getPoiFilesPath()`.
+
+:::tip
+For large file **reading** optimization, see the [Large 
Data](/docs/sheet/help/large-data) section in the Help guide.
+:::
diff --git a/website/docs/sheet/advanced/password.md 
b/website/docs/sheet/advanced/password.md
new file mode 100644
index 00000000..69125f6c
--- /dev/null
+++ b/website/docs/sheet/advanced/password.md
@@ -0,0 +1,72 @@
+---
+id: 'password'
+title: 'Password Protection'
+---
+
+<!--
+- 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.
+-->
+
+# Password Protection
+
+This chapter introduces how to read and write password-protected Excel files.
+
+## Overview
+
+Fesod supports Excel's built-in password protection for both reading and 
writing. Use `.password("xxx")` on the builder to encrypt/decrypt files. For 
`.xlsx` output, Fesod uses Apache POI's encryption (AES-based) which can be 
memory-intensive for large workbooks. For legacy `.xls` files, password 
protection behaves as write-protection rather than full content encryption, so 
behavior and security guarantees differ from `.xlsx`.
+
+## Writing with Password
+
+### Code Example
+
+```java
+@Test
+public void passwordWrite() {
+    String fileName = "passwordWrite" + System.currentTimeMillis() + ".xlsx";
+
+    FesodSheet.write(fileName)
+        .password("your_password")
+        .head(DemoData.class)
+        .sheet("PasswordSheet")
+        .doWrite(data());
+}
+```
+
+---
+
+## Reading with Password
+
+### Code Example
+
+```java
+@Test
+public void passwordRead() {
+    String fileName = "path/to/encrypted.xlsx";
+
+    FesodSheet.read(fileName, DemoData.class, new DemoDataListener())
+        .password("your_password")
+        .sheet()
+        .doRead();
+}
+```
+
+---
+
+## Security Notes
+
+- Excel password protection encrypts the file content, making it unreadable 
without the password.
+- Without the correct password, reading will throw an 
`EncryptedDocumentException`.
+- In production, avoid hardcoding passwords — use configuration files or 
secrets management.
diff --git a/website/docs/sheet/read/format.md 
b/website/docs/sheet/read/format.md
new file mode 100644
index 00000000..83132907
--- /dev/null
+++ b/website/docs/sheet/read/format.md
@@ -0,0 +1,100 @@
+---
+id: 'format'
+title: 'Format'
+---
+
+<!--
+- 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.
+-->
+
+# Formatting
+
+This chapter introduces data formatting when reading data.
+
+## Custom Format Reading
+
+### Overview
+
+When reading Excel files, date and number cells can be automatically converted 
to formatted `String` values using annotations. This is useful when you want to 
control the exact text representation of dates and numbers.
+
+### POJO Class
+
+```java
+@Getter
+@Setter
+@EqualsAndHashCode
+public class ConverterData {
+    @ExcelProperty(value = "String Title", converter = 
CustomStringStringConverter.class)
+    private String string;
+
+    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
+    @ExcelProperty("Date Title")
+    private String date;
+
+    @NumberFormat("#.##%")
+    @ExcelProperty("Number Title")
+    private String doubleData;
+}
+```
+
+### Conversion Behavior
+
+| Excel Cell Value | Annotation | Java Field Value |
+|:---|:---|:---|
+| `Hello` | `@ExcelProperty(converter = CustomStringStringConverter.class)` | 
`"Custom: Hello"` |
+| `2025-01-01 12:30:00` | `@DateTimeFormat("yyyy-MM-dd HH:mm:ss")` | 
`"2025-01-01 12:30:00"` |
+| `0.56` | `@NumberFormat("#.##%")` | `"56%"` |
+
+:::tip
+All fields in the POJO are `String` type. Fesod applies the configured 
converter/format to transform the raw Excel cell value before setting the field.
+:::
+
+### Code Example
+
+```java
+@Test
+public void converterRead() {
+    String fileName = "path/to/demo.xlsx";
+
+    FesodSheet.read(fileName, ConverterData.class, new 
PageReadListener<ConverterData>(dataList -> {
+        for (ConverterData data : dataList) {
+            log.info("Read a row of data: {}", JSON.toJSONString(data));
+        }
+    })).sheet().doRead();
+}
+```
+
+---
+
+## Annotation Reference
+
+### `@DateTimeFormat`
+
+Converts date cells to formatted strings when the field type is `String`.
+
+| Parameter | Default | Description |
+|:---|:---|:---|
+| `value` | Empty | Date format pattern, refer to `java.text.SimpleDateFormat` 
|
+| `use1904windowing` | Auto | Set to `true` if the Excel file uses the 1904 
date system |
+
+### `@NumberFormat`
+
+Converts number cells to formatted strings when the field type is `String`.
+
+| Parameter | Default | Description |
+|:---|:---|:---|
+| `value` | Empty | Number format pattern, refer to `java.text.DecimalFormat` |
+| `roundingMode` | `HALF_UP` | Rounding mode when formatting |
diff --git a/website/docs/sheet/read/pojo.md b/website/docs/sheet/read/pojo.md
index 644a6827..bdb8d0ef 100644
--- a/website/docs/sheet/read/pojo.md
+++ b/website/docs/sheet/read/pojo.md
@@ -52,7 +52,7 @@ public class IndexOrNameData {
 }
 ```
 
-#### 代码示例
+#### Code Example
 
 ```java
 
diff --git a/website/docs/sheet/write/converter.md 
b/website/docs/sheet/write/converter.md
new file mode 100644
index 00000000..3199ec58
--- /dev/null
+++ b/website/docs/sheet/write/converter.md
@@ -0,0 +1,124 @@
+---
+id: 'converter'
+title: 'Converter'
+---
+
+<!--
+- 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.
+-->
+
+# Converter
+
+This chapter introduces how to use custom converters when writing data.
+
+## Overview
+
+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.
+
+## Per-Field Converter
+
+### Overview
+
+Apply a converter to a specific field using the `@ExcelProperty(converter = 
...)` annotation.
+
+### Converter
+
+```java
+public class CustomStringStringConverter implements Converter<String> {
+    @Override
+    public Class<?> supportJavaTypeKey() {
+        return String.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public String convertToJavaData(ReadConverterContext<?> context) {
+        return "Custom: " + context.getReadCellData().getStringValue();
+    }
+
+    @Override
+    public WriteCellData<?> convertToExcelData(WriteConverterContext<String> 
context) {
+        return new WriteCellData<>("Custom: " + context.getValue());
+    }
+}
+```
+
+### POJO Class
+
+```java
+@Getter
+@Setter
+@EqualsAndHashCode
+public class ConverterData {
+    @ExcelProperty(value = "String Title", converter = 
CustomStringStringConverter.class)
+    private String string;
+
+    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
+    @ExcelProperty("Date Title")
+    private Date date;
+
+    @NumberFormat("#.##%")
+    @ExcelProperty("Number Title")
+    private Double doubleData;
+}
+```
+
+### Code Example
+
+```java
+@Test
+public void converterWrite() {
+    String fileName = "converterWrite" + System.currentTimeMillis() + ".xlsx";
+    FesodSheet.write(fileName, ConverterData.class)
+        .sheet()
+        .doWrite(data());
+}
+```
+
+---
+
+## Global Converter Registration
+
+### Overview
+
+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.
+
+### Code Example
+
+```java
+@Test
+public void globalConverterWrite() {
+    String fileName = "globalConverterWrite" + System.currentTimeMillis() + 
".xlsx";
+    FesodSheet.write(fileName, DemoData.class)
+        .registerConverter(new CustomStringStringConverter())
+        .sheet()
+        .doWrite(data());
+}
+```
+
+---
+
+## Converter Resolution Priority
+
+When multiple converters could apply to a field, Fesod resolves them in this 
order:
+
+1. Field-level converter (`@ExcelProperty(converter = ...)`) — highest priority
+2. Builder-level converter (`.registerConverter(...)`)
+3. Built-in default converter — lowest priority
diff --git a/website/docs/sheet/write/merge.md 
b/website/docs/sheet/write/merge.md
new file mode 100644
index 00000000..4af637e4
--- /dev/null
+++ b/website/docs/sheet/write/merge.md
@@ -0,0 +1,148 @@
+---
+id: 'merge'
+title: 'Merge'
+---
+
+<!--
+- 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.
+-->
+
+# Cell Merging
+
+This chapter introduces cell merging strategies when writing Excel files.
+
+## Overview
+
+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.
+
+## Annotation-Based Merging
+
+### Overview
+
+Annotate a field with `@ContentLoopMerge(eachRow = N)` to automatically merge 
every N rows in that column.
+
+### POJO Class
+
+```java
+@Getter
+@Setter
+@EqualsAndHashCode
+public class DemoMergeData {
+    @ContentLoopMerge(eachRow = 2)
+    @ExcelProperty("String Title")
+    private String string;
+
+    @ExcelProperty("Date Title")
+    private Date date;
+
+    @ExcelProperty("Number Title")
+    private Double doubleData;
+}
+```
+
+### Code Example
+
+```java
+@Test
+public void annotationMergeWrite() {
+    String fileName = "annotationMergeWrite" + System.currentTimeMillis() + 
".xlsx";
+    FesodSheet.write(fileName, DemoMergeData.class)
+        .sheet()
+        .doWrite(data());
+}
+```
+
+### Result
+
+```text
+| String Title | Date Title          | Number Title |
+|--------------|---------------------|--------------|
+| String0      | 2025-01-01 00:00:00 | 0.56         |
+| (merged)     | 2025-01-01 00:00:00 | 0.56         |
+| String1      | 2025-01-01 00:00:00 | 0.56         |
+| (merged)     | 2025-01-01 00:00:00 | 0.56         |
+```
+
+---
+
+## Strategy-Based Merging
+
+### Overview
+
+Register a `LoopMergeStrategy(eachRow, columnIndex)` as a write handler. More 
flexible — can be configured at runtime and applied to any column.
+
+### Code Example
+
+```java
+@Test
+public void strategyMergeWrite() {
+    String fileName = "strategyMergeWrite" + System.currentTimeMillis() + 
".xlsx";
+
+    // Merge every 2 rows in column 0
+    LoopMergeStrategy strategy = new LoopMergeStrategy(2, 0);
+    FesodSheet.write(fileName, DemoData.class)
+        .registerWriteHandler(strategy)
+        .sheet()
+        .doWrite(data());
+}
+```
+
+---
+
+## Custom Merge Strategy
+
+### Overview
+
+For complex merging logic (e.g., merge based on data content), implement the 
`AbstractMergeStrategy` class.
+
+### Code Example
+
+```java
+public class CustomMergeStrategy extends AbstractMergeStrategy {
+    @Override
+    protected void merge(Sheet sheet, Cell cell, Head head, Integer 
relativeRowIndex) {
+        if (relativeRowIndex != null && relativeRowIndex % 2 == 0 && 
head.getColumnIndex() == 0) {
+            // Note: +1 assumes a single header row. For multi-row headers, 
use cell.getRowIndex() instead.
+            int startRow = relativeRowIndex + 1;
+            int endRow = startRow + 1;
+            sheet.addMergedRegion(new CellRangeAddress(startRow, endRow, 0, 
0));
+        }
+    }
+}
+```
+
+Usage:
+
+```java
+@Test
+public void customMergeWrite() {
+    String fileName = "customMergeWrite" + System.currentTimeMillis() + 
".xlsx";
+    FesodSheet.write(fileName, DemoData.class)
+        .registerWriteHandler(new CustomMergeStrategy())
+        .sheet()
+        .doWrite(data());
+}
+```
+
+---
+
+## When to Use Which
+
+| Approach | Best For |
+|:---|:---|
+| `@ContentLoopMerge` | Simple, fixed merge patterns baked into the data class 
|
+| `LoopMergeStrategy` | Dynamic merging, runtime configuration |
+| `AbstractMergeStrategy` | Complex merging based on data content or custom 
rules |
diff --git 
a/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/introduce.md 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/introduce.md
index 4d1044b8..1d3994e2 100644
--- a/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/introduce.md
+++ b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/introduce.md
@@ -21,66 +21,20 @@ Fesod (Incubating) 致力于成为您处理电子表格文件的最佳选择。
 - **简单易用**:提供简单直观的API,无论进行基础电子表格操作还是复杂数据处理,开发者均可轻松集成至项目中。
 - **流式操作**:支持流式读取,有效规避一次性加载海量数据的瓶颈。此设计在处理数十万乃至数百万行数据时尤为关键。
 
-## 示例
+## 快速示例
 
 ### 读取
 
-下面是读取电子表格文档的例子:
-
 ```java
-// 实现 ReadListener 接口,设置读取数据的操作
-public class DemoDataListener implements ReadListener<DemoData> {
-    @Override
-    public void invoke(DemoData data, AnalysisContext context) {
-        System.out.println("解析到一条数据" + JSON.toJSONString(data));
-    }
-
-    @Override
-    public void doAfterAllAnalysed(AnalysisContext context) {
-        System.out.println("所有数据解析完成!");
-    }
-}
-
-public static void main(String[] args) {
-    String fileName = "demo.xlsx";
-    // 读取文件
-    FesodSheet.read(fileName, DemoData.class, new 
DemoDataListener()).sheet().doRead();
-}
+FesodSheet.read("demo.xlsx", DemoData.class, new 
DemoDataListener()).sheet().doRead();
 ```
 
 ### 写入
 
-下面是一个创建电子表格文档的简单例子:
-
 ```java
-// 示例数据类
-public class DemoData {
-    @ExcelProperty("字符串标题")
-    private String string;
-    @ExcelProperty("日期标题")
-    private Date date;
-    @ExcelProperty("数字标题")
-    private Double doubleData;
-    @ExcelIgnore
-    private String ignore;
-}
-
-// 填充要写入的数据
-private static List<DemoData> data() {
-    List<DemoData> list = new ArrayList<>();
-    for (int i = 0; i < 10; i++) {
-        DemoData data = new DemoData();
-        data.setString("字符串" + i);
-        data.setDate(new Date());
-        data.setDoubleData(0.56);
-        list.add(data);
-    }
-    return list;
-}
-
-public static void main(String[] args) {
-    String fileName = "demo.xlsx";
-    // 创建一个名为“模板”的 sheet 页,并写入数据
-    FesodSheet.write(fileName, DemoData.class).sheet("模板").doWrite(data());
-}
+FesodSheet.write("demo.xlsx", DemoData.class).sheet("模板").doWrite(data());
 ```
+
+:::tip
+完整示例(包含 POJO 定义、监听器和数据准备),请参阅[快速开始](/docs/quickstart/simple-example)。
+:::
diff --git 
a/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/advanced/custom-converter.md
 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/advanced/custom-converter.md
new file mode 100644
index 00000000..cf5ce96b
--- /dev/null
+++ 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/advanced/custom-converter.md
@@ -0,0 +1,87 @@
+---
+id: 'custom-converter'
+title: '自定义转换器'
+---
+
+# 自定义转换器
+
+本章节介绍如何创建和注册自定义转换器,同时支持读取和写入操作。
+
+## 概述
+
+Fesod 提供了 `Converter` 
接口,允许您定义自定义数据转换逻辑。转换器可以按字段注册(通过注解)或全局注册(通过构建器),同时适用于读取和写入。
+
+## 创建自定义转换器
+
+### 转换器实现
+
+```java
+public class CustomStringStringConverter implements Converter<String> {
+    @Override
+    public Class<?> supportJavaTypeKey() {
+        return String.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public String convertToJavaData(ReadConverterContext<?> context) {
+        return "自定义:" + context.getReadCellData().getStringValue();
+    }
+
+    @Override
+    public WriteCellData<?> convertToExcelData(WriteConverterContext<String> 
context) {
+        return new WriteCellData<>("自定义:" + context.getValue());
+    }
+}
+```
+
+---
+
+## 字段级与全局注册
+
+| 方式 | 作用范围 | 使用方法 |
+|:---|:---|:---|
+| 字段级 | 仅单个字段 | `@ExcelProperty(converter = MyConverter.class)` |
+| 全局 | 所有匹配 Java 类型 + Excel 类型的字段 | 在构建器上使用 `.registerConverter(new 
MyConverter())` |
+
+### 转换器解析优先级
+
+1. 字段级转换器(`@ExcelProperty(converter = ...)`)— 最高优先级
+2. 构建器级转换器(`.registerConverter(...)`)
+3. 内置默认转换器 — 最低优先级
+
+---
+
+## 全局注册示例
+
+### 使用全局转换器写入
+
+```java
+@Test
+public void customConverterWrite() {
+    String fileName = "customConverterWrite" + System.currentTimeMillis() + 
".xlsx";
+
+    FesodSheet.write(fileName, DemoData.class)
+        .registerConverter(new CustomStringStringConverter())
+        .sheet()
+        .doWrite(data());
+}
+```
+
+### 使用全局转换器读取
+
+```java
+@Test
+public void customConverterRead() {
+    String fileName = "path/to/demo.xlsx";
+
+    FesodSheet.read(fileName, DemoData.class, new DemoDataListener())
+        .registerConverter(new CustomStringStringConverter())
+        .sheet()
+        .doRead();
+}
+```
diff --git 
a/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/advanced/large-file.md
 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/advanced/large-file.md
new file mode 100644
index 00000000..4b17831d
--- /dev/null
+++ 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/advanced/large-file.md
@@ -0,0 +1,65 @@
+---
+id: 'large-file'
+title: '大文件写入'
+---
+
+# 大文件写入
+
+本章节介绍如何通过内存优化写入超大 Excel 文件(10 万行以上)。
+
+## 概述
+
+导出大型数据集(如数据库转储、日志分析)时,一次性加载所有行会耗尽内存。Fesod 内部使用 Apache POI 的流式 API(SXSSF),但临时 
XML 文件可能会占用大量磁盘空间。启用压缩可以减少磁盘占用,但会略微增加 CPU 消耗。
+
+## 批量写入与压缩临时文件
+
+### 代码示例
+
+```java
+@Test
+public void largeFileWrite() {
+    String fileName = "largeFile" + System.currentTimeMillis() + ".xlsx";
+
+    try (ExcelWriter excelWriter = FesodSheet.write(fileName, DemoData.class)
+            .registerWriteHandler(new WorkbookWriteHandler() {
+                @Override
+                public void afterWorkbookCreate(WorkbookWriteHandlerContext 
context) {
+                    Workbook workbook = 
context.getWriteWorkbookHolder().getWorkbook();
+                    if (workbook instanceof SXSSFWorkbook) {
+                        ((SXSSFWorkbook) workbook).setCompressTempFiles(true);
+                    }
+                }
+            })
+            .build()) {
+        WriteSheet writeSheet = FesodSheet.writerSheet("模板").build();
+        // 分批写入数据 — 每次 data() 调用返回一个批次
+        for (int i = 0; i < 1000; i++) {
+            excelWriter.write(data(), writeSheet);
+        }
+    }
+}
+```
+
+---
+
+## 架构
+
+```text
+数据(内存中,分批处理)        Fesod          POI/SXSSF
+    │                              │                 │
+    ├─ 100 行批次 ───────────────▶ write() ──────▶ 临时 XML(压缩)
+    ├─ 100 行批次 ───────────────▶ write() ──────▶ 临时 XML(追加)
+    │  ...(1000 批次)              │                 │
+    └─ close() ──────────────────▶ 完成 ─────────▶ 最终 .xlsx
+```
+
+## 性能建议
+
+- 使用 `ExcelWriter`(try-with-resources)进行批量写入,而非通过 `doWrite()` 一次性加载全部数据。
+- 在磁盘受限的环境中启用临时文件压缩。
+- 根据行宽和可用内存调整批次大小(此处为 100 行)。
+- 监控临时目录大小:`FileUtils.getPoiFilesPath()`。
+
+:::tip
+关于大文件**读取**优化,请参阅帮助指南中的[大数据量](/docs/sheet/help/large-data)章节。
+:::
diff --git 
a/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/advanced/password.md
 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/advanced/password.md
new file mode 100644
index 00000000..2bc20c45
--- /dev/null
+++ 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/advanced/password.md
@@ -0,0 +1,55 @@
+---
+id: 'password'
+title: '密码保护'
+---
+
+# 密码保护
+
+本章节介绍如何读取和写入受密码保护的 Excel 文件。
+
+## 概述
+
+Fesod 支持 Excel 内置的密码保护功能,适用于读取和写入操作。在构建器上使用 `.password("xxx")` 
即可加密输出文件或解密输入文件。对于 `.xlsx` 文件,Fesod 使用 Apache POI 的加密实现(基于 
AES),大文件加密时内存开销较高。对于旧版 `.xls` 文件,密码保护表现为写保护而非完整的内容加密,因此其行为和安全性与 `.xlsx` 有所不同。
+
+## 带密码写入
+
+### 代码示例
+
+```java
+@Test
+public void passwordWrite() {
+    String fileName = "passwordWrite" + System.currentTimeMillis() + ".xlsx";
+
+    FesodSheet.write(fileName)
+        .password("your_password")
+        .head(DemoData.class)
+        .sheet("PasswordSheet")
+        .doWrite(data());
+}
+```
+
+---
+
+## 带密码读取
+
+### 代码示例
+
+```java
+@Test
+public void passwordRead() {
+    String fileName = "path/to/encrypted.xlsx";
+
+    FesodSheet.read(fileName, DemoData.class, new DemoDataListener())
+        .password("your_password")
+        .sheet()
+        .doRead();
+}
+```
+
+---
+
+## 安全说明
+
+- Excel 密码保护会加密文件内容,没有密码将无法读取。
+- 如果密码不正确,读取时会抛出 `EncryptedDocumentException` 异常。
+- 在生产环境中,请避免硬编码密码 — 建议使用配置文件或密钥管理服务。
diff --git 
a/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/read/format.md
 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/read/format.md
new file mode 100644
index 00000000..e9f3ac51
--- /dev/null
+++ 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/read/format.md
@@ -0,0 +1,83 @@
+---
+id: 'format'
+title: '格式化'
+---
+
+# 格式化
+
+本章节介绍读取数据时的格式化处理。
+
+## 自定义格式读取
+
+### 概述
+
+读取 Excel 文件时,日期和数字单元格可以通过注解自动转换为格式化的 `String` 值。当您需要精确控制日期和数字的文本表示时,此功能非常实用。
+
+### POJO 类
+
+```java
+@Getter
+@Setter
+@EqualsAndHashCode
+public class ConverterData {
+    @ExcelProperty(value = "字符串标题", converter = 
CustomStringStringConverter.class)
+    private String string;
+
+    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
+    @ExcelProperty("日期标题")
+    private String date;
+
+    @NumberFormat("#.##%")
+    @ExcelProperty("数字标题")
+    private String doubleData;
+}
+```
+
+### 转换行为
+
+| Excel 单元格值 | 注解 | Java 字段值 |
+|:---|:---|:---|
+| `Hello` | `@ExcelProperty(converter = CustomStringStringConverter.class)` | 
`"自定义:Hello"` |
+| `2025-01-01 12:30:00` | `@DateTimeFormat("yyyy-MM-dd HH:mm:ss")` | 
`"2025-01-01 12:30:00"` |
+| `0.56` | `@NumberFormat("#.##%")` | `"56%"` |
+
+:::tip
+POJO 中所有字段均为 `String` 类型。Fesod 会在设置字段值之前,应用配置的转换器/格式对原始 Excel 单元格值进行转换。
+:::
+
+### 代码示例
+
+```java
+@Test
+public void converterRead() {
+    String fileName = "path/to/demo.xlsx";
+
+    FesodSheet.read(fileName, ConverterData.class, new 
PageReadListener<ConverterData>(dataList -> {
+        for (ConverterData data : dataList) {
+            log.info("读取到一行数据:{}", JSON.toJSONString(data));
+        }
+    })).sheet().doRead();
+}
+```
+
+---
+
+## 注解参考
+
+### `@DateTimeFormat`
+
+当字段类型为 `String` 时,将日期单元格转换为格式化字符串。
+
+| 参数 | 默认值 | 说明 |
+|:---|:---|:---|
+| `value` | 空 | 日期格式模式,参考 `java.text.SimpleDateFormat` |
+| `use1904windowing` | 自动 | 如果 Excel 文件使用 1904 日期系统,设置为 `true` |
+
+### `@NumberFormat`
+
+当字段类型为 `String` 时,将数字单元格转换为格式化字符串。
+
+| 参数 | 默认值 | 说明 |
+|:---|:---|:---|
+| `value` | 空 | 数字格式模式,参考 `java.text.DecimalFormat` |
+| `roundingMode` | `HALF_UP` | 格式化时的舍入模式 |
diff --git 
a/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/write/converter.md
 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/write/converter.md
new file mode 100644
index 00000000..72080169
--- /dev/null
+++ 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/write/converter.md
@@ -0,0 +1,107 @@
+---
+id: 'converter'
+title: '转换器'
+---
+
+# 转换器
+
+本章节介绍写入数据时如何使用自定义转换器。
+
+## 概述
+
+Fesod 支持写入操作的自定义数据转换器。您可以在 Java 字段值写入 Excel 单元格之前进行转换,实现自定义格式化、加密或任何数据转换逻辑。
+
+## 字段级转换器
+
+### 概述
+
+通过 `@ExcelProperty(converter = ...)` 注解对特定字段应用转换器。
+
+### 转换器
+
+```java
+public class CustomStringStringConverter implements Converter<String> {
+    @Override
+    public Class<?> supportJavaTypeKey() {
+        return String.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public String convertToJavaData(ReadConverterContext<?> context) {
+        return "自定义:" + context.getReadCellData().getStringValue();
+    }
+
+    @Override
+    public WriteCellData<?> convertToExcelData(WriteConverterContext<String> 
context) {
+        return new WriteCellData<>("自定义:" + context.getValue());
+    }
+}
+```
+
+### POJO 类
+
+```java
+@Getter
+@Setter
+@EqualsAndHashCode
+public class ConverterData {
+    @ExcelProperty(value = "字符串标题", converter = 
CustomStringStringConverter.class)
+    private String string;
+
+    @DateTimeFormat("yyyy年MM月dd日HH时mm分ss秒")
+    @ExcelProperty("日期标题")
+    private Date date;
+
+    @NumberFormat("#.##%")
+    @ExcelProperty("数字标题")
+    private Double doubleData;
+}
+```
+
+### 代码示例
+
+```java
+@Test
+public void converterWrite() {
+    String fileName = "converterWrite" + System.currentTimeMillis() + ".xlsx";
+    FesodSheet.write(fileName, ConverterData.class)
+        .sheet()
+        .doWrite(data());
+}
+```
+
+---
+
+## 全局转换器注册
+
+### 概述
+
+在构建器级别注册转换器,将其应用于所有匹配 Java 类型和 Excel 类型的字段。当您希望对所有字段统一应用相同的转换逻辑时非常有用,无需逐一注解。
+
+### 代码示例
+
+```java
+@Test
+public void globalConverterWrite() {
+    String fileName = "globalConverterWrite" + System.currentTimeMillis() + 
".xlsx";
+    FesodSheet.write(fileName, DemoData.class)
+        .registerConverter(new CustomStringStringConverter())
+        .sheet()
+        .doWrite(data());
+}
+```
+
+---
+
+## 转换器解析优先级
+
+当多个转换器可能应用于某个字段时,Fesod 按以下顺序进行解析:
+
+1. 字段级转换器(`@ExcelProperty(converter = ...)`)— 最高优先级
+2. 构建器级转换器(`.registerConverter(...)`)
+3. 内置默认转换器 — 最低优先级
diff --git 
a/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/write/merge.md
 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/write/merge.md
new file mode 100644
index 00000000..cc0c6f11
--- /dev/null
+++ 
b/website/i18n/zh-cn/docusaurus-plugin-content-docs/current/sheet/write/merge.md
@@ -0,0 +1,131 @@
+---
+id: 'merge'
+title: '单元格合并'
+---
+
+# 单元格合并
+
+本章节介绍写入 Excel 文件时的单元格合并策略。
+
+## 概述
+
+生成 Excel 报表时,您可能需要合并单元格 — 例如,合并列中重复的类别名称,或创建汇总行。Fesod 支持两种方式:基于注解的合并和基于策略的合并。
+
+## 基于注解的合并
+
+### 概述
+
+使用 `@ContentLoopMerge(eachRow = N)` 注解字段,自动合并该列中每 N 行的单元格。
+
+### POJO 类
+
+```java
+@Getter
+@Setter
+@EqualsAndHashCode
+public class DemoMergeData {
+    @ContentLoopMerge(eachRow = 2)
+    @ExcelProperty("字符串标题")
+    private String string;
+
+    @ExcelProperty("日期标题")
+    private Date date;
+
+    @ExcelProperty("数字标题")
+    private Double doubleData;
+}
+```
+
+### 代码示例
+
+```java
+@Test
+public void annotationMergeWrite() {
+    String fileName = "annotationMergeWrite" + System.currentTimeMillis() + 
".xlsx";
+    FesodSheet.write(fileName, DemoMergeData.class)
+        .sheet()
+        .doWrite(data());
+}
+```
+
+### 效果
+
+```text
+| 字符串标题 | 日期标题            | 数字标题 |
+|-----------|---------------------|---------|
+| String0   | 2025-01-01 00:00:00 | 0.56    |
+| (已合并)   | 2025-01-01 00:00:00 | 0.56    |
+| String1   | 2025-01-01 00:00:00 | 0.56    |
+| (已合并)   | 2025-01-01 00:00:00 | 0.56    |
+```
+
+---
+
+## 基于策略的合并
+
+### 概述
+
+注册 `LoopMergeStrategy(eachRow, columnIndex)` 作为写入处理器。更加灵活 — 可在运行时配置并应用于任意列。
+
+### 代码示例
+
+```java
+@Test
+public void strategyMergeWrite() {
+    String fileName = "strategyMergeWrite" + System.currentTimeMillis() + 
".xlsx";
+
+    // 合并第 0 列中每 2 行
+    LoopMergeStrategy strategy = new LoopMergeStrategy(2, 0);
+    FesodSheet.write(fileName, DemoData.class)
+        .registerWriteHandler(strategy)
+        .sheet()
+        .doWrite(data());
+}
+```
+
+---
+
+## 自定义合并策略
+
+### 概述
+
+对于复杂的合并逻辑(例如基于数据内容的合并),可继承 `AbstractMergeStrategy` 类实现。
+
+### 代码示例
+
+```java
+public class CustomMergeStrategy extends AbstractMergeStrategy {
+    @Override
+    protected void merge(Sheet sheet, Cell cell, Head head, Integer 
relativeRowIndex) {
+        if (relativeRowIndex != null && relativeRowIndex % 2 == 0 && 
head.getColumnIndex() == 0) {
+            // 注意:+1 假设只有一行表头。多行表头场景请使用 cell.getRowIndex() 代替。
+            int startRow = relativeRowIndex + 1;
+            int endRow = startRow + 1;
+            sheet.addMergedRegion(new CellRangeAddress(startRow, endRow, 0, 
0));
+        }
+    }
+}
+```
+
+使用方式:
+
+```java
+@Test
+public void customMergeWrite() {
+    String fileName = "customMergeWrite" + System.currentTimeMillis() + 
".xlsx";
+    FesodSheet.write(fileName, DemoData.class)
+        .registerWriteHandler(new CustomMergeStrategy())
+        .sheet()
+        .doWrite(data());
+}
+```
+
+---
+
+## 使用场景对比
+
+| 方式 | 最佳适用场景 |
+|:---|:---|
+| `@ContentLoopMerge` | 固定模式的简单合并,内置于数据类中 |
+| `LoopMergeStrategy` | 动态合并,运行时配置 |
+| `AbstractMergeStrategy` | 基于数据内容或自定义规则的复杂合并 |
diff --git a/website/sidebars.js b/website/sidebars.js
index 5d3ef97b..8106f3b7 100644
--- a/website/sidebars.js
+++ b/website/sidebars.js
@@ -37,7 +37,12 @@ const sidebars = {
         {
             id: "introduce",
             type: "doc",
-        }, {
+        },
+        {
+            id: "download",
+            type: "doc",
+        },
+        {
             type: 'category',
             label: 'quickstart',
             items: [
@@ -54,13 +59,14 @@ const sidebars = {
                     items: [
                         'sheet/read/simple',
                         'sheet/read/sheet',
+                        'sheet/read/head',
+                        'sheet/read/pojo',
+                        'sheet/read/converter',
+                        'sheet/read/format',
                         'sheet/read/num-rows',
                         'sheet/read/csv',
-                        'sheet/read/head',
                         'sheet/read/extra',
                         'sheet/read/exception',
-                        'sheet/read/pojo',
-                        'sheet/read/converter',
                         'sheet/read/spring'
                     ],
                 },
@@ -70,13 +76,15 @@ const sidebars = {
                     items: [
                         'sheet/write/simple',
                         'sheet/write/sheet',
-                        'sheet/write/image',
-                        'sheet/write/csv',
                         'sheet/write/head',
-                        'sheet/write/extra',
-                        'sheet/write/format',
                         'sheet/write/pojo',
+                        'sheet/write/converter',
+                        'sheet/write/format',
                         'sheet/write/style',
+                        'sheet/write/merge',
+                        'sheet/write/image',
+                        'sheet/write/csv',
+                        'sheet/write/extra',
                         'sheet/write/spring'
                     ]
                 },
@@ -87,6 +95,15 @@ const sidebars = {
                         'sheet/fill/fill'
                     ]
                 },
+                {
+                    type: 'category',
+                    label: 'advanced',
+                    items: [
+                        'sheet/advanced/password',
+                        'sheet/advanced/custom-converter',
+                        'sheet/advanced/large-file'
+                    ]
+                },
                 {
                     type: 'category',
                     label: 'help',
@@ -95,7 +112,7 @@ const sidebars = {
                         'sheet/help/core-class',
                         'sheet/help/parameter',
                         'sheet/help/large-data',
-                        "sheet/help/faq"
+                        'sheet/help/faq'
                     ]
                 }
             ]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to