ClosedXML Excel фильтрует строки по значениям в нескольких столбцахC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ClosedXML Excel фильтрует строки по значениям в нескольких столбцах

Сообщение Anonymous »

У меня есть файл Excel с несколькими тысячами строк и столбцов до «BP».
Мне нужно отфильтровать все эти строки по определенным значениям в столбцах C и BP.
Я протестировал функциональность фильтра в ClosedXML в соответствии с приведенным ниже кодом.

Когда я применяю фильтр к одному столбцу, все работает хорошо, и данные сохраняются. в новом файле.

Когда я пытаюсь применить два фильтра, применяется тот, который выполняется последним.

Я пытался использовать рабочий лист как диапазон/таблицу, та же проблема с фильтрацией.

В конце концов я создал выражение «строки», оно работает, но первая строка (заголовок) отфильтровывается.

Код: Выделить всё

public static void Filter(string source, string newFile)
{
using (var workbook = new XLWorkbook(source))
{
IXLWorksheet worksheet = workbook.Worksheet(1);

int salesFoundCell = worksheet.FirstRow().Cells().First(c => c.Value.ToString() == "Sales Order Description").Address.ColumnNumber;
int revenueFoundCell = worksheet.FirstRow().Cells().First(c => c.Value.ToString() == "Revenue recognition date").Address.ColumnNumber;

//worksheet.RangeUsed().SetAutoFilter().Column(salesFoundCell).EqualTo("Equipment Sale");
//worksheet.RangeUsed().SetAutoFilter().Column(revenueFoundCell).EqualTo("00.00.0000");

//var rows = worksheet.RowsUsed().Where(r => r.CellsUsed().Any(c => c.GetString().Contains("Equipment Sale")) &&
//                                          r.CellsUsed().Any(c => c.GetString().Contains("00.00.0000")));

Console.WriteLine(rows.Count());

//workbook.SaveAs(newFile);
}
}
Я также попробовал метод, опубликованный в вики ClosedXML, при котором вы сохраняете лист как MemoryStream, повторно применяете фильтр и затем сохраняете его в новый файл. >

Это короткая версия:

Код: Выделить всё

public void Create(string filePath)
{
var wb = new XLWorkbook();
IXLWorksheet ws;

#region Multi Column
String multiColumn = "Multi Column";
ws = wb.Worksheets.Add(multiColumn);

// Add filters
ws.RangeUsed().SetAutoFilter().Column(2).EqualTo(3).Or.GreaterThan(4);
ws.RangeUsed().SetAutoFilter().Column(3).Between("B", "D");

// Sort the filtered list
ws.AutoFilter.Sort(3);
#endregion

using (var ms = new MemoryStream())
{
wb.SaveAs(ms);

var workbook = new XLWorkbook(ms);

#region Multi Column
workbook.Worksheet(multiColumn).AutoFilter.Column(3).EqualTo("E");
workbook.Worksheet(multiColumn).AutoFilter.Sort(3, XLSortOrder.Descending);
#endregion

workbook.SaveAs(filePath);
ms.Close();
}
}
Я выполнил несколько итераций следующих двух выражений:

Код: Выделить всё

worksheet.RangeUsed().SetAutoFilter().Column(salesFoundCell).EqualTo("Equipment Sale");
worksheet.RangeUsed().SetAutoFilter().Column(revenueFoundCell).EqualTo("00.00.0000");
Я пробовал фильтровать непосредственно по столбцам, по диапазону, по таблице, пытаясь скрыть строки, в которых нет необходимых значений.

Все это либо фильтруется по одному столбцу, либо не фильтруется вообще.

Выражение "expression.AddFilter(some value).AddFilter( какое-то другое значение);" не помогает, поскольку я не пытаюсь добавить несколько фильтров в один и тот же столбец.

Функция «И/или» делает то же самое: несколько фильтров в одном столбце.< /p>

Удалось ли кому-нибудь отфильтровать данные по значениям в нескольких столбцах?

Мы будем очень признательны за любые советы.>

Подробнее здесь: https://stackoverflow.com/questions/433 ... le-columns
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Закрытые строки фильтров Excel по значениям в нескольких столбцах
    Anonymous » » в форуме C#
    0 Ответы
    92 Просмотры
    Последнее сообщение Anonymous
  • Закрытые строки фильтров Excel по значениям в нескольких столбцах
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Экспортируйте файлы в файл Excel XLSX с помощью C# и ClosedXML.Excel.
    Anonymous » » в форуме C#
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с экспортом данных в Excel с помощью ClosedXML и шаблона XLSX
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Столбцы защищены от записи, но разрешена автоматическая фильтрация в Excel, созданном с помощью ClosedXML.
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»