2017-01-15 69 views
1

我在空閒時間創建一個程序來存儲有關我的交易卡集合的信息。我想知道是否有任何方法來防止使用File.AppendAllText方法重複進入excel。我當前的代碼是:防止重複條目優於

private void btnAdd_Click(object sender, EventArgs e) 
    { 
     Global.card.Add(new Card(lblCardNoFinal.Text, lblCardNameFinal.Text, lblCardRarityFinal.Text, lblCardTypeFinal.Text)); 
     string file = ("..\\Debug\\LOB.csv"); 
     string delimiter = ","; 

     StringBuilder sb = new StringBuilder(); 

     foreach (Card card in Global.card) 
     { 
      sb.AppendLine(card.CardNo + delimiter + card.CardName + delimiter + card.CardRarity + delimiter + card.CardType); 
     } 

     File.AppendAllText(file, sb.ToString()); 

     MessageBox.Show("Card Added"); 
    } 

當我嘗試添加一卡多號,前面一個的數據輸入到Excel文件,因此出現了兩次,當我不希望它。謝謝

回答

1

嘗試File.WriteAllText改爲。 File.AppendAllText將文本添加到文件的底部。

或者,你可以爲你添加的卡做File.AppendAllLines,像這樣:

private void btnAdd_Click(object sender, EventArgs e) 
{ 
    string file = ("..\\Debug\\LOB.csv"); 
    string delimiter = ","; 

    var card = new Card(lblCardNoFinal.Text, lblCardNameFinal.Text, lblCardRarityFinal.Text, lblCardTypeFinal.Text) 
    Global.card.Add(card); 
    File.AppendAllLines(file, new[] {card.CardNo + delimiter + card.CardName + delimiter + card.CardRarity + delimiter + card.CardType}); 

    MessageBox.Show("Card Added"); 
} 
+0

嗨,我已經嘗試過,但錯誤出現在行 File.AppendAllLines(new [] {file,card.CardNo + delimiter + card.CardName + delimiter + card.CardRarity + delimiter + card.CardType} );它表示沒有重載方法需要1個參數 – fg2210

+0

另外,我不想使用WriteAllText,因爲我不希望先前的數據被覆蓋。感謝您的幫助 – fg2210

+0

再試一次,我把'new [] {'放在錯誤的地方。 – Stuart

0

看起來,只要你添加要追加從Global.card所有的卡單卡,所以我會得到擺脫foreach循環。你可以追加這張單卡。 試着這麼做:

Card newCard = new Card(lblCardNoFinal.Text, lblCardNameFinal.Text, lblCardRarityFinal.Text, lblCardTypeFinal.Text) 
Global.card.Add(newCard) 
File.AppendAllText(file, newCard.CardNo + delimiter + newCard.CardName + delimiter + newCard.CardRarity + delimiter + newCard.CardType); 

你也不需要StringBuilder的,但我會在ToString方法的工作,您的卡類。