Пример #1
0
        /// <summary>
        /// Sorts the values in the range.
        /// </summary>
        /// <param name="key">
        /// A 1-by-1 range. If we are sorting by rows, then the row of this range is the row
        /// that will end up sorted. If we are sorting by columns, then the column of this range
        /// is the column that will end up sorted.
        /// </param>
        /// <param name="order">
        /// Ascending or descending.
        /// </param>
        /// <param name="orientation">
        /// Whether we are sorting by rows or columns. Sorting by rows means that the columns
        /// remain internally the same but are rearranged relative to each other. Sorting by
        /// columns means that the rows remain internally the same but are rearranged relative
        /// to each other.
        /// </param>
        public void Sort(
            Range key,
            XlSortOrder order,
            XlSortOrientation orientation = XlSortOrientation.xlSortRows
            )
        {
            if (!key.IsOneByOne())
            {
                throw new Exception("Sort is currently only implemented for 1-by-1 ranges.");
            }

            // Sorting activates the worksheet, if it wasn't already active.
            _worksheet.Activate();

            bool sortByColumn = orientation == XlSortOrientation.xlSortColumns;
            int  keyIndex     = sortByColumn ? key._minColIndex : key._minRowIndex;
            bool ascending    = order == XlSortOrder.xlAscending;

            _document.Sort(
                _minRowIndex,
                _minColIndex,
                _maxRowIndex,
                _maxColIndex,
                sortByColumn,
                keyIndex,
                ascending
                );
        }
Пример #2
0
 public object SortSpecial(XlSortMethod SortMethod, object Key1, XlSortOrder Order1, object Type, object Key2, XlSortOrder Order2, object Key3, XlSortOrder Order3, XlYesNoGuess Header, object OrderCustom, object MatchCase, XlSortOrientation orientation, XlSortDataOption DataOption1, XlSortDataOption DataOption2, XlSortDataOption DataOption3)
 {
     throw new NotImplementedException();
 }
Пример #3
0
        /// <summary>
        /// Method sort sheet.
        /// </summary>
        /// <param name="workSheet">Work Sheet.</param>
        /// <param name="maxLine">Max Line.</param>
        /// <param name="sortableSheet">Sortable Sheet.</param>
        /// <param name="xlSortOrder">Sort Order.</param>
        private static void SortSheet(Worksheet workSheet, int maxLine, int sortableSheet, XlSortOrder xlSortOrder)
        {
            var rngSort = workSheet.get_Range("A1", $"F{maxLine}");

            rngSort.Sort(rngSort.Columns[sortableSheet, Type.Missing], xlSortOrder,
                         null, Type.Missing, XlSortOrder.xlAscending,
                         Type.Missing, XlSortOrder.xlAscending,
                         XlYesNoGuess.xlYes, Type.Missing, Type.Missing,
                         XlSortOrientation.xlSortColumns);
        }
        /// <summary>使用东亚排序方法对区域或数据透视表进行排序;或者如果区域中只包含一个单元格,则对活动区域使用本方法。例如,日文排序方法是按照假名音节表进行排序的。
        /// </summary>
        /// <param name="SortMethod">排序类型。这些常量中的某些可能不可用,这取决于选择或安装的语言支持(例如,美国英语)。</param>
        /// <param name="Key1">第一个排序字段,可以是文本(数据透视表字段或区域名)也可以是 Range 对象(例如,“Dept”或 Cells(1, 1))。</param>
        /// <param name="Order1">在 Key1 参数中指定的字段或区域的排序顺序。</param>
        /// <param name="Type">指定要排序的元素。仅在对数据透视表排序时才使用该参数。</param>
        /// <param name="Key2">第二个排序字段,可以是文本(数据透视表字段或区域名)也可以是 Range 对象。如果省略该参数,则没有第二个排序字段。对数据透视表进行排序时,不能使用该参数。</param>
        /// <param name="Order2">在 Key2 参数中指定的字段或区域的排序顺序。对数据透视表进行排序时,不能使用该参数。</param>
        /// <param name="Key3">第三个排序字段,可以是文本(区域名)也可以是 Range 对象。如果省略该参数,则没有第三个排序字段。对数据透视表进行排序时,不能使用该参数。</param>
        /// <param name="Order3">在参数 Key3 中指定的字段或区域的排序顺序。对数据透视表进行排序时,不能使用该参数。</param>
        /// <param name="Header">指定第一行是否包含标题。对数据透视表进行排序时,不能使用该参数。</param>
        /// <param name="OrderCustom">该参数是从 1 开始的整数,指定了在自定义排序次序列表中的偏移量。如果省略 OrderCustom,则使用常规排序顺序。</param>
        /// <param name="MatchCase">如果为 True,则进行区分大小写的排序;如果为 False,则排序时不区分大小写。对数据透视表进行排序时,不能使用该参数。</param>
        /// <param name="Orientation">排序方向。</param>
        /// <param name="DataOption1">指定如何对 Key1 中的文本进行排序。对数据透视表进行排序时,不能使用该参数。</param>
        /// <param name="DataOption2">指定如何对 Key2 中的文本进行排序。对数据透视表进行排序时,不能使用该参数。</param>
        /// <param name="DataOption3">指定如何对 Key3 中的文本进行排序。对数据透视表进行排序时,不能使用该参数。</param>
        public dynamic SortSpecial(XlSortMethod SortMethod = XlSortMethod.xlPinYin, object Key1 = null, XlSortOrder Order1 = XlSortOrder.xlAscending, object Type = null, object Key2 = null, XlSortOrder Order2 = XlSortOrder.xlAscending, object Key3 = null, XlSortOrder Order3 = XlSortOrder.xlAscending, XlYesNoGuess Header = XlYesNoGuess.xlNo, object OrderCustom = null, object MatchCase = null, XlSortOrientation Orientation = XlSortOrientation.xlSortRows, XlSortDataOption DataOption1 = XlSortDataOption.xlSortNormal, XlSortDataOption DataOption2 = XlSortDataOption.xlSortNormal, XlSortDataOption DataOption3 = XlSortDataOption.xlSortNormal)
        {
            _objaParameters = new object[15] {
                SortMethod,
                Key1 == null ? System.Type.Missing : Key1,
                Order1,
                Type == null ? System.Type.Missing : Type,
                Key2 == null ? System.Type.Missing : Key2,
                Order2,
                Key3 == null ? System.Type.Missing : Key3,
                Order3,
                Header,
                OrderCustom == null ? System.Type.Missing : OrderCustom,
                MatchCase == null ? System.Type.Missing : MatchCase,
                Orientation,
                DataOption1,
                DataOption2,
                DataOption3
            };

            return _objRange.GetType().InvokeMember("SortSpecial", BindingFlags.InvokeMethod, null, _objRange, _objaParameters);
        }