0%

汉语拼音转换工具 pinyin4j 实战:基础用法与多音字处理全指南

在中文数据处理场景中(如搜索推荐、排序、拼音检索),经常需要将汉字转换为汉语拼音。pinyin4j 是一款经典的 Java 拼音转换工具,支持全拼、简拼、声调标注等功能。本文将详细讲解 pinyin4j 的基础用法、多音字问题及解决方案,帮助你在实际开发中精准处理拼音转换需求。

pinyin4j 基础入门

引入依赖

pinyin4j 是开源工具,可通过 Maven 或 Gradle 引入项目:

Maven 依赖

1
2
3
4
5
<dependency>  
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version> <!-- 最新稳定版 -->
</dependency>

Gradle 依赖

1
implementation 'com.belerweb:pinyin4j:2.5.1'  

核心类与基础用法

pinyin4j 的核心功能通过 PinyinHelper 工具类实现,配合 HanyuPinyinOutputFormat 配置输出格式(如声调、大小写)。

基本拼音转换

将单个汉字转换为拼音(支持多音字返回多个结果):

阅读全文 »

带附件邮件发送全指南:基于 Spring 与 Apache Commons Email 的实现

在日常开发中,带附件的邮件发送是常见需求(如报表推送、文件共享等)。本文将详细讲解两种实现方式:Spring 的 MimeMessageHelper(适合 Spring 生态项目)和 Apache Commons Email(通用 Java 项目),包括依赖配置、核心代码、参数说明及常见问题解决,帮助你快速集成邮件附件功能。

技术选型对比

实现方式 优势 适用场景
Spring MimeMessageHelper 与 Spring 无缝集成,API 简洁,支持 HTML 内容 Spring Boot/SSM 项目
Apache Commons Email 轻量级,无 Spring 依赖,配置灵活 非 Spring 项目或简单 Java 应用

Spring 方式:使用 MimeMessageHelper

依赖配置

需引入 Spring 邮件相关依赖(适用于 Spring 项目):

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- Spring 邮件支持 -->  
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.29.RELEASE</version> <!-- 版本需与项目 Spring 版本匹配 -->
</dependency>

<!-- JavaMail 核心依赖 -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>

核心代码实现

MimeMessageHelper 是 Spring 提供的邮件辅助类,支持附件、HTML 内容等功能:

阅读全文 »

POI操作EXCEL合并单元格详解

在使用 POI 处理 Excel 时,合并单元格是常见需求,比如制作表头、合并相同内容的单元格等。下面详细介绍如何通过 POI 实现单元格合并,并补充相关注意事项。

核心类与方法

POI 中合并单元格的核心类是 CellRangeAddress,通过它定义需要合并的单元格范围,再调用工作表的 addMergedRegion 方法完成合并。

  • CellRangeAddress 构造方法
    用于定义合并的单元格区域,参数含义如下:

    1
    CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)
    • firstRow:起始行索引(从 0 开始)
    • lastRow:终止行索引(包含)
    • firstCol:起始列索引(从 0 开始)
    • lastCol:终止列索引(包含)
  • Sheet.addMergedRegion 方法
    将定义好的单元格范围添加到工作表中,完成合并:

    1
    sheet.addMergedRegion(cellRangeAddress);

示例代码

以下是一个完整的示例,演示如何在 Excel 中合并单元格(以 XSSF 为例,适用于.xlsx格式):

maven依赖

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
阅读全文 »

POI操作EXCEL插入图片:完整实现与优化技巧

在 Excel 中插入图片(如 Logo、二维码、报表图表)可增强文档的可视化效果。Apache POI 提供了灵活的图片插入功能,支持多种图片格式(PNG、JPG 等)和位置调整。本文将详细讲解插入图片的核心步骤、代码实现及常见问题解决方案。

核心原理与类

POI 插入图片的核心逻辑是:

  1. 将图片转为字节数组;
  2. 通过 Workbook.addPicture() 注册图片资源;
  3. 使用绘图对象(Drawing)将图片锚定到指定单元格位置。

关键类说明:

类名 作用描述
HSSFWorkbook/XSSFWorkbook 工作簿对象,提供 addPicture() 方法注册图片资源(返回图片索引)。
HSSFPatriarch/XSSFDrawing 绘图管理器,负责创建图片对象并关联到工作表。
ClientAnchor 图片锚点,定义图片在工作表中的位置(起始行列、偏移量等)。
Picture 图片对象,支持调整尺寸、获取图片信息等操作。

完整代码实现

以下示例支持 .xls(Excel 2003)和 .xlsx(Excel 2007+)格式,演示如何插入本地图片到指定单元格,并调整尺寸。

通用工具类(兼容两种格式)

maven依赖

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
阅读全文 »

POI 操作 Excel 实现下拉框:隐藏 Sheet 方案详解

在批量导入数据的场景中,为 Excel 单元格添加下拉框可减少手动输入错误(如格式不符、选项错误)。Apache POI 提供了数据有效性校验功能,通过隐藏 Sheet 存储下拉选项的方式,可支持大量选项且避免下拉框配置冗余。本文将详细讲解实现步骤、核心代码及扩展技巧。

实现原理

为 Excel 单元格添加下拉框的核心是通过 数据有效性校验(Data Validation) 实现,具体方案:

  1. 创建隐藏 Sheet:用于存储下拉框的所有可选值(如 “供应商列表”“状态选项”);
  2. 设置数据有效性:在目标 Sheet 的指定单元格区域,引用隐藏 Sheet 中的选项作为下拉来源;
  3. 隐藏辅助 Sheet:避免用户误编辑下拉选项,仅保留目标 Sheet 可见。

环境准备

依赖配置

需引入 POI 核心库和 OOXML 库(支持 .xlsx 格式):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<dependencies>  
<!-- 处理 .xls 格式(Excel 2003 及以下) -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- 处理 .xlsx 格式(Excel 2007 及以上) -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
</dependencies>

完整实现代码

以下示例以 .xlsx 格式为例,在 “用户信息表” 的 “部门” 列添加下拉框,选项存储在隐藏的 “部门列表” Sheet 中。

核心代码

阅读全文 »