使用C#在Excel中对单元格颜色进行sorting

我的代码与错误消息崩溃 – “sorting引用无效。请确保它在您要sorting的数据中,并且第一个sorting方框不是相同或空白。

我正在尝试对单元格颜色进行sorting。 这是我的代码:

_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(); 

DupesColumn是一个范围。 我使用VS 2013.我试图定义范围为dynamic,没有工作。

有任何想法吗?

我认为你的代码正在打破:

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

这将是因为对SortFields [1]的引用无效,因为它是基于零的。 因此,如果你已经清除了SortFields,然后只添加一个,那么它的引用将是0而不是1.因此,以下应该工作:

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

这是因为你设置的Orientation属性的价值。

这条线

 _wks.Sort.Orientation = XlSortOrientation.xlSortRows; 

应该

 _wks.Sort.Orientation = XlSortOrientation.xlSortColumns; 

进一步阅读:
1) F#Excel Range.Sort失败或重新排列列