【发布时间】:2012-04-02 21:10:58
【问题描述】:
我正在使用 c# 通过 INTEROP 连接到 excel。
如果不知道 INTEROP,这不应该阻止您回答这个问题。我绞尽脑汁想找出以下算法:
假设我有一个字符串string1="ALEX"
我有一个清单:
AAAA
ALEX
ALEX
LIZA
LIZA
或者列表可以是:
ALEX
ALEX
ALEX
LIZA
NANCY
我需要删除所有出现的 NOT== ALEX 字符串
我不想一一做,因为太长了
列表总是排序的,我只想获取我需要删除的字符串列表中的起始位置和结束位置
我有一个循环遍历每一行和循环内部:
if (cell.Value2.ToString()!= email && !foundStart) {
startpos = rCnt;
foundStart = true;
}
else if (cell.Value2.ToString() != email && foundStart) {
endPos = rCnt;
deleteRange = xlWorkSheet.get_Range("A" + startpos + ":" + "CO" + endPos, Type.Missing);
deleteRange = deleteRange.EntireRow;
deleteRange.Delete(Excel.XlDeleteShiftDirection.xlShiftUp);
foundStart = false;
}
这根本不起作用。请帮忙!您的指导可以是简单的算法或我可以使用的特定代码
【问题讨论】:
-
请注意,为了删除任何内容,我需要给出一个删除范围,而不是一个一个地删除元素
-
如果列表是 AAAA、ALEX、ALEX、LIZA,可以删除第一个并给出 1:1 的范围,但如果是 AAA、AAA、ALEX,那么我需要删除 1:2
-
也许我错了,但这个范围并不能说服我。 startPos 和 endPos 应该是行号吧?例如,这给出了一个 get_Range("A1:CO3")?这是一个有效的范围吗?
-
是的,这是一个有效范围,我只是简化了我的问题
标签: c# algorithm excel interop