我在这有点麻烦。我需要在工作表上设置一个自动过滤器。为此,我通常使用以下代码:
这里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列或更多列上工作吗?
注:我的研究主要集中在网站上,但在超过26列的情况下没有发现任何信息或例子。
AutoFilter类: Aspose.cells
自动过滤数据
Aspose-Cells:数据过滤
发布于 2014-08-14 09:24:49
实际上,我不应该在这里发帖,我应该更仔细地考虑这个问题。实际上,使用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希望这对将来的任何人都有帮助。
https://stackoverflow.com/questions/25303142
复制相似问题