在Excel中读取一列,每行包含不同类型的信息

时间:2015-11-20 17:04:52

标签: c# excel winforms

我尝试使用我编写的程序阅读Excel文档并根据读取的信息,更改我的UI上的某些字段,然后我遇到了一个有趣的问题。

我的一个专栏有可能容纳4种不同类型的数据。行中的每个单元格可能包含一个数字,一个以文本,文本或任何内容存储的数字。

这是我用来阅读本专栏的代码部分:

try
{
    string dtTerritory = dt.Rows[0].Field<string>("Territory");
    cmbTerritory.SelectedItem = dtTerritory;
    territory = dtTerritory;
}
catch
{
    double dtTerritory = dt.Rows[0].Field<double>("Territory");
    cmbTerritory.SelectedItem = dtTerritory.ToString();
    territory = dtTerritory.ToString();
}

我遇到的问题是读取存储为文本的数字,问题是,当数字作为文本存储在Excel工作表上时,它总是存储为3个字符。因此,如果数字为3,则将其存储为&#34; 3&#34; (3之后2个空格)如果是46,则存储为&#34; 46&#34; (46后的1个空格)。

所以我基本上寻找最好的解决方案,让我可以让程序忽略数字后出现的空格。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我只是将数据作为文本读取,然后对其进行处理,看看是否可以将其转换为数字。

因此,在第一个实例中,您需要修剪文本:

dtTerritory = dtTerritory.Trim();

然后检查它是否是一个空字符串:

if (!string.IsEmptyOrWhileSpace(dtTerritory))
{
    // Process further
}

然后您的进一步处理是尝试解析文本:

double value;
if (double.TryParse(dtTerritory, out value))
{
    // do your double value handling here.
}