将数字转换为Excel字母列vb.net

我正在尝试使用vb.net写入数据到excel文件。 所以我的function是将数字列转换为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(这是什么时候开始出错)假设返回AZ,但是返回t。

我无法弄清楚我犯了什么错误。 有人可以帮助我或告诉我如何编写一个适当的function,转换数字以使用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 

这将达到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文件。 如果您愿意,您可以使用字母符号表示列,也可以使用数字。

逻辑中有几个缺陷,第二个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