Skip to content

Commit

Permalink
Merge pull request #169 from CodePhiliaX/feature-1.x
Browse files Browse the repository at this point in the history
montly release to 1.1.0
  • Loading branch information
Chat2DB-Pro authored Jan 14, 2025
2 parents 83aee6a + 9a231ba commit 37657d6
Show file tree
Hide file tree
Showing 45 changed files with 403 additions and 1,070 deletions.
12 changes: 12 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!-- 请确保你已经阅读并理解了贡献指南 -->

### Ⅰ. 描述这个 PR 做了什么

### Ⅱ. 这个 pull request 是否修复了一个问题?
<!-- 如果是,请在下一行添加“fix #xxx”,例如 fix #97。-->

### Ⅲ. 为什么不需要添加测试用例(单元测试/集成测试)?

### Ⅳ. 描述如何验证它

### Ⅴ. 评审的特别说明
144 changes: 144 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# 为 FastExcel 做贡献

FastExcel 欢迎社区的每一位用户和开发者成为贡献者。无论是报告问题、改进文档、提交代码,还是提供技术支持,您的参与都将帮助 FastExcel 变得更好。

---

## 报告问题

我们鼓励用户在使用 FastExcel 的过程中随时提供反馈。您可以通过 [NEW ISSUE](https://github.com/CodePhiliaX/fastexcel/issues/new/choose) 提交问题。

### 高质量问题报告

为了提高沟通效率,请在提交问题前:
1. **搜索现有问题**:检查您的问题是否已被报告。如果存在,请直接在现有问题下评论补充详细信息,而不是创建新问题。
2. **使用问题模板**:问题模板位于 [ISSUE TEMPLATE](./.github/ISSUE_TEMPLATE),请按照模板要求填写,以确保问题描述准确且完整。

以下情况适合提交新问题:
- Bug 报告
- 新功能需求
- 性能问题
- 功能提案或设计
- 文档改进
- 测试覆盖率优化
- 需要技术支持
- 其他与项目相关的问题

> **注意**:请勿在问题中包含敏感信息,如密码、密钥、服务器地址或私人数据。
---

## 贡献代码与文档

所有对 FastExcel 的改进均可通过 Pull Request (PR) 实现。无论是修复 Bug、优化代码、增强功能,还是改进文档,都非常欢迎!

### 您可以贡献的方向
- 修复错别字
- 修复 Bug
- 删除冗余代码
- 添加测试用例
- 增强功能
- 添加注释以提升代码可读性
- 优化代码结构
- 改进或完善文档

**原则****任何有助于项目改进的 PR 都值得鼓励!**

在提交 PR 前,请熟悉以下指南:
1. [工作区准备](#工作区准备)
2. [分支定义](#分支定义)
3. [提交规则](#提交规则)
4. [PR 说明](#pr说明)

---

### 工作区准备

确保您已注册 GitHub 账号,并按照以下步骤完成本地开发环境配置:
1. **Fork 仓库**:在 FastExcel 的 [GitHub 页面](https://github.com/CodePhiliaX/fastexcel) 点击 `Fork` 按钮,将项目复制到您的 GitHub 账户下,例如:`https://github.com/<your-username>/fastexcel`
2. **克隆代码库**:运行以下命令将 Fork 的项目克隆到本地:
```bash
git clone git@github.com:<your-username>/fastexcel.git
```
3. **设置上游仓库**:将官方仓库设置为 `upstream`,方便同步更新:
```bash
git remote add upstream git@github.com:CodePhiliaX/fastexcel.git
git remote set-url --push upstream no-pushing
```
运行 `git remote -v` 可检查配置是否正确。

---

### 分支定义

在 FastExcel 中,所有贡献应基于 `main` 开发分支。此外,还有以下分支类型:
- **release 分支**:用于版本发布(如 `0.6.0`, `0.6.1`)。
- **feature 分支**:用于开发较大的功能。
- **hotfix 分支**:用于修复重要 Bug。

提交 PR 时,请确保变更基于 `main` 分支。

---

### 提交规则

#### 提交信息
请确保提交消息清晰且具有描述性,遵循以下格式:
- **docs**: 更新文档,例如 `docs: 更新 PR 提交指南`
- **feature**: 新功能,例如 `feature: 支持 并发写入`
- **bugfix**: 修复 Bug,例如 `bugfix: 修复空指针异常`
- **refactor**: 重构代码,例如 `refactor: 优化数据处理逻辑`
- **test**: 增加或改进测试,例如 `test: 添加单元测试`

不建议使用模糊的提交信息,如:
- ~~修复问题~~
- ~~更新代码~~

如果需要帮助,请参考 [如何编写 Git 提交消息](http://chris.beams.io/posts/git-commit/)

#### 提交内容
一次提交应包含完整且可审查的更改,确保:
- 避免提交过于庞大的改动。
- 每次提交内容独立且可通过 CI 测试。

另外,请确保提交时配置正确的 Git 用户信息:
```bash
git config --get user.name
git config --get user.email
```

---

### PR 说明

为了帮助审阅者快速了解 PR 的内容和目的,请使用 [PR 模板](.github/PULL_REQUEST_TEMPLATE/pull_request_template.md)。详细的描述将极大提高代码审阅效率。

---

## 测试用例贡献

任何测试用例的贡献都值得鼓励,尤其是单元测试。建议在对应模块的 `test` 目录中创建 `XXXTest.java` 文件,推荐使用 JUnit5 框架。

---

## 其他参与方式

除了直接贡献代码,以下方式同样是对 FastExcel 的宝贵支持:
- 回答其他用户的问题。
- 帮助审阅他人的 PR。
- 提出改进建议。
- 撰写技术博客,宣传 FastExcel。
- 在社区中分享项目相关知识。

---

## 代码风格

请遵循 [阿里巴巴 Java 编码规范](https://alibaba.github.io/Alibaba-Java-Coding-Guidelines/) 进行代码编写。
您可以选择安装以下插件(非必需)以帮助检查代码风格:
- **IntelliJ IDEA 插件**[安装指南](https://github.com/alibaba/p3c/blob/master/idea-plugin/README.md)
- **Eclipse 插件**[安装指南](https://github.com/alibaba/p3c/blob/master/eclipse-plugin/README.md)

---

**最后,感谢您对 FastExcel 的支持!每一份帮助,都是我们前进的动力。**
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,22 @@ FastExcel 将始终坚持免费开源,并采用最开放的 MIT 协议,使

> 当前 FastExcel 底层使用 poi 作为基础包,如果您的项目中已经有 poi 相关组件,需要您手动排除 poi 的相关 jar 包。
## 更新
您可以在 [版本升级详情](update.md) 中查询到具体的版本更新细节。 您也可以在[Maven 中心仓库](https://mvnrepository.com/artifact/cn.idev.excel/fastexcel)中查询到所有的版本。
### Maven
如果您使用 Maven 进行项目构建,请在 `pom.xml` 文件中引入以下配置:
```xml
<dependency>
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel</artifactId>
<version>1.0.0</version>
<version>1.1.0</version>
</dependency>
```
### Gradle
如果您使用 Gradle 进行项目构建,请在 `build.gradle` 文件中引入以下配置:
```gradle
dependencies {
implementation 'cn.idev.excel:fastexcel:1.0.0'
implementation 'cn.idev.excel:fastexcel:1.1.0'
}
```
## EasyExcel 与 FastExcel 的区别
Expand All @@ -75,7 +77,7 @@ dependencies {
<dependency>
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel</artifactId>
<version>1.0.0</version>
<version>1.1.0</version>
</dependency>
```

Expand Down
8 changes: 5 additions & 3 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,19 @@ If you are using Maven for project building, add the following configuration in
<dependency>
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel</artifactId>
<version>1.0.0</version>
<version>1.1.0</version>
</dependency>
```
### Gradle
If you are using Gradle for project building, add the following configuration in the build.gradle file:

```gradle
dependencies {
implementation 'cn.idev.excel:fastexcel:1.0.0'
implementation 'cn.idev.excel:fastexcel:1.1.0'
}
```
## Update
For detailed update logs, refer to [Details of version updates](update.md). You can also find all available versions in the [Maven Central Repository](https://mvnrepository.com/artifact/cn.idev.excel/fastexcel).

## Differences Between EasyExcel and FastExcel
- FastExcel supports all the features of EasyExcel but with better performance and stability.
Expand All @@ -71,7 +73,7 @@ Replace with:
<dependency>
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel</artifactId>
<version>1.0.0</version>
<version>1.1.0</version>
</dependency>
```
### 2. Modify Code
Expand Down
8 changes: 5 additions & 3 deletions README_JP.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,19 @@ Mavenでプロジェクトを構築する場合、`pom.xml`ファイルに次の
<dependency>
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel</artifactId>
<version>1.0.0</version>
<version>1.1.0</version>
</dependency>
```
### Gradle

Gradleでプロジェクトを構築する場合、build.gradleファイルに次の構成を含めてください:
```gradle
dependencies {
implementation 'cn.idev.excel:fastexcel:1.0.0'
implementation 'cn.idev.excel:fastexcel:1.1.0'
}
```
## 更新する
具体的なバージョンアップ内容は[バージョンアップ詳細](update.md)で確認できます。 [Maven Central Repository](https://mvnrepository.com/artifact/cn.idev.excel/fastexcel) 内のすべてのバージョンをクエリすることもできます。
## EasyExcelとFastExcelの違い
- FastExcelはEasyExcelのすべての機能をサポートしていますが、FastExcelのパフォーマンスはより良く、より安定しています。
- FastExcelとEasyExcelのAPIは完全に一致しているため、シームレスに切り替えることができます。
Expand All @@ -68,7 +70,7 @@ EasyExcelの依存関係をFastExcelの依存関係に置き換えます。以
<dependency>
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel</artifactId>
<version>1.0.0</version>
<version>1.1.0</version>
</dependency>
```
### 2. コードの修正
Expand Down
1 change: 0 additions & 1 deletion easyexcel_en.md

This file was deleted.

61 changes: 16 additions & 45 deletions fastexcel-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@
<name>fastexcel-core</name>
<version>${revision}</version>

<properties>
<itext.version>7.1.15</itext.version>
</properties>

<dependencies>
<dependency>
Expand All @@ -31,11 +28,27 @@
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.5</version>
<exclusions>
<exclusion>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</exclusion>
<exclusion>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.5</version>
<exclusions>
<exclusion>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
Expand Down Expand Up @@ -65,47 +78,5 @@
<artifactId>fastexcel-support</artifactId>
<version>0.0.1</version>
</dependency>
<!-- itext7 -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>${itext.version}</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>io</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>forms</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>pdfa</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>pdftest</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>font-asian</artifactId>
<version>${itext.version}</version>
</dependency>
</dependencies>
</project>
19 changes: 0 additions & 19 deletions fastexcel-core/src/main/java/cn/idev/excel/FastExcel.java
Original file line number Diff line number Diff line change
@@ -1,29 +1,10 @@
package cn.idev.excel;

import cn.idev.excel.fileconvertor.ExcelConverter;
import cn.idev.excel.fileconvertor.FileConverterContext;

import java.io.File;

/**
* This is actually {@link FastExcelFactory}, and short names look better.
*
* @author jipengfei
*/
public class FastExcel extends FastExcelFactory {

/**
* Convert excel to pdf
*
* @param excelFile excel file
* @param pdfFile pdf file
* @param fontPath font path for pdf can be null
* @param sheets sheet index to convert, if null convert all sheets
*/
public static void convertToPdf(File excelFile, File pdfFile, String fontPath, int[] sheets) {
FileConverterContext context = new FileConverterContext(excelFile, pdfFile, fontPath, sheets);
ExcelConverter excelConverter = context.getExcelConverter();
excelConverter.convertToPdf();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more
*/
public class SharedStringsTableHandler extends DefaultHandler {

private static final Pattern UTF_PATTTERN = Pattern.compile("_x([0-9A-Fa-f]{4})_");
private static final Pattern UTF_PATTERN = Pattern.compile("_x([0-9A-Fa-f]{4})_");

/**
* The final piece of data
Expand Down Expand Up @@ -154,7 +154,7 @@ static String utfDecode(String value) {
}

StringBuilder buf = new StringBuilder();
Matcher m = UTF_PATTTERN.matcher(value);
Matcher m = UTF_PATTERN.matcher(value);
int idx = 0;
while (m.find()) {
int pos = m.start();
Expand Down
Loading

0 comments on commit 37657d6

Please sign in to comment.