在掌握 C# 讀取 TXT 檔案 之後。本篇將帶你學習 C# TXT 檔案解析進階實務用運,著重在TXT檔案解析後的資料顯示,才能實務上在IT部門確實的幫助到其他部門應用,幫助你從基礎讀取進階到實務應用。
本篇重點:
- ✔ 實務應用情境(內容顯示)
👉 建議先閱讀
如果你還沒看基礎教學,建議先閱讀:
C# TXT 檔案解析教學|讀取文字檔與資料處理完整範例|C# 檔案處理系列
我們再回顧一下,財務部門是希望我們把txt的檔案解析,讓他們更方便閱讀,但我們做到了解析,可是解析後是在程式編譯器裡面才看得到,這樣並沒有讓他們方便閱讀,所以我們要來調整顯示的方式,讓使用者可以方便閱讀txt的訊息。
開始進階修改
1 . 開啟 C# TXT 檔案解析教學|讀取文字檔與資料處理完整範例|C# 檔案處理系列 程式

2 . 依據需求調整範例程式碼
- 把整個button1_Click裡面的程式丟到GPT裡面,並且清楚表達如下:
透過winform裡面的工具顯示內容給使用者看
- 取得GPT給的版本
有新增或修改的程式碼後面我會加//新增 或 //修改 或 //一些細節備註,讓你更清楚我們有調整的地方。
private void button1_Click(object sender, EventArgs e)
{
string filePath = @"C:\txtParse\課程8.txt";
string[] lines = File.ReadAllLines(filePath);
//以下新增
dataGridView1.AutoGenerateColumns = false;
dataGridView1.AllowUserToAddRows = false;
dataGridView1.ReadOnly = true;
dataGridView1.Columns.Clear();
dataGridView1.Columns.Add("Account", "帳號");
dataGridView1.Columns.Add("Code", "代碼");
dataGridView1.Columns.Add("Type", "類型");
dataGridView1.Columns.Add("Amount", "金額");
dataGridView1.Columns.Add("Time", "時間");
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView1.Rows.Clear();
//以上
foreach (string line in lines)
{
string[] values = line.Split(
new char[] { ' ' },
StringSplitOptions.RemoveEmptyEntries
);
string account = values[0];
string code = values[1];
string type = values[2];
string amount = values[3];
string time = values[4];
//以下新增
dataGridView1.Rows.Add(
values[0],
values[1],
values[2],
values[3],
values[4]
);
//以上
}
}
- 新增DataGridView元件
程式碼我等下會繼續講解,但講解前我們要先在我們的畫面拉一個DataGridView元件,因為我們要用DataGridView來顯示資料,如果沒有拉你會發現這些程式碼有錯誤,因為編譯器找不到你的DataGridView元件,就會報錯。
編譯器切到Form1.cs → 選左側工具箱DataGridView左鍵點一下 → Form1上左鍵常按拉一個適合的大小。(圖一)
(圖一)

- 觀察DataGridView預設的名稱
你拉完的DataGridView在畫面上左鍵點一下,並在右邊的屬性欄位看它的預設名稱,預設名稱為dataGridView1,然後你就會發現程式的地方沒有報錯了,因為編譯器現在發現dataGridView1已存在。(圖二)
(圖二)

3 . 新增或更改的程式碼:
新增程式碼:
dataGridView1.AutoGenerateColumns = false;dataGridView1.AllowUserToAddRows = false;dataGridView1.ReadOnly = true;dataGridView1.Columns.Clear();dataGridView1.Columns.Add("Account", "帳號");dataGridView1.Columns.Add("Code", "代碼");dataGridView1.Columns.Add("Type", "類型");dataGridView1.Columns.Add("Amount", "金額");dataGridView1.Columns.Add("Time", "時間");dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;dataGridView1.Rows.Clear();
-------------------------------------------------------------------------------------------------------
第 1 行 dataGridView1.AutoGenerateColumns = false;dataGridView1 設定不自動產生欄位。
第 2 行 dataGridView1.AllowUserToAddRows = false;dataGridView1 設定不允許使用者在畫面自己產生新的一列資料。
第 3 行 dataGridView1.ReadOnly = true;dataGridView1 設定只讀取不能編輯。
第 4 行 dataGridView1.Columns.Clear();dataGridView1 把所有欄位清除。
第 5 行 dataGridView1.Columns.Add("Account", "帳號");dataGridView1 新增一個欄位,欄位名稱為Account。
第 6 行 dataGridView1.Columns.Add("Code", "代碼");dataGridView1 新增一個欄位,欄位名稱為Code。
第 7 行 dataGridView1.Columns.Add("Type", "類型");dataGridView1 新增一個欄位,欄位名稱為Type。
第 8 行 dataGridView1.Columns.Add("Amount", "金額");dataGridView1 新增一個欄位,欄位名稱為Amount。
第 9 行 dataGridView1.Columns.Add("Time", "時間");dataGridView1 新增一個欄位,欄位名稱為Time。
第 10 行 dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView1 設定欄位自動縮放到讓資料可以剛好顯示,如果沒設定,當資料過長欄位不會自動放大,資料就會被截斷一部分看不到。
第 11 行 dataGridView1.Rows.Clear();DataGridView1 把所有資料刪除,這個非常重要,因為假設沒有做刪除,下次再按按鈕產生的時候,之前產生的舊資料還會在裡面,然後又增加新的資料進來,這樣使用者會跟原本的檔案資料對不上。
新增程式碼:
dataGridView1.Rows.Add(values[0],values[1],values[2],values[3],values[4]);
-------------------------------------------------------------------------------------------------------
第 1 行 dataGridView1.Rows.Add(values[0],values[1],values[2],values[3],values[4]);
原本我們在這邊是用Console.Wriline把values[0]-values[4]串起來顯示在輸出框,現在我們就用dataGridView1.Rows.Add把值放進去,因為我們有5個欄位,所以把txt每一列解析出來的5個數值一列一列加到dataGridView1裡面。
4 . 測試結果
- 直接開始程式並且按下button 1。(圖一)
圖一:
紅色框框就是對應我們程式碼dataGridView1.Columns.Add新增出來的欄位。
藍色框框則是我們在dataGridView1.Rows.Add把資料一列一列加進來,最後畫面就會幫我們顯示資料出來。
有了這個顯示資料的DataGridView元件,資料就能直接顯示給使用者,而且這個元件很方便,在紅色框框的每個欄位你都能用左鍵按下,就會依據欄位做排序,這時候使用者想用金額或是時間做排序就可以很方便找出需要的特定資料了。
(圖一)

結論
之後的練習也會越來越多元件的組合,難度會逐漸提升,不過,有趣度跟成就感會提高更多!我還是會跟著大家一起做,所以不用擔心。
如果覺得到目前為止還是覺得很困難也不用擔心,再回去看之前的章節,不用想一次就懂,複習完有卡住也沒關係,不用一直糾結,下次再複習一次,當做到很多遍的時候自然就會開竅,我也不知道為什麼,但人類就是這麼聰明,久了會自然開竅的,千萬不要一次不懂就沮喪,我們一起加油!














