[英]c# - DataGridView to txt…Header and first row on same line issue
我試圖將數據從datagridview導出到各種.txt表中。
當我導出到.txt文件時,標頭也應該在第一行上打印,但是表的第一行也在該行上打印...現在我已經嘗試了很多方法,但是顯然我的邏輯是這里非常錯誤。
我基本上想要一種方法來設置dataGridView_Excel.Rows.Count-1; 到沒有-1的正常計數。 但是每次我這樣做時,都會拋出一個未設置為對象實例的Object引用。 或者,如果我嘗試增加列數以抵消我得到的索引超出范圍。 必須為非負數並且小於集合的大小。 關於如何做得更好的任何建議? 我了解為什么會發生這種情況,但我解決該問題的邏輯並不健全,而且我很困惑。
if (save.ShowDialog() == DialogResult.OK)
{
TextWriter writer = new StreamWriter(save.OpenFile());
int i2 = 0;
while (i2 < 19)
{
writer.Write(dataGridView_Excel.Columns[i2].HeaderText + "\t " + "|");
i2++;
}
for (int i = 0; i < dataGridView_Excel.Rows.Count - 1; i++)
{
for (int j = 0; j < dataGridView_Excel.Columns.Count; j++)
{
writer.Write("\t" + dataGridView_Excel.Rows[i].Cells[j].Value.ToString() + "\t " + "|");
}
writer.WriteLine("");
writer.WriteLine("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
}
writer.Close();
MessageBox.Show("Data Exported");
您的DataGridView索引為0,並且具有“總”行數。 這行代碼:for(int i = 0; i <dataGridView_Excel.Rows.Count-1; i ++)
將從零開始,然后轉到((行數-1)-1),因為它<小於。
嘗試:
for (int i = 0; i <= dataGridView_Excel.Rows.Count - 1; i++)
即添加=符號,或:
for (int i = 0; i < dataGridView_Excel.Rows.Count; i++)
除非我誤解了您的問題。 問題是循環出現,還是讓事情寫在新的一行上?
要使其編寫新行,請嘗試在末尾添加Environment.NewLine:
writer.Write("\t" + dataGridView_Excel.Rows[i].Cells[j].Value.ToString() + "\t " + "|" + Environment.NewLine);
只是看東西太長而分心的情況...糟糕
這是解決此問題的最簡單方法:
if (save.ShowDialog() == DialogResult.OK)
{
TextWriter writer = new StreamWriter(save.OpenFile());
int i2 = 0;
while (i2 < 20)
{
writer.Write(dataGridView_Excel.Columns[i2].HeaderText + "\t " + "|");
i2++;
}
writer.Write(Environment.NewLine);
writer.WriteLine("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
for (int i = 0; i < dataGridView_Excel.Rows.Count - 1; i++)
{
for (int j = 0; j < dataGridView_Excel.Columns.Count; j++)
{
writer.Write("\t" + dataGridView_Excel.Rows[i].Cells[j].Value.ToString() + "\t " + "|");
}
writer.WriteLine("");
writer.WriteLine("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
}
writer.Close();
MessageBox.Show("Data Exported");
}
我只是在循環之前添加了Environment.NewLine和----分隔符。 我在主for循環之外的while循環中將Header添加到文件的全部原因是為了輕松地將其更改為.txt格式。 謝謝@ainwood的想法,它使我重回正軌!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.