在Excel中使用c#对单元格颜色进行排序

本文关键字:颜色 单元格 排序 Excel | 更新日期: 2023-09-27 18:03:13

我的代码崩溃了,错误消息- "排序引用无效。确保它位于要排序的数据中,并且第一个sort By框不是相同的或空白的。"

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

_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。我尝试将范围定义为动态的,没有工作。

任何想法?

在Excel中使用c#对单元格颜色进行排序

我觉得你的代码出问题了:

_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范围。排序失败或重新排列列