Skip to content

Commit 8a887f1

Browse files
authored
docs: add documentation for writing CSV files (#463)
* docs: add documentation for writing CSV files * review update * updates
1 parent d88f76b commit 8a887f1

2 files changed

Lines changed: 131 additions & 1 deletion

File tree

docs/zh-CN/write/csv.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
## 写入 CSV 文件
2+
本章节介绍如何使用 FastExcel 来写入自定义 CSV 文件。
3+
4+
## 概述
5+
FastExcel 通过不同的参数设计进行 CSV 的写入。其底层使用了[Apache Commons CSV](https://commons.apache.org/proper/commons-csv),也支持通过直接设置[CSVFormat](https://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html)进行设定来达成写入的目标。
6+
7+
主要的参数如下:
8+
9+
| 名称 | 默认值 | 描述 |
10+
| :--- | :--- | :--- |
11+
| `delimiter` | `,` (逗号) | 字段分隔符。推荐使用 `CsvConstant` 中预定义的常量,例如 `CsvConstant.AT` (`@`)、`CsvConstant.TAB` 等。 |
12+
| `quote` | `"` (双引号) | 字段引用符号,推荐使用 `CsvConstant` 中预定义的常量,例如 `CsvConstant.DOUBLE_QUOTE` (`"`)。 |
13+
| `recordSeparator` | `CRLF` | 记录(行)分隔符。根据操作系统不同而变化,例如 `CsvConstant.CRLF` (Windows) 或 `CsvConstant.LF` (Unix/Linux)。 |
14+
| `nullString` | `null` | 用于表示 `null` 值的字符串。注意这与空字符串 `""` 不同。 |
15+
| `escape` | `null` | 转义字符,确认是否进行特殊符号的转义。 |
16+
17+
---
18+
19+
## 参数详解与示例
20+
21+
下面将详细介绍每一个参数的用法,并提供代码示例。
22+
23+
### delimiter
24+
25+
`delimiter` 用于指定 CSV 文件中的字段分隔符。默认值为英文逗号 `,`。同时,FastExcel 提供了一些常量`CsvConstant`,用于简化使用。
26+
27+
#### 代码示例
28+
如果 CSV 文件使用 `\u0000` 作为分隔符,可以如下设置:
29+
```java
30+
@Test
31+
public void delimiterDemo() {
32+
String csvFile = "path/to/your.csv";
33+
FastExcel.write(csvFile, DemoData.class)
34+
.csv()
35+
.delimiter(CsvConstant.UNICODE_EMPTY)
36+
.doWrite(data());
37+
}
38+
```
39+
40+
### quote
41+
42+
`quote` 用于指定包裹字段的引用符号。默认值为双引号 `"`。当字段内容本身包含分隔符或换行符时,建议设置。
43+
> 注意不可和 `recordSeparator` 的设置重复,建议结合`QuoteMode`使用。
44+
45+
#### 代码示例
46+
```java
47+
@Test
48+
public void quoteDemo() {
49+
String csvFile = "path/to/your.csv";
50+
FastExcel.write(csvFile, DemoData.class)
51+
.csv()
52+
.quote(CsvConstant.DOUBLE_QUOTE, QuoteMode.MINIMAL)
53+
.doWrite(data());
54+
}
55+
```
56+
57+
### recordSeparator
58+
59+
`recordSeparator` 用于指定文件中的换行符。不同操作系统的换行符可能不同(例如,Windows 使用 `CRLF`,而 Unix/Linux 使用 `LF`)。
60+
61+
#### 代码示例
62+
```java
63+
@Test
64+
public void recordSeparatorDemo() {
65+
String csvFile = "path/to/your.csv";
66+
FastExcel.write(csvFile, DemoData.class)
67+
.csv()
68+
.recordSeparator(CsvConstant.LF)
69+
.doWrite(data());
70+
}
71+
```
72+
73+
### nullString
74+
75+
`nullString` 用于写入文件中将 `null` 值置换成特定字符串。例如,可以将 `null` 对象置换成字符串 `"N/A"`
76+
77+
#### 代码示例
78+
```java
79+
@Test
80+
public void nullStringDemo() {
81+
String csvFile = "path/to/your.csv";
82+
FastExcel.write(csvFile, DemoData.class)
83+
.csv()
84+
.nullString("N/A")
85+
.doWrite(data());
86+
}
87+
```
88+
89+
### escape
90+
91+
`escape` 用于指定转义字符。当使用了`escape`,输出的CSV有包含会保留显示。
92+
93+
#### 代码示例
94+
```java
95+
@Test
96+
public void escapeDemo() {
97+
String csvFile = "path/to/your.csv";
98+
FastExcel.write(csvFile, DemoData.class)
99+
.csv()
100+
.escape(CsvConstant.BACKSLASH)
101+
.doWrite(data());
102+
}
103+
```
104+
105+
## CSVFormat设置详解与示例
106+
107+
支持直接构建一个`CSVFormat`对象。
108+
> 目前 FastExcel 仍然支持,但并非最推荐的使用方法。
109+
110+
### 代码示例
111+
112+
```java
113+
@Test
114+
public void csvFormatDemo() {
115+
CSVFormat csvFormat = CSVFormat.DEFAULT.builder().setDelimiter(CsvConstant.AT).build();
116+
String csvFile = "path/to/your.csv";
117+
118+
try (ExcelWriter excelWriter = FastExcel.write(csvFile, DemoData.class).excelType(ExcelTypeEnum.CSV).build()) {
119+
WriteWorkbookHolder writeWorkbookHolder = excelWriter.writeContext().writeWorkbookHolder();
120+
Workbook workbook = writeWorkbookHolder.getWorkbook();
121+
// 判断是否为CsvWorkbook实例
122+
if (workbook instanceof CsvWorkbook) {
123+
CsvWorkbook csvWorkbook = (CsvWorkbook) workbook;
124+
csvWorkbook.setCsvFormat(csvFormat);
125+
writeWorkbookHolder.setWorkbook(csvWorkbook);
126+
}
127+
WriteSheet writeSheet = FastExcel.writerSheet(0).build();
128+
excelWriter.write(data(), writeSheet);
129+
}
130+
}
131+
```

docs/zh-CN/write/write-csv.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)