【问题标题】:Excel NumberFormat for on range not working using c#Excel NumberFormat for on range not working using c#
【发布时间】:2018-03-26 14:33:21
【问题描述】:

我正在尝试使用此格式格式化货币列范围

NumberFormat = "$#,##0.00";

每次我得到这个结果

1,016.89 英镑

这里是设置列的完整函数

public void SetColumns(List<ReportColumn> columns)
{
    try
    {
        int row = 9;
        int index = 10;
        int count = Report.Data.Count - 1;
        for (int i = 0; i < columns.Count; i++)
        {
            switch (columns[i].Type.ToUpperInvariant())
            {
                case ColumnSettingType.Number:
                    {
                        oRange = (Excel.Range)oSheet.Range[oSheet.Cells[index, i + 1], oSheet.Cells[index + count, i + 1]];
                        oRange.NumberFormat = "#,###,###0";
                        oRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
                        break;
                    }
                case ColumnSettingType.Currency:
                    {
                        oRange = (Excel.Range)oSheet.Range[oSheet.Cells[index, i + 1], oSheet.Cells[index + count, i + 1]];
                        var format = "$ #,##0.00";
                        oRange.NumberFormat = format; 
                        oRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
                        break;
                    }
                case ColumnSettingType.Percentage:
                    {
                        oRange = (Excel.Range)oSheet.Range[oSheet.Cells[index, i + 1], oSheet.Cells[index + count, i + 1]];
                        oRange.NumberFormat = "0.00%";
                        oRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
                        break;
                    }
                case ColumnSettingType.Date:
                    {
                        oRange = (Excel.Range)oSheet.Range[oSheet.Cells[index, i + 1], oSheet.Cells[index + count, i + 1]];
                        oRange.NumberFormat = "MM/dd/yyyy";
                        oRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
                        break;
                    }
            }
            oSheet.Cells[row, i + 1] = columns[i].ColumnName;
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

需要帮助我做错了什么,需要用它来建立一些文化。

【问题讨论】:

  • 我认为问题是你得到的是英镑符号而不是美元符号?在那种情况下,这似乎是一个文化问题,我们需要查看代码来建议您需要在哪里指定会给您一个美元符号的文化(尽管奇怪的是它没有为千位分隔符和小数点逗号)
  • 你想看什么代码?无论文化如何,我都想动态添加符号。我有不同的报告符号,如美元和欧元。我希望它们以价值打印,而我正在测试这个我正面临这个问题。
  • 也许this 就是你要找的。​​span>
  • 你能分享一个例子吗
  • oRange.NumberFormat.ModelFormatCurrency = "$";当我设置它时,它给出错误说字符串不包含'ModelFormatCurency'的定义

标签: c# excel interop excel-interop


【解决方案1】:

似乎 NumberFormat 属性使用 $ 符号来指示单元格是货币格式 - 据我所知,它使用当前语言环境的货币符号。

用于单元格/范围的实际货币符号可以在 NumberFormatLocal 属性中设置。

设置两者应将值显示为“$ 1,016.89”

 var format = "$ #,##0.00";
 oRange.NumberFormat = format;
 oRange.NumberFormatLocal = format;

【讨论】:

  • 非常感谢。
猜你喜欢
  • 2022-12-19
  • 2017-01-31
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 2013-01-26
  • 2017-04-08
相关资源
最近更新 更多