使用C#代码设置 Excel 单元格的数字格式

在 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 属性指定数字格式代码,从而控制数值的显示方式。具体步骤如下:

  1. 创建一个 Workbook 工作簿对象。

  2. 通过 Workbook.Worksheets[] 属性获取指定的工作表。

  3. 通过 Worksheet.Range[] 属性获取指定的单元格或单元格区域。

  4. 使用 CellRange.Text 属性向指定单元格添加文本。

  5. 使用 CellRange.NumberValue 属性设置单元格的数值,再通过 CellRange.NumberFormat 属性设置相应的数字格式。

  6. 使用 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 数据更加直观、规范,便于阅读、比较和分析。在处理销售报表、财务数据、统计结果等场景时,掌握这些格式设置方法能够有效提升数据展示的清晰度和可读性。

相关推荐
xurime13 小时前
Excelize 开源基础库发布 2.11.1 版本更新
数据分析·excel·开源软件·excelize·gitcode
梦想出海-Phoebe15 小时前
Gemini新增文件编辑功能:PDF、Word、Excel处理体验分享
pdf·word·excel
Data-Miner2 天前
AI和Excel怎么结合才能真提效
人工智能·excel
taller_20002 天前
【012】数据类型入门: Excel 数据到 Python 值的转换
python·excel·pie·py
彦5 天前
Excel实用技巧笔记
excel
Logic1015 天前
Excel流程控制if函数,IF+数组轻松解决复杂判断问题
excel·流程控制·条件判断·if·excel函数·if函数·数组公式
跨境猫小妹5 天前
跨境电商订单导出CSV用Excel打开后订单号变成科学计数法如何定位并修复
excel·跨境电商·营销策略
weixin_440401696 天前
大数据技术-数据分析(EXcel+Python数据处理+SQL)
大数据·python·数据分析·excel
jaysee-sjc6 天前
【苍穹外卖】Day12:工作台数据看板与 Excel 报表导出
java·开发语言·数据库·spring boot·spring·微信·excel
ms365copilot7 天前
Copilot 代理开始进入Word、Excel、PowerPoint,不再只是“问一句答一句”
word·excel·copilot