Сортировать лист по столбцу с помощью Interop - PullRequest
0 голосов
/ 11 апреля 2020

Я нашел различный связанный код на Inte rnet, но, похоже, ничего не работает. Может быть, кто-то может указать на мою ошибку:

// Get a Range of the data to sort
// (I also tried to use _worksheet.UsedRange, but it fails - why?)
var dataToSort = _worksheet.Range["A2", $"Z{lastLine}"];

// Sort range
dataToSort.Sort(_worksheet.Range["A2"]);

Достаточно забавно, что вместо строк возвращаются столбцы ...

На самом деле я хочу написать что-то вроде этого:

_worksheet.Sort(columnIndex: 1);

Но я не могу найти подходящую перегрузку.

Мой лист выглядит так:

1 |      |       |
2 | Z    | Data2 |
3 | A    | Data1 |

Я хочу, чтобы потом он выглядел следующим образом:

1 |      |       |
2 | A    | Data1 |
3 | Z    | Data2 |

(Использование Excel 2019 и Excel Interop 15 для файла xlsx)

1 Ответ

0 голосов
/ 11 апреля 2020

По какой-то причине ориентация сортировки по умолчанию равна xlSortRows. Мне пришлось переключиться на xlSortColumns, и теперь он работает с этим простым oneliner:

_worksheet.UsedRange.Sort(_worksheet.Columns[1], Orientation: XlSortOrientation.xlSortColumns);
...