Excel中的单元格;存储为文本的数字;

本文关键字:文本 数字 存储 单元格 Excel | 更新日期: 2023-09-27 18:12:39

我有一个c#程序,它接受遗留报表的文本文件并映射到excel工作表。但对于事务单元,它输出为"数字存储为文本",这是不允许的任何格式。我们想显示10000.00,但它只显示1000。

我能得到这个格式吗?这些列是余额和金额。这里是这样定义的:

ndcRange = currentSheet.Cells[transactionRowNo + pageOffset, 13];
ndcRange.NumberFormat = "@";
ndcRange.Value2 = tr.Amount;
ndcRange = currentSheet.Cells[transactionRowNo + pageOffset, 16];
ndcRange.NumberFormat = "@";
ndcRange.Value2 = tr.Balance;

下面是一些格式化代码:

string balance = transaction;
if (lastSpaceIndex != -1)
{
   balance = transaction.Substring(lastSpaceIndex, (transaction.Length)lastSpaceIndex);
}
transac.Balance = balance;
transaction = transaction.Replace(balance, "");

transaction = transaction.Trim();
if (!string.IsNullOrWhiteSpace(transaction))
{
    transac.Description = transaction;
}
patient.TransactionsList.Add(transac);

Excel中的单元格;存储为文本的数字;

使用范围。Microsoft Excel对象库中的NumberFormat。点击此链接。

示例代码:

oRng = oSheet.get_Range("C2", "C1000"); //change this range to suit your scenario
oRng.Formula = "<any formula you may be using already or skip it>";
oRng.NumberFormat = "#,##0.00"; 

引用:

如何从Microsoft Visual c#自动化Microsoft Excel。净

StackOverflow示例

我认为这里的技巧是将数字作为数字而不是文本输入单元格。如果tr.Balance是字符串,可以使用TryParse:

将其转换为双精度类型。
object StringToDoubleIfPossible(string s)
{
    double parseResult;
    return !string.IsNullOrEmpty(s) && double.TryParse(s, out parseResult) ? (object)parseResult : s;
}

编辑:string.IsNullOrEmpty()调用是不必要的。我把它放进去是因为我不确定TryParse是否可以处理空字符串。它可以。这样更好:

object StringToDoubleIfPossible(string s)
{
    double parseResult;
    return double.TryParse(s, out parseResult) ? (object)parseResult : s;
}
编辑:

咄!Barrowc是对的。我想知道为什么这个号码会以短信的形式出现。我应该多注意一下@的格式

您的代码ndcRange.NumberFormat = "@"首先将数字格式设置为Text。在插入数据

之前,只需将@更改为适当的数字格式(例如Kash的答案中建议的格式)。