在处理电子表格时,尤其是在专业和数据导向型环境中,正确设置 Excel 单元格内的数字格式至关重要。恰当的数字格式不仅能让信息展示更加清晰和一致,还能根据其用途(如财务数据、百分比、日期或科学数值)确保其表现形式与数据性质相符。利用 Java 进行 Excel 任务自动化,程序化地设定合适的数字格式,能有效提升工作效率,降低出错几率,并增强报表或仪表盘的易读性。本文将介绍如何使用 Spire.XLS for Java 设置 Excel 单元格的数字格式,帮助轻松创建精美且结构清晰的电子表格。
安装 Spire.XLS for Java
首先,您需要在 Java 程序中添加 Spire.Xls.jar 文件作为依赖项。JAR 文件可以从此链接下载。 如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而轻松地在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>15.3.1</version>
</dependency>
</dependencies>
用 Java 设置 Excel 单元格的数字格式
Spire.XLS for Java 为开发者提供了 CellRange.setNumberFormat() 方法,允许开发者使用 Excel 的数字格式代码为单元格设置数字显示格式。下表列出了 Excel 数字格式代码中常用的符号及其功能:
符号 | 描述 |
0 和 # | 0 强制显示数字位数,必要时用零填充;# 仅在需要时显示数字。 |
? | 作为对齐数字的占位符,若未使用则不显示任何内容,但会预留空间。 |
, 和 . | , 用作千位分隔符,并可表示除以1000;. 是小数点。 |
% | 将数字乘以100并添加百分号。 |
E+ / E- | 科学计数法,分别用于正负指数。 |
货币($, €, ¥ 等) | 显示相应的货币符号。 |
[Color] | 设置文本颜色(例如:[Red], [Blue])。 |
@ | 文本占位符,用于自定义格式中表示文本。 |
日期/时间(yyyy, mmmm, mm, dd, hh, ss, AM/PM) | 分别代表年、月份全称、月、日、小时、分钟、秒和12小时制标记。 |
使用 Java 设置 Excel 单元格数字格式的详细步骤如下:
- 创建一个 Workbook 对象。
- 使用 Workbook.getWorksheets().get() 方法获取工作表。
- 使用 CellRange.setValue() 方法添加字符串到指定单元格,或使用 CellRange.setNumberValue() 方法添加数值到指定单元格。
- 使用 CellRange.setNumberFormat() 方法通过数字格式代码设置单元格的数字格式。
- 使用 Workbook.saveToFile() 方法保存工作簿。
- Java
import com.spire.xls.*;
public class SetNumberFormat {
public static void main(String[] args) {
// 创建一个新的工作簿实例
Workbook workbook = new Workbook();
// 获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 添加标题
sheet.getCellRange("B1").setText("数字格式");
sheet.getCellRange("B1").getCellStyle().getExcelFont().isBold(true);
sheet.getCellRange("B1").getCellStyle().getExcelFont().setFontName("HarmonyOS Sans SC");
sheet.getCellRange("B1:C1").merge();
sheet.getCellRange("B1:C1").setHorizontalAlignment(HorizontalAlignType.Center);
// 添加数字格式示例及对应的值
// 添加正数格式示例
addNumberFormatExample(sheet, "B3", "C3", "0", "1234.5678"); // 格式为整数
addNumberFormatExample(sheet, "B4", "C4", "0.00", "1234.5678"); // 格式为保留两位小数
addNumberFormatExample(sheet, "B5", "C5", "#,##0.00", "1234.5678"); // 格式为带千位分隔符且保留两位小数
addNumberFormatExample(sheet, "B6", "C6", "$#,##0.00", "1234.5678"); // 格式为货币格式
// 添加负数格式示例
addNumberFormatExample(sheet, "B7", "C7", "0;[Red]-0", "-1234.5678"); // 格式为负数用红色显示
addNumberFormatExample(sheet, "B8", "C8", "0.00;[Red]-0.00", "-1234.5678"); // 格式为保留两位小数,负数用红色显示
// 添加科学计数法和百分比格式示例
addNumberFormatExample(sheet, "B9", "C9", "0.00E+00", "1234.5678"); // 格式为科学计数法
addNumberFormatExample(sheet, "B10", "C10", "0.00%", "0.5678"); // 格式为百分比
// 添加日期和时间格式示例
addNumberFormatExample(sheet, "B11", "C11", "yyyy-MM-dd", "44930.0"); // Excel 日期值对应 2023-01-01
addNumberFormatExample(sheet, "B12", "C12", "HH:mm:ss", "0.75"); // Excel 时间值对应 18:00:00
// 添加文本格式示例
addNumberFormatExample(sheet, "B13", "C13", "@", "文本示例"); // 格式为文本
// 设置格式
sheet.getCellRange("B3:B13").getCellStyle().setKnownColor(ExcelColors.Gray25Percent);
sheet.getCellRange("C3:C13").getCellStyle().setKnownColor(ExcelColors.Gray50Percent);
sheet.setColumnWidth(2, 24);
sheet.setColumnWidth(3, 24);
// 将工作簿保存到文件
workbook.saveToFile("output/设置Excel单元格数字格式.xlsx", FileFormat.Version2016);
workbook.dispose();
}
/**
* 向工作表指定的单元格中添加数字格式示例
*
* @param sheet 要修改的工作表
* @param textCell 显示数字格式字符串的单元格
* @param valueCell 显示格式化值的单元格
* @param format 数字格式代码
* @param value 要格式化的数值
*/
private static void addNumberFormatExample(Worksheet sheet, String textCell, String valueCell, String format, String value) {
sheet.getCellRange(textCell).setText(format); // 显示数字格式代码
sheet.getCellRange(valueCell).setValue(value); // 添加数值
// sheet.getCellRange(valueCell).setNumberValue(Double); // 或者使用 setNumberValue() 方法设置数值
sheet.getCellRange(valueCell).setNumberFormat(format); // 应用数字格式
}
}
用 Java 在 Excel 单元格中添加带数字格式的值
Spire.XLS for Java 支持通过 CellRange 类下的方法直接将带有特定数字格式的数据添加到 Excel 单元格中。下表概述了将带有常见数字格式的数据添加到单元格的方法及其描述:
方法 | 描述 |
setText(String text) | 在单元格或单元格范围内设置文本值。 |
setNumberValue(double numberValue) | 在单元格或单元格范围内设置数值。 |
setBooleanValue(boolean booleanValue) | 在单元格或单元格范围内设置布尔值(真/假)。 |
setDateTimeValue(java.util.Date dateTime) | 在单元格或单元格范围内设置日期和时间值。 |
setHtmlString(String htmlCode) | 在单元格或单元格范围内设置 HTML 格式的字符串。 |
向 Excel 单元格添加带数字格式的值的详细步骤如下:
- 创建 Workbook 类的实例。
- 使用 Workbook.getWorksheets().get() 方法获取工作表。
- 使用 Worksheet.getCellRange() 方法获取一个单元格或单元格范围。
- 使用 CellRange 类下的方法添加特定数字格式的值。
- 根据需要设置单元格样式。
- 使用 Workbook.saveToFile() 方法保存工作簿。
- Java
import com.spire.xls.*;
import java.util.Calendar;
import java.util.Date;
public class AddFormattedDataExcel {
public static void main(String[] args) {
// 创建一个新的工作簿实例
Workbook workbook = new Workbook();
// 获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 添加文本值
sheet.getCellRange("C3").setText("示例文本");
// 添加数值
sheet.getCellRange("C4").setNumberValue(1234.5678);
// 添加布尔值
sheet.getCellRange("C5").setBooleanValue(true);
// 添加日期时间值
sheet.getCellRange("C6").setDateTimeValue(new Date(2024, Calendar.DECEMBER, 12));
// 添加 HTML 字符串
sheet.getCellRange("C7").setHtmlString("加粗文本");
// 格式化单元格
sheet.getCellRange("C3:C7").setHorizontalAlignment(HorizontalAlignType.Center);
sheet.getCellRange("C3:C7").setVerticalAlignment(VerticalAlignType.Center);
sheet.getCellRange("C3:C7").getCellStyle().getExcelFont().setSize(14);
for (int i = 3; i <= 7; i++) {
sheet.autoFitColumn(i);
}
// 保存工作簿
workbook.saveToFile("output/添加带数字格式的值到Excel.xlsx", FileFormat.Version2016);
workbook.dispose();
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。