防止重复条目优秀

时间:2017-01-15 16:49:10

标签: c# excel visual-studio

我在空闲时间创建一个程序来存储有关我的交易卡集的信息。我想知道有没有办法防止使用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文件中,因此当我不想要它时它会出现两次。感谢

2 个答案:

答案 0 :(得分:1)

请尝试使用File.WriteAllTextFile.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方法。