使用 vb.net 在 excel 中添加新列
Using vb.net to add new column in excel
我希望有人能给我一些帮助好吗?我的 excel 工作表包含多个列,我希望做的只是在末尾添加另一列。因此,如果我的工作表包含 20 列数据,我希望将 header 添加到 U1 列,下次如果我的工作表包含 22 列数据,我希望将 header 添加到 V1 等等
现在我已经设法获取下一列字母,但是当我尝试将文本传递到 header 行时,出现错误 Object reference not set to an instance of an object 在下一行
.Range(ColumnIndexToColumnLetter(lColumn + 1) & 1).Value = "TESTT"
非常感谢任何帮助,非常感谢
Dim xls As New Excel.Application
Dim xWorkbook As Excel.Workbook
Dim xWorksheet As Excel.Worksheet
Dim lColumn As Long = 0
xWorkbook = xls.Workbooks.Open("D:\Test.xlsx") 'File Location
xWorksheet = xWorkbook.Sheets(1)
xls.Visible = True
With xWorksheet
If xls.WorksheetFunction.CountA(.Columns) <> 0 Then
lColumn = .Columns.Find(What:="*", _
After:=.Range("A1"), _
LookAt:=Excel.XlLookAt.xlPart, _
LookIn:=Excel.XlFindLookIn.xlFormulas, _
SearchOrder:=Excel.XlSearchOrder.xlByColumns, _
SearchDirection:=Excel.XlSearchDirection.xlPrevious, _
MatchCase:=False).Column
Else
lColumn = 1
End If
End With
With xWorksheet
.Range(ColumnIndexToColumnLetter(lColumn + 1) & 1).Value = "TESTT"
End With
Private Function ColumnIndexToColumnLetter(colIndex As Integer) As String
Dim div As Integer = colIndex
Dim colLetter As String = String.Empty
Dim modnum As Integer = 0
While div > 0
modnum = (div - 1) Mod 26
colLetter = Chr(65 + modnum) & colLetter
div = CInt((div - modnum) \ 26)
End While
Return colLetter
End Function
如果您使用 option strict on 则必须使用 cint 进行转换,通过此更改您的代码运行良好
With xWorksheet
.Range(ColumnIndexToColumnLetter(CInt(lColumn + 1)) & 1).Value = "TESTT"
End With
我希望有人能给我一些帮助好吗?我的 excel 工作表包含多个列,我希望做的只是在末尾添加另一列。因此,如果我的工作表包含 20 列数据,我希望将 header 添加到 U1 列,下次如果我的工作表包含 22 列数据,我希望将 header 添加到 V1 等等
现在我已经设法获取下一列字母,但是当我尝试将文本传递到 header 行时,出现错误 Object reference not set to an instance of an object 在下一行
.Range(ColumnIndexToColumnLetter(lColumn + 1) & 1).Value = "TESTT"
非常感谢任何帮助,非常感谢
Dim xls As New Excel.Application
Dim xWorkbook As Excel.Workbook
Dim xWorksheet As Excel.Worksheet
Dim lColumn As Long = 0
xWorkbook = xls.Workbooks.Open("D:\Test.xlsx") 'File Location
xWorksheet = xWorkbook.Sheets(1)
xls.Visible = True
With xWorksheet
If xls.WorksheetFunction.CountA(.Columns) <> 0 Then
lColumn = .Columns.Find(What:="*", _
After:=.Range("A1"), _
LookAt:=Excel.XlLookAt.xlPart, _
LookIn:=Excel.XlFindLookIn.xlFormulas, _
SearchOrder:=Excel.XlSearchOrder.xlByColumns, _
SearchDirection:=Excel.XlSearchDirection.xlPrevious, _
MatchCase:=False).Column
Else
lColumn = 1
End If
End With
With xWorksheet
.Range(ColumnIndexToColumnLetter(lColumn + 1) & 1).Value = "TESTT"
End With
Private Function ColumnIndexToColumnLetter(colIndex As Integer) As String
Dim div As Integer = colIndex
Dim colLetter As String = String.Empty
Dim modnum As Integer = 0
While div > 0
modnum = (div - 1) Mod 26
colLetter = Chr(65 + modnum) & colLetter
div = CInt((div - modnum) \ 26)
End While
Return colLetter
End Function
如果您使用 option strict on 则必须使用 cint 进行转换,通过此更改您的代码运行良好
With xWorksheet
.Range(ColumnIndexToColumnLetter(CInt(lColumn + 1)) & 1).Value = "TESTT"
End With