在 Excel 工作表中,原始数据通常以普通数字的形式呈现,缺乏直观性。通过设置数字格式,可以将这些数字转换为更易于理解的形式。例如,将销售数据设置为货币格式,添加货币符号和千位分隔符,可以让金额一目了然;将市场份额数据设置为百分比格式,则可以清晰地展示各部分所占的比例,便于快速比较和分析。
本文将介绍如何使用 C# 设置 Excel 单元格的数字格式。
安装所需组件
首先,需要将相关 DLL 文件添加为 .NET 项目的引用。你可以从官方下载页面获取所需文件,也可以通过 NuGet 安装相关组件。
cs
PM> Install-Package Spire.XLS
Excel 数字格式中的符号
在 Excel 数字格式代码中,可以使用多种符号来定义数字的显示方式。以下是常见符号及其详细说明:
| 符号 | 说明 |
|---|---|
0 |
必须显示的数字占位符。如果位数不足,则使用零补齐。 |
# |
可选数字占位符,不显示无意义的前导零或末尾零。 |
? |
可选数字占位符。通过添加空格对齐小数点以及分数中的末尾零。 |
. |
表示小数点。 |
, |
用作千位分隔符。 |
; |
用于分隔数字格式代码的不同部分,分别定义正数、负数、零值和文本的显示方式。 |
% |
将数值乘以 100,并添加百分号。 |
E、-、+ |
用于表示科学计数法中的指数及其正负号。 |
货币符号($、€、¥ 等) |
显示相应的货币符号。 |
[Color] |
指定数字的显示颜色。 |
日期/时间格式(yyyy、mmmm、mm、dd、hh、ss、AM/PM) |
分别用于表示年份、完整月份名称、月份、日期、小时、秒以及 12 小时制的上午/下午标记。分钟通常使用 m 或 mm 表示,具体含义取决于上下文。 |
使用 C# 设置 Excel 单元格的数字格式
在 C# 中,可以通过 NumberValue 属性设置单元格的数值,并使用 NumberFormat 属性指定数字格式代码,从而控制数值的显示方式。具体步骤如下:
-
创建一个
Workbook工作簿对象。 -
通过
Workbook.Worksheets[]属性获取指定的工作表。 -
通过
Worksheet.Range[]属性获取指定的单元格或单元格区域。 -
使用
CellRange.Text属性向指定单元格添加文本。 -
使用
CellRange.NumberValue属性设置单元格的数值,再通过CellRange.NumberFormat属性设置相应的数字格式。 -
使用
Workbook.SaveToFile()方法保存生成的 Excel 文件。
完整示例代码如下:
cs
using Spire.Xls;
namespace SetNumberFormat
{
class Program
{
static void Main(string[] args)
{
// 创建一个 Workbook 实例
Workbook workbook = new Workbook();
// 获取第一个工作表
Worksheet sheet = workbook.Worksheets[0];
// 向指定单元格添加文本并设置单元格样式
sheet.Range["B3"].Text = "数值";
sheet.Range["C3"].Text = "数字格式";
sheet.Range["D3"].Text = "显示结果";
sheet.Range["E3"].Text = "说明";
sheet.Range["B3:E3"].Style.Font.IsBold = true;
sheet.Range["B3:E3"].Style.KnownColor = ExcelColors.SkyBlue;
// 使用零补齐数字位数
sheet.Range["B4"].Text = "123";
sheet.Range["C4"].Text = "0000";
sheet.Range["D4"].NumberValue = 123;
sheet.Range["D4"].NumberFormat = "0000";
sheet.Range["E4"].Text = "使用零补齐数字位数";
// 设置两位小数并使用千位分隔符
sheet.Range["B5"].Text = "1234.5678";
sheet.Range["C5"].Text = "#,##0.00";
sheet.Range["D5"].NumberValue = 1234.5678;
sheet.Range["D5"].NumberFormat = "#,##0.00";
sheet.Range["E5"].Text = "保留两位小数并使用千位分隔符";
// 将负数显示为红色
sheet.Range["B6"].Text = "-1234.5678";
sheet.Range["C6"].Text = "0;[Red]-0";
sheet.Range["D6"].NumberValue = -1234.5678;
sheet.Range["D6"].NumberFormat = "0;[Red]-0";
sheet.Range["E6"].Text = "将负数显示为红色";
// 设置为保留一位小数的百分比格式
sheet.Range["B7"].Text = "0.12345";
sheet.Range["C7"].Text = "0.0%";
sheet.Range["D7"].NumberValue = 0.12345;
sheet.Range["D7"].NumberFormat = "0.0%";
sheet.Range["E7"].Text = "百分比保留一位小数";
// 在数字前添加文本
sheet.Range["B8"].Text = "1234.5678";
sheet.Range["C8"].Text = "\"数量:\"0";
sheet.Range["D8"].NumberValue = 1234.5678;
sheet.Range["D8"].NumberFormat = "\"数量:\"0";
sheet.Range["E8"].Text = "在数字前添加文本";
// 设置带货币符号的数字格式
sheet.Range["B9"].Text = "1234.5678";
sheet.Range["C9"].Text = "$#,##0.00";
sheet.Range["D9"].NumberValue = 1234.5678;
sheet.Range["D9"].NumberFormat = "$#,##0.00";
sheet.Range["E9"].Text = "显示货币符号";
// 设置科学计数法格式
sheet.Range["B10"].Text = "1234.5678";
sheet.Range["C10"].Text = "0.00E+00";
sheet.Range["D10"].NumberValue = 1234.5678;
sheet.Range["D10"].NumberFormat = "0.00E+00";
sheet.Range["E10"].Text = "使用科学计数法显示数字";
// 设置分数格式
sheet.Range["B11"].Text = "0.5";
sheet.Range["C11"].Text = "# ?/?";
sheet.Range["D11"].NumberValue = 0.5;
sheet.Range["D11"].NumberFormat = "# ?/?";
sheet.Range["E11"].Text = "将数字显示为分数";
// 设置日期格式
sheet.Range["B12"].Text = "45930";
sheet.Range["C12"].Text = "yyyy-MM-dd";
sheet.Range["D12"].NumberValue = 45930;
sheet.Range["D12"].NumberFormat = "yyyy-MM-dd";
sheet.Range["E12"].Text = "将数值显示为日期";
// 设置时间格式
sheet.Range["B13"].Text = "0.5";
sheet.Range["C13"].Text = "h:mm:ss AM/PM";
sheet.Range["D13"].NumberValue = 0.5;
sheet.Range["D13"].NumberFormat = "h:mm:ss AM/PM";
sheet.Range["E13"].Text = "将数值显示为时间";
// 设置已使用区域的单元格样式
sheet.AllocatedRange.Style.Font.FontName = "Calibri";
sheet.AllocatedRange.Style.Font.Size = 11;
sheet.AllocatedRange.Style.HorizontalAlignment = HorizontalAlignType.Left;
// 自动调整列宽
sheet.AutoFitColumn(2);
sheet.AutoFitColumn(3);
sheet.AutoFitColumn(4);
sheet.AutoFitColumn(5);
// 保存生成的 Excel 文件
workbook.SaveToFile("ExcelNumberFormat.xlsx", ExcelVersion.Version2016);
}
}
}
总结
本文介绍了如何使用 C# 设置 Excel 单元格的数字格式。通过设置 NumberFormat 属性,可以根据实际需求灵活控制数值的显示方式,包括补齐数字位数、保留指定小数位、添加千位分隔符、将负数显示为红色,以及设置百分比、货币、科学计数法、分数、日期和时间等格式。
合理设置数字格式可以让 Excel 数据更加直观、规范,便于阅读、比较和分析。在处理销售报表、财务数据、统计结果等场景时,掌握这些格式设置方法能够有效提升数据展示的清晰度和可读性。