2017-01-11 19 views
0

我需要一些帮助解决我遇到的问题。处理整数时出现无效的投射异常

我目前正在构建一个导出程序,从Excel文档中提取数据并将其推送到FoxPro数据库(我知道,旧技术),但是我遇到了一个问题。该代码尝试从包含一个月租金的列中提取数据。

importCommand.Parameters["PRICEASK"].Value = exportReader.IsDBNull(14) 
        ? (object) DBNull.Value 
        : exportReader.GetInt32(14); 

不过,我得到这个错误:

Additional information: Specified cast is not valid.

我很坦率地说难倒,为什么我收到此错误

+0

我应该提到,其余的代码工作正常。 我使用参数化查询来拉取和推送数据。 –

+1

这样的东西可能'工作int i = Convert.ToInt32(exportReader.GetValue(14));' – cyboashu

+1

然后列14不_包含一个int32类型。 – CodeCaster

回答

1

这已经有一段时间,因为我是用Excel的工作类似的能力,但遇到了一个非常类似的问题。这个问题来自读取,你告诉它你得到一个Int并且它不喜欢它,可能是因为列/单元格没有被格式化为整数。应该有一个选项来读取单元格值到一个字符串。喜欢的东西:

importCommand.Parameters["PRICEASK"].Value = exportReader.IsDBNull(14) 
       ? (object) DBNull.Value 
       : exportReader.GetString(14); 

获取字符串,并投一旦你有将其存储在数据库中。试试看。祝你好运。

+0

嗨,伙伴,我检查了excel,以确保格式是正确的,并且问题列被格式化为数字。 我也曾尝试转换为字符串,并解析回到当我做推,但无济于事 –

+1

@ JoshuaCameron-Mackintosh“我以前也试过转换为字符串” - 你可以输出该字符串并粘贴在这里?字符串中可以有隐藏/零宽度字符。例如,这解析罚款:'Int32.Parse(“99”);',这不是:'Int32.Parse(“99”);' - 第二个有一个['零宽度连接器] http://www.fileformat.info/info/unicode/char/200d/index.htm)。因为我在最后粘贴了隐藏的字符,所以返回'true':'string.Equals(“99”,“99 \ u200d”)'(尝试它,SO不会去掉字符,所以它也在注释中) 。 – Quantic