C#如何将带有感叹号图标注释的文本格式的数字转换为数字格式的数字?

Posted

技术标签:

【中文标题】C#如何将带有感叹号图标注释的文本格式的数字转换为数字格式的数字?【英文标题】:C# How to convert text formatted number with exclamation mark icon note to number formatted number? 【发布时间】:2015-10-06 01:35:26 【问题描述】:

我尝试在 C# 中将它们转换为数字格式 我已经尝试如下,但它没有转换。 有人知道如何将这些类型数据转换为数字格式吗?

range.NumberFormat = "0";

【问题讨论】:

从你的图片中我看到68085 你是否留下来,你想将!68085 转换为删除! 的数字,如果是这样,那么为什么不使用.Contains 方法或@987654328 @ 删除 ! 例如 var someblaNum = Convert.ToInt32(YourTextValue.Replace("!", "")); 你能解释一下初始格式是什么以及你想要什么吗? @MethodMan 完全正确,如果他有你的方案正确 @MethodMan 我认为 OP 指的是标有黄色感叹号的单元格,而不是 !68085 我不知道值居然有“!”一开始是因为它没有显示。谢谢。 【参考方案1】:

更改单元格的数字格式不会做任何事情,因为它只会影响数值的视觉呈现,并且值是字符串,而不是数字。

您需要将数字从字符串转换为兼容的数字类型 - doubleint,具体取决于内容,甚至可能是 Decimal - 并将字符串值替换为转换后的数字。

这样的事情(未经测试)可能会做到:

foreach (var cell in range.Cells)

    double value;
    if (double.TryParse(cell.Value.ToString(), out value))
        cell.Value = value;

【讨论】:

这是这个问题的正确答案。因为您使用字符串的值,这就是为什么在 excel 中会要求您将其转换为数字。 @pnuts 是针对我的吗?如果是这样...问题的文本表明OP试图通过设置range.NumberFormat来解决问题,但这是行不通的。这就是我所指的。 @pnuts 没关系,我以为某处有误会……只是不确定是你的还是我的 :)

以上是关于C#如何将带有感叹号图标注释的文本格式的数字转换为数字格式的数字?的主要内容,如果未能解决你的问题,请参考以下文章

C# 中怎样将日期格式mm/dd/yy 转化为yyyy-mm-dd?

如何将上标字符转换为 C# 字符串中的普通文本

如何将 C++ 数字格式转换为 C# 数字格式?

如何把文本转化为数字

Libreoffice Calc:将许多带有文本的单元格转换为数字

Excel怎么把排序依据设置为数值?