【发布时间】:2013-08-26 20:40:56
【问题描述】:
我想比较两个输入的 csv 文件,看看是否有添加或删除的行。解决此问题的最佳方法是什么。我没有使用列名,因为所有文件的列名不一致。
private void compare_btn_Click(object sender, EventArgs e)
{
string firstFile = firstExcel_txt.Text;
var results = ReadExcel(openFileDialog1);
string secondFile = secondExcel_txt.Text;
var results2 = ReadExcel(openFileDialog2);
}
阅读:
public object ReadExcel(OpenFileDialog openFileDialog)
{
var _excelFile = new ExcelQueryFactory(openFileDialog.FileName);
var _info = from c in _excelFile.WorksheetNoHeader() select c;
string header1, header2, header3;
foreach (var item in _info)
{
header1 = item.ElementAt(0);
header2 = item.ElementAt(1);
header3 = item.ElementAt(2);
}
return _info;
}
任何关于我如何做到这一点的帮助都会很棒。
【问题讨论】:
-
最好和最准确的方法是将它们都转换为字节数组,并在它们都转换时进行比较。以下链接将帮助您将 excel 工作表转换为字节数组:c-sharpcorner.com/UploadFile/1a81c5/…
-
Masriyah 你只有 3 列或者你只是简化了你的代码?我没有看到您将 excel 文件的内容保存在哪里进行比较
-
或者您可以丢弃列并对其余列进行哈希处理。如果两个文件的哈希值匹配,则它们具有相同的数据,逐字逐句。根据所使用的算法,哈希冲突的可能性很小,但它是如此之小,以至于在你发生冲突之前地狱会冻结。
-
@MauricioGracia 是的,我为这篇文章简化了列 - 如何保留 excel 文件的内容?
-
@Masriyah 我刚刚添加并回答了显示存储和比较 excel 文件文本内容的方法
标签: c# winforms linq excel csv