防止重复条目优秀
我在空闲时间创build一个程序来存储我的交易卡收集信息。 我想知道是否有任何方法来防止使用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"); }
当我尝试添加多张卡片时,上一张卡片的数据被input到excel文件中,所以在我不需要时会显示两次。 谢谢
试试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"); }
它看起来,每当你添加单卡你从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方法。
- 为什么Visual Studio 2012中的Excel工作簿项目的“开发人员”选项卡中没有“控件”部分?
- 在这种情况下我的Excel Range.OutlineLevel为空或System.DBNull?
- 如何获得使用范围内的整个列?
- Apache POI的C#端口会破坏.xlsx中的embedded式OLE对象
- 导出excel错误:您尝试打开FileName的文件的格式与指定的扩展名不同
- 如何把HH:mm:ss格式化为CSV格式的时间,以便将Excel格式化为普通文本?
- 如何打开只读保护的Excel文件?
- ExcelReader,第一行被跳过
- 使用C#windowsforms应用程序导出Microsoft Excel中的数据