excel - 使用 vb.net 在 excel 中添加新列
问题描述
我希望有人能够为我提供一些帮助吗?我的 excel 工作表包含各种列,我希望做的只是在最后添加另一列。因此,如果我的工作表包含 20 列数据,我希望将标题添加到 U1 列,下次如果我的工作表有 22 列数据,我希望将标题添加到 V1,依此类推
现在我已经设法获得下一个列字母但是当我尝试将文本传递到标题行时,我收到一个错误,即对象引用未设置为下一行的对象实例
.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 ,则必须使用 cint 进行转换,通过此更改,您的代码运行良好
With xWorksheet
.Range(ColumnIndexToColumnLetter(CInt(lColumn + 1)) & 1).Value = "TESTT"
End With
推荐阅读
- facebook - 自定义选项卡的测试模式 Facebook 页面
- python - 在列上使用多个条件来分配新列的值
- linux - 如何读取最新创建的文件|选择一个是最新的
- java - ClassNotFoundException(mysql-connector,jdbc)
- python-3.x - Bigquery Python API 不支持数组
- django - 如何将我的对象保存在另一个表中?
- java - 为什么需要自定义异常类
- javascript - 如何在 ace 编辑器中启用每个关键事件的自动完成功能?
- javascript - 当 window.innerwidth 更改时,如何动态更改 html 表格(每行的项目数)布局?
- java - 周围建议中的 HttpServletResponse 为空,我做错了什么?