如何使用c#读取excel中的特定列,并获取该列中不同单词的出现次数

我想使用C#查找列H中不同单词的出现次数,并忽略空值。 稍后,我必须在列表框中显示输出。 我正在使用Microsoft.Office.Interlop.Excel引用来打开工作簿并访问第一个工作表。

我试了下面的代码:

private void button3_Click(object sender, EventArgs e) { Excel.Application xlApp; Excel.Workbook xlWorkbook; Excel.Worksheet xlWorksheet; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); xlWorkbook = xlApp.Workbooks.Open("ABC.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.get_Item(1); Excel.Range bColumn = xlWorksheet.UsedRange.Columns[4, Type.Missing].Columns.Count; List<string> dataItems = new List<string>(); foreach (object o in bColumn) { Excel.Range row = o as Excel.Range; string s = row.get_Value(null); dataItems.Add(s); } listBox1.DataSource = dataItems; xlWorkbook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlWorksheet); releaseObject(xlWorkbook); releaseObject(xlApp); } 

请帮我拿出代码,并build议最快的方法,因为工作表包含一千多行。

先谢谢您的帮助!

例如,如果您想要在列C中查找所有值,则:

 object[] columnValue = xlWorksheet.Range["C"].Values2; 

columnValue将是excel中的值。

所以如果你在内存中执行它会更快,你可以先使用columnValue.Select(a=>a == null ? null : a.ToString()).ToList()将它转换成一个string列表columnValue.Select(a=>a == null ? null : a.ToString()).ToList()将能够做出各种各样的逻辑,比如使用Distinct来获得不同的值,统计出现的次数等。