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

相关推荐
我的愿望是成为富婆5 小时前
2027校招:大数据管理与应用专业,如何用数据能力匹配电商运营与供应链管培生
人工智能·sql·excel
qyyyyy5705 小时前
WhatsApp 联系人表格怎么清洗?Excel 文本类型、重复号码与姓名冲突处理
数据库·自然语言处理·excel·hash
用户0332126663671 天前
如何快速拆分超大 Excel 文件【Python 教程】
python·excel
葡萄城技术团队1 天前
在线 Excel 怎么验收:从「能打开」到「能上线」
excel
言乐61 天前
HTML实现Word、Excel、PPT三种可切换背景,可键盘打字、和像素小人交互
html·word·powerpoint·excel·交互
Eiceblue2 天前
使用 Python 实现 Excel 行列转置(保留单元格样式)
前端·python·excel
开开心心_Every2 天前
内存清理工具定时自动清理开机自启动
java·开发语言·spring·计算机外设·ocr·intellij-idea·excel
Knight_AL3 天前
从 EasyExcel 到 Apache Fesod:Java Excel 处理生态的一次重构
java·apache·excel
泡海椒3 天前
JQuick-Excel 多字段 TRANSFORM:让当前行字段、JContext 与展示列各归其位
开发语言·python·excel