0

我在这里有点束缚。我需要在工作表上设置自动过滤器。为此,我通常使用以下代码:

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:数据过滤

4

1 回答 1

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

希望这对将来的任何人都有用

于 2014-08-14T09:24:49.437 回答