2017-01-11 22 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