我在空闲时间创建一个程序来存储有关我的交易卡集的信息。我想知道有没有办法防止使用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文件中,因此当我不想要它时它会出现两次。感谢
答案 0 :(得分: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");
}
答案 1 :(得分: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,但我会为你的Card类使用ToString方法。