2016-08-09 12 views
0

Excelシートのセル値を読み込み、datagridviewに追加します。 以下のコードに従っていますが、1行しか追加せず、Excelシートの最後の行です。私はExcelのシートで4行を持っているので、datagridviewにも4行が必要です。vb.netのdatagridviewに複数の行を動的に追加する

For x = 9 To xlWorkSheet.UsedRange.Rows.Count 
      For j = 0 To LogCalcEnter.ColumnCount - 1 
       If Not String.IsNullOrEmpty(xlWorkSheet.Cells(1 + x, j + 1).Value) Then 
        LogCalcEnter.Rows.Add() 
        LogCalcEnter.Item(j, 0).Value = xlWorkSheet.Cells(1 + x, j + 1).value 
       End If 
      Next 
     Next 

LogCalcEnterはあなたがオーバーループしているすべてのに新しい行を追加するDataGridView

答えて

0

の名前です。以下のコードは、ループする各行に対して新しいを作成します。 LogCalcEnter.Item(j, 0)LogCalcEnter.Item(j, rowIndex)に変更して、行情報も入力しています。注:私は実際にはそれを実行していない、あなたはこれで使用しているインデックスに問題がある可能性があります。スプレッドシートに4行あり、x = 9で始まっているとします。また、xlWorkSheet.Cells(1 + x, j + 1).Value)の+1は、行数をUsedRangeの値よりも大きくします。

For x = 1 To xlWorkSheet.UsedRange.Rows.Count 
     Dim rowIndex = LogCalcEnter.Rows.Add() 
     Dim hasValue = False 
     For j = 0 To LogCalcEnter.ColumnCount - 1 
      If Not String.IsNullOrEmpty(xlWorkSheet.Cells(1 + x, j + 1).Value) Then 
       hasValue = True 
       LogCalcEnter.Item(j, rowIndex).Value = xlWorkSheet.Cells(1 + x, j + 1).value 
      End If 
     Next 
     If Not hasValue Then LogCalEnter.Rows.RemoveAt(rowIndex) 
    Next 
+0

はい、動作します。実際にExcelからインポートしたいデータは、10行目から開始されます。 14行目までは、空のセルだけの後にデータがあります。しかし、Used Rangeは50行を返します。 DataGridviewで空の行が追加されるようになりました。その理由は、IsNullorEmptyの後にRows.Add()を置くとループがチェックされます。 – Anu

+0

空の行が追加されないようにコードを修正しました。 – FloatingKiwi

+0

はい。私はそれを得ました。 – Anu

関連する問題