C# 用C语言实现Excel中单元格颜色的排序#

C# 用C语言实现Excel中单元格颜色的排序#,c#,excel,sorting,C#,Excel,Sorting,我的代码崩溃,出现错误消息-“排序引用无效。请确保它位于要排序的数据内,并且第一个“排序依据”框不相同或为空。” 我在按单元格颜色分类。这是我的代码: _wks.Sort.SortFields.Clear(); _wks.Sort.SortFields.Add( DupesColumn, XlSortOn.xlSortOnCellColor, XlSortOrder.xlAscending); _wks.Sort.SortFields[1].SortOnValue.Co

我的代码崩溃,出现错误消息-“排序引用无效。请确保它位于要排序的数据内,并且第一个“排序依据”框不相同或为空。”

我在按单元格颜色分类。这是我的代码:

_wks.Sort.SortFields.Clear();
_wks.Sort.SortFields.Add(
    DupesColumn, 
    XlSortOn.xlSortOnCellColor,
    XlSortOrder.xlAscending);
_wks.Sort.SortFields[1].SortOnValue.Color = XlRgbColor.rgbRoyalBlue;

_wks.Sort.SetRange(DupesColumn.CurrentRegion);
_wks.Sort.Header = XlYesNoGuess.xlYes;
_wks.Sort.MatchCase = false;
_wks.Sort.Orientation = XlSortOrientation.xlSortRows;
_wks.Sort.SortMethod = XlSortMethod.xlPinYin;
_wks.Sort.Apply();
DupeColumn是一个范围。我用的是VS2013。我尝试将范围定义为动态,但没有成功


有什么想法吗?

我想你的代码在网上被破解了:

_wks.Sort.SortFields[1].SortOnValue.Color = XlRgbColor.rgbRoyalBlue;
这是因为对SortFields[1]的引用无效,因为它是基于零的。因此,如果您清除了SortFields,然后只向其中添加了一个,那么它的引用将是0而不是1。因此,以下措施应该有效:

_wks.Sort.SortFields[0].SortOnValue.Color = XlRgbColor.rgbRoyalBlue;

这是因为您设置了方向属性的值

这条线

_wks.Sort.Orientation = XlSortOrientation.xlSortRows;
应该是

_wks.Sort.Orientation = XlSortOrientation.xlSortColumns;

进一步阅读:

1)

它在哪一行中断?您能解决这个问题吗?ThanksIt抛出错误mscorlib.dll中出现“System.Runtime.InteropServices.COMException”类型的第一次意外异常mscorlib.dll中出现“System.Runtime.InteropServices.COMException”类型的未处理异常其他信息:来自HRESULT的异常:0x800A03EC事实上这与以前的错误相同,但是如果没有来自Excel的消息“排序引用无效…”,那么您知道它在哪一行中断吗?它在_wks.sort.SortFields[0]上中断。SortOnValue.Color=XlRgbColor.rgbRoyalBlue@Si8-否,但请查看此处以帮助调试并找到问题: