2015-11-15 38 views
0

我正在用一個按鈕(Form1,Panel1)在窗體上創建動態文本框。我將這些動態文本發送到Excel(帶有Form2的按鈕),每個文本框放在一個新行中。如果我從默認的電子表格開始,使用無限數量的行,它將使用「foreach」循環發送文本。如果我嘗試爲每個文本框執行插入行,則將插入行,但只有最後一個文本框纔會在單元格中顯示數據。 IE:有5個文本框,5號文本將顯示。這裏是我使用的代碼:使用C的Excel行插入#

int row = 1; 
foreach (TextBox dynamicTxtBx in sourcePanel.Controls.OfType<TextBox>()) 
{ 
    worksheet.Rows[1].Insert(); 
    worksheet.Cells[row++, "A"].value = dynamicTxtBx.Text; 
    // ... 
} 
+0

您正在添加新行始終在pos 1使用worksheet.rows [row-1] .insert() – lumos0815

回答

2

試試這個:

int row = 1; 

foreach (TextBox dynamicTxtBx in sourcePanel.Controls.OfType<TextBox>()) 
{ 
    worksheet.Rows[row].Insert(); 
    worksheet.Cells[row++, "A"].value = dynamicTxtBx.Text; 
    // ... 
} 

當你在行插入[1],目前所有的行下推。例如:第2行成爲第3行,第3行成爲第4行等等。 這就是值被覆蓋並且只有您輸入的最後一個值保持原因的原因。

你可以在Excel表格中模擬這個,以獲得更多的清晰度。打開Excel表格。在第1行插入。寫任何值。再次插入並寫入下一行。您先前執行的值將被逐行推下,最終覆蓋以前的值。

+0

感謝您的所有答案,, worksheet.Rows [row] .Insert();這個伎倆! – DSB

+0

@DSB當答案解決了您的問題時,請選中該答案旁邊的複選標記。這有助於未來的訪問者快速找到幫助。 –