2017-10-04 85 views
0

我正在使用庫DocumentFormat.OpenXml讀取Excel中特定列名稱的值的值,例如「Name」,「CAS」等。我的代碼如下:使用DocumentFormat.OpenXml的VB.net代碼錯誤地讀取excel表格行

Dim cookie1 As New HttpCookie("cn" & j + 1) 
cookie1.Value = dt.Rows(j)("Name").ToString() 
cookie1.Expires = DateTime.Now.AddDays(2) 
Response.Cookies.Add(cookie1) 

j是一個從0到列數-1迭代的整數。即使這些列是明確命名的,它也會讀取錯誤的值,例如在Cookie cn2中,而不是讀取列名稱的第二行,它讀取第二行CAS列。 dt是一個DataTable()對象。 任何幫助解決這個將不勝感激。

+0

如果您檢查列的索引(例如,請參閱[使用名稱獲取DataTable列的索引](https://stackoverflow.com/q/11340264/1115360),它是否會給您預期的結果?我想知道列名是否被一個關閉。 –

+0

謝謝你的回覆。看來在這種情況下問題是由於Open Xml忽略空白單元格造成的,並且在輸入文件中有很多空白單元格。解決方法是填寫通常應該爲-1的空格(在我的代碼中) – Carol

+0

[C#OPEN XML:從EXCEL獲取數據時空單元格被跳過到DATATABLE]的可能重複(https://stackoverflow.com/問題/ 36100011/C鋒利開放XML的空細胞-被-得到-跳過而-獲取數據從 - EXCEL) –

回答

0

看來在這種情況下,問題是由於Open Xml忽略空白單元格造成的,並且在輸入文件中有很多空白單元格。下面的代碼:

For Each cell As Cell In row.Descendants(Of Cell)() 
dt.Columns.Add(GetValue(doc, cell)) 
Next 

只考慮人口細胞,因此它把錯誤的數據爲列第一空白項下。 解決方法是填寫通常應該爲-1的條目(並修改代碼以將其視爲空白)