Aspose-Cells: автофильтр на листе с более чем 26 столбцами

Я здесь как в затруднительном положении. Мне нужно установить автофильтр на листе. Для этого я обычно использую следующий код:

Здесь Columncount количество столбцов visible

Dim alphabet As String = "abcdefghijklmnopqrstuvwxyz"
myDatasheet.AutoFilter.Range = (String.Format("A1:{0}1", alphabet.Substring(columnCount - 1, 1)))

Это работает до 26 столбцов (что нормально, поскольку алфавит имеет длину 26 букв). Но вдруг у меня 29 столбцов (Columncount = 29). что вызывает argumentoutofrangeexception.

Вопрос. Есть идеи, как изменить код, чтобы он работал с 26 или более столбцами?

Примечание. Я провел исследование в основном на сайте aspose, но не нашел информации или примеров в случае более 26 столбцов.

Класс автофильтра: Aspose.cells

Aspose: данные автофильтра

Aspose-Cells: фильтрация данных


person User999999    schedule 14.08.2014    source источник


Ответы (1)


На самом деле, вместо того, чтобы публиковать здесь, я должен был подумать об этом подробнее. Решение на самом деле довольно простое с использованием MOD-расчета:

Dim alphabet As String = "abcdefghijklmnopqrstuvwxyz"
Dim lastString As String = String.Empty

Dim isDoubledletters As Boolean = (CInt(columnCount / alphabet.Length) > 0)
If Not (isDoubledletters) Then
     myDatasheet.AutoFilter.Range = (String.Format("A1:{0}1", alphabet.Substring(columnCount - 1, 1)))
Else
     Dim myEndFilter As String = alphabet.ToCharArray()(CInt(columnCount / alphabet.Length) - 1).ToString &
     alphabet.ToCharArray()(CInt(columnCount Mod alphabet.Length) - 1).ToString
                myDatasheet.AutoFilter.Range = (String.Format("A1:{0}1", myEndFilter))
End If

Надеюсь, это может быть кому-то полезно в будущем

person User999999    schedule 14.08.2014