Сортировка данных в файле Exel с определенной строки

Artur159

Client
Регистрация
10.03.2020
Сообщения
52
Благодарностей
4
Баллы
8
Всем привет! Не подскажете, как можно сделать сортировку данных в таблице, но начиная с определенной строки таблицы, допустим с 10 строки, чтобы верхние строки так и оставались на нужном месте?
 

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63
На ум приходит только через списки. Взятие строк из таблицы, поместить в список, ой там пзд начинается из кубиков. Гуру если снизойдут, мб накидают на коде..
 
  • Спасибо
Реакции: Artur159

Sho

Активный пользователь
Регистрация
08.08.2022
Сообщения
100
Благодарностей
51
Баллы
28
Всем привет! Не подскажете, как можно сделать сортировку данных в таблице, но начиная с определенной строки таблицы, допустим с 10 строки, чтобы верхние строки так и оставались на нужном месте?
На ум приходит только через списки. Взятие строк из таблицы, поместить в список, ой там пзд начинается из кубиков. Гуру если снизойдут, мб накидают на коде..
Да. Собрать в список столбец начиная с 10й строки. Потом просто сортировать список и вставить обратно в таблицу.
В коде это будет выглядеть почти так же, как и на кубиках. Просто кубиками можно не организовывать циклы, так как кубик "запись в список" и есть цикл.
 
  • Спасибо
Реакции: Artur159 и Dome4ta1

Artur159

Client
Регистрация
10.03.2020
Сообщения
52
Благодарностей
4
Баллы
8
Да. Собрать в список столбец начиная с 10й строки. Потом просто сортировать список и вставить обратно в таблицу.
В коде это будет выглядеть почти так же, как и на кубиках. Просто кубиками можно не организовывать циклы, так как кубик "запись в список" и есть цикл.
А тут такая ситуация, в начале не написал, у меня несколько столбцов в таблице. Если я какой то столбец отсортирую в списке, то как с остальными быть, тогда не будут данные соответствовать друг другу?
 

Artur159

Client
Регистрация
10.03.2020
Сообщения
52
Благодарностей
4
Баллы
8
Я пробовал делать так - данные которые должны сортироваться у меня в конце в промежуточную таблицу добавлялись, отдельно от основной, там сортировались, но вот теперь задача, как сцепить временную и основную таблицу. Такого экшена нет, если только кодом на том же C#, но я в него не умею)
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
C#:
var table = project.Tables["data"];//таблица
int sortByCol = 2;//колонка, по которой сортировать. отсчет с 0
int rowLeave = 3;//сколько строк отступить сначала

//заполняю табличку тестовыми данными
table.AddRow(new[]{"asd","fe","edf","dg","db"});
table.AddRow(new[]{"db","df","db","dfb","dfb"});
table.AddRow(new[]{"sa","asd","dbfs","dfbds","dvfb"});
table.AddRow(new[]{"we","we","6","we","we"});
table.AddRow(new[]{"sd","w","1","qwe","e"});
table.AddRow(new[]{"sf","sdf","3","s","sdf"});
table.AddRow(new[]{"sdf","sdf","2","sdf","sdf"});
table.AddRow(new[]{"sdf","1","5","2","2"});
table.AddRow(new[]{"1","2","4","3","hjgsd"});
//
var items = table.GetItems($"{rowLeave}-end", true).Select(x=>x.ToArray()).ToList();
items.OrderBy(cols=>cols[sortByCol]).ToList().ForEach(row=>table.AddRow(row));
1671697377624.png
остается только разобраться, что за данные в колонке, чтобы они сортировались так, как ожидается.
 
Последнее редактирование:
  • Спасибо
Реакции: djaga, Dome4ta1 и Artur159

Artur159

Client
Регистрация
10.03.2020
Сообщения
52
Благодарностей
4
Баллы
8
C#:
var table = project.Tables["data"];//таблица
int sortByCol = 2;//колонка, по которой сортировать. отсчет с 0
int rowLeave = 3;//сколько строк отступить сначала

//заполняю табличку тестовыми данными
table.AddRow(new[]{"asd","fe","edf","dg","db"});
table.AddRow(new[]{"db","df","db","dfb","dfb"});
table.AddRow(new[]{"sa","asd","dbfs","dfbds","dvfb"});
table.AddRow(new[]{"we","we","6","we","we"});
table.AddRow(new[]{"sd","w","1","qwe","e"});
table.AddRow(new[]{"sf","sdf","3","s","sdf"});
table.AddRow(new[]{"sdf","sdf","2","sdf","sdf"});
table.AddRow(new[]{"sdf","1","5","2","2"});
table.AddRow(new[]{"1","2","4","3","hjgsd"});
//
var items = table.GetItems($"{rowLeave}-end", true).Select(x=>x.ToArray()).ToList();
items.OrderBy(cols=>cols[sortByCol]).ToList().ForEach(row=>table.AddRow(row));
Посмотреть вложение 101475
остается только разобраться, что за данные в колонке, чтобы они сортировались так, как ожидается.
Списибо большое тебе, добрый человек) А не подскажите еще такой момент, я поменял в коде на сортировку по убыванию, но он вот так сортирует, я так понимаю это из-за точки он распознает ее как большее число, можно как то в этом коде сразу сделать, чтобы он заменял на запятую перед сортировкой?
101485
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
Списибо большое тебе, добрый человек) А не подскажите еще такой момент, я поменял в коде на сортировку по убыванию, но он вот так сортирует, я так понимаю это из-за точки он распознает ее как большее число, можно как то в этом коде сразу сделать, чтобы он заменял на запятую перед сортировкой?
остается только разобраться, что за данные в колонке, чтобы они сортировались так, как ожидается.
items.OrderByDescending(cols=>decimal.Parse(cols[sortByCol].Replace(".",","))).ToList().ForEach(row=>table.AddRow(row));
1671709513276.png
 
  • Спасибо
Реакции: Artur159 и Dome4ta1

Artur159

Client
Регистрация
10.03.2020
Сообщения
52
Благодарностей
4
Баллы
8
items.OrderByDescending(cols=>decimal.Parse(cols[sortByCol].Replace(".",","))).ToList().ForEach(row=>table.AddRow(row));
Посмотреть вложение 101486
101494

Вот неотсортированная таблица, поставил ваш код, но после сортировки в первый раз ошибку отбивает вот такую:
101495

И часть, которая должна сортироваться удаляется из таблицы
101497
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
Ну, так следите за тем, что у Вас в таблице. Вы ошиблись рядом и код не может преобразовать заголовок в число.
Нужно назначить rowLeave = 9; и sortByCol = 4;
собрал для наглядности по Вашему примеру данных в таблице
1671712457249.png
 
Последнее редактирование:
  • Спасибо
Реакции: Artur159

Artur159

Client
Регистрация
10.03.2020
Сообщения
52
Благодарностей
4
Баллы
8
Ну, так следите за тем, что у Вас в таблице. Вы ошиблись рядом и код не может преобразовать заголовок в число.
Извините, пожалуйста, мой косяк :( Не с того номера строки просто сортировка была в начале. Поправил, теперь работает, спасибо еще раз:bf:
 
  • Спасибо
Реакции: Alexmd

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)