首页 > 解决方案 > syncfusion xlsio 将列类型从文本更改为数字

问题描述

我有一个从网页获取的 .xlsm 文件。这个文件是一个导出的数据库,它有写成文本的数字数据,不能在公式中使用的数字信息,因为 excel 认为它是一个文本。

将列数据类型从文本转换为数字的最有效方法是什么?现在我只能用 for 循环来做,但这个文件最多可以有 10.000 个寄存器。

for (int i = 2; i <= 10002; i++)
{
        sheet.Range["A"+i.ToString()].Number = sheet.Range["A" + i.ToString()].Text;
}

我也尝试了 numberformat 属性,但它似乎不相关

sheet.Range["A2:A10002"].NumberFormat = "#";

这是 Excel 文件的示例。 https://drive.google.com/file/d/1Kz98NDYsj7k7zCmGyl-ohz_VERnsyGvV/view?usp=sharing

标签: c#asp.net-coresyncfusion

解决方案


当数字存储为文本时,Syncfusion XlsIO 不支持 Microsoft Excel 的转换为数字选项。而且,除了循环和设置如下数字格式之外,没有其他有效的方法可以实现这一目标。

代码片段:

for (int i = 2; i <= 10002; i++)
{
    double value;
    string rowString = i.ToString();
    if (double.TryParse(sheet.Range["A" + rowString].Value, out value))
    {
        sheet.Range["A" + rowString].Number = value;
        sheet.Range["A" + rowString].NumberFormat = "0";
    }
}

注意:我为 Syncfusion 工作。


推荐阅读