2017-10-04 12 views
0

DocumentFormat.OpenXmlライブラリを使用して、特定の列名(例:「名前」、「CAS」など)を持つExcelの表の値を読み取っています。は、次のとおりです。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です。列に明示的に名前が付けられていても、2番目の列の列CASを読み取る列名の2番目の行を読み取るのではなく、cookie cn2などの間違った値が読み取られます。 dtはDataTable()オブジェクトです。 これを解決する助けがあれば幸いです。

+0

[名前付きのDataTable列のインデックスを取得する](https://stackoverflow.com/q/11340264/1115360)を参照してください。期待どおりの結果が得られますか?私は列の名前が1つ離れているのだろうかと思います。 –

+0

お返事ありがとうございます。この場合の問題は、Open Xmlが空白のセルを無視し、入力ファイルに空白のセルが多いために発生したようです。解決策は、通常は-1で空白にする項目を入力することです(私のコードで) – Carol

+0

[C#OPEN XML:空のセルがEXCELからDATATABLEにデータを取得する際にスキップされる可能性があります](https://stackoverflow.com/質問/ 36100011/c-sharp-open-xml-empty-cells-get-ski- –

答えて

0

この問題は、Open Xmlが空白のセルを無視し、入力ファイルに空白のセルが多いために発生したようです。次のコード:

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

は、入力されたセルのみを考慮しているため、最初のブランクエントリに続く列に間違ったデータが挿入されます。 解決方法は、通常は-1で空白にする必要がある項目を入力することです(空白と見なすようにコードを変更してください)。

関連する問題