将数字转换为 Excel 字母列 vb.net
Converting Numbers to Excel Letter Column vb.net
我正在尝试使用 vb.net 将数据写入 excel 个文件。所以我的函数将数字列转换为 excel 字母列。
Public Function ConvertToLetter(ByRef iCol As Integer) As String
Dim Reminder_Part As Integer = iCol Mod 26
Dim Integer_Part As Integer = Int(iCol / 26)
If Integer_Part = 0 Then
ConvertToLetter = Chr(Reminder_Part + 64)
ElseIf Integer_Part > 0 And Reminder_Part <> 0 Then
ConvertToLetter = Chr(Integer_Part + 64) + Chr(Reminder_Part + 64)
ElseIf Integer_Part > 0 And Reminder_Part = 0 Then
ConvertToLetter = Chr(Integer_Part * 26 + 64)
End If
End Function
该函数适用于任何其他数字。
例如,
- 1 => A
- 2 => B
- ...
- 26 => Z
- 27 => AA
- ...
- 51 => AY
- 52 => t(这里是它开始出错的时候)它应该是 return AZ,但是它 returned t。
我想不通我哪里出错了。有人可以帮助我或告诉我如何使用 vb.net 编写将数字转换为 excel 字母列的正确函数。
这应该可以满足您的要求。
Private Function GetExcelColumnName(columnNumber As Integer) As String
Dim dividend As Integer = columnNumber
Dim columnName As String = String.Empty
Dim modulo As Integer
While dividend > 0
modulo = (dividend - 1) Mod 26
columnName = Convert.ToChar(65 + modulo).ToString() & columnName
dividend = CInt((dividend - modulo) / 26)
End While
Return columnName
End Function
逻辑上有几个缺陷,第二个 else 子句不是必需的,操作应该是零基础的。
Public Function ConvertToLetter(ByRef iCol As Integer) As String
Dim col As Integer = iCol - 1
Dim Reminder_Part As Integer = col Mod 26
Dim Integer_Part As Integer = Int(col / 26)
If Integer_Part = 0 Then
ConvertToLetter = Chr(Reminder_Part + 65)
Else
ConvertToLetter = Chr(Integer_Part + 64) + Chr(Reminder_Part + 65)
End If
End Function
这最多可以处理 52 个。
Public Function ConvertToLetterA(ByRef iCol As Integer) As String
Select Case iCol
Case 1 To 26
Return Chr(iCol + 64)
Case 27 To 52
Return "A" & Chr(iCol - 26 + 64)
End Select
End Function
附带说明一下,您可以通过 .Net 使用 EPPlus 直接编写 XLSX 文件。如果愿意,您可以对列使用字母表示法,也可以使用数字。
我正在尝试使用 vb.net 将数据写入 excel 个文件。所以我的函数将数字列转换为 excel 字母列。
Public Function ConvertToLetter(ByRef iCol As Integer) As String
Dim Reminder_Part As Integer = iCol Mod 26
Dim Integer_Part As Integer = Int(iCol / 26)
If Integer_Part = 0 Then
ConvertToLetter = Chr(Reminder_Part + 64)
ElseIf Integer_Part > 0 And Reminder_Part <> 0 Then
ConvertToLetter = Chr(Integer_Part + 64) + Chr(Reminder_Part + 64)
ElseIf Integer_Part > 0 And Reminder_Part = 0 Then
ConvertToLetter = Chr(Integer_Part * 26 + 64)
End If
End Function
该函数适用于任何其他数字。
例如,
- 1 => A
- 2 => B
- ...
- 26 => Z
- 27 => AA
- ...
- 51 => AY
- 52 => t(这里是它开始出错的时候)它应该是 return AZ,但是它 returned t。
我想不通我哪里出错了。有人可以帮助我或告诉我如何使用 vb.net 编写将数字转换为 excel 字母列的正确函数。
这应该可以满足您的要求。
Private Function GetExcelColumnName(columnNumber As Integer) As String
Dim dividend As Integer = columnNumber
Dim columnName As String = String.Empty
Dim modulo As Integer
While dividend > 0
modulo = (dividend - 1) Mod 26
columnName = Convert.ToChar(65 + modulo).ToString() & columnName
dividend = CInt((dividend - modulo) / 26)
End While
Return columnName
End Function
逻辑上有几个缺陷,第二个 else 子句不是必需的,操作应该是零基础的。
Public Function ConvertToLetter(ByRef iCol As Integer) As String
Dim col As Integer = iCol - 1
Dim Reminder_Part As Integer = col Mod 26
Dim Integer_Part As Integer = Int(col / 26)
If Integer_Part = 0 Then
ConvertToLetter = Chr(Reminder_Part + 65)
Else
ConvertToLetter = Chr(Integer_Part + 64) + Chr(Reminder_Part + 65)
End If
End Function
这最多可以处理 52 个。
Public Function ConvertToLetterA(ByRef iCol As Integer) As String
Select Case iCol
Case 1 To 26
Return Chr(iCol + 64)
Case 27 To 52
Return "A" & Chr(iCol - 26 + 64)
End Select
End Function
附带说明一下,您可以通过 .Net 使用 EPPlus 直接编写 XLSX 文件。如果愿意,您可以对列使用字母表示法,也可以使用数字。