对于各位专家来说,这可能是一件非常简单的事情,但我对 C#4 和 INTEROP 并不熟悉。因此,我很困惑。这是我的问题。
我有一个包含重复数据的 Excel 列,我想将其修剪为仅具有唯一值。数据如下所示:
ColA ColB
10 Adam
12 Jane
14 Adam
18 Adam
20 Eve
所以,最后我只想要 ColaB 的唯一名称:
Adam
Jane
Eve
我知道我可以通过将所有这些值放入列表中然后向其中添加 Distinct 功能来做到这一点。但我想我做错了什么。无论如何,这是我的程序:
Application XLApp = new Microsoft.Office.Interop.Excel.Application();
var XLBook = XLApp.Workbooks.Open(@"c:\temp\Test.xls", ReadOnly: false);
// Grab the 1st sheet
var XLSheet = (Microsoft.Office.Interop.Excel.Worksheet)XLBook.Worksheets.get_Item(1);
XLApp.Visible = true;
// I think I need help with the following lines
IEnumerable<string> myCol = XLApp.Range["B2", XLApp.Range["B2"].End[XlDirection.xlDown]].Select();
myCol.ToList().Distinct();
XLBook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
((_Application)XLApp).Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(XLApp);
我该如何使用 C#4 对 Excel 执行此操作?
提前致谢。
您可以使用LinqToExcel http://code.google.com/p/linqtoexcel/轻松获取列中的不同值
var excel = new ExcelQueryFactory("worksheetFileName");
var distinctNames = (from row in excel.WorkSheet()
select row["ColB"]).Distinct()
EDIT:
To use Distinct
在 LinqToExcel 中,您必须使用与行数据对应的类。
public class WorksheetRow
{
public string ColA { get; set; }
public string ColB { get; set; }
}
var excel = new ExcelQueryFactory("worksheetFileName");
var distinctNames = (from row in excel.WorkSheet<WorksheetRow>()
select row.ColB).Distinct()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)