【问题标题】:Excel Column error when Option Strict on选项严格时 Excel 列错误
【发布时间】:2017-05-26 04:58:08
【问题描述】:

以下代码运行良好。

Option Strict Off
Imports Microsoft.Office.Interop

Public Class Form1

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load

    Dim xlApp As Excel.Application = Nothing
    xlApp = CType(CreateObject("Excel.Application"), Excel.Application)

    xlApp.WindowState = Excel.XlWindowState.xlMinimized

    Dim wb1 As Excel.Workbook
    wb1 = xlApp.Workbooks.Open("C:\MyFolder\Book1.xlsx")

    With CType(wb1.Sheets(1), Excel.Worksheet)
        .Columns(4).Cut()
        .Columns(2).Insert()
    End With

End Sub

End Class

当我打开 Option Strict 时,就会发生错误。 提前致谢。 祝你有美好的一天。

【问题讨论】:

  • 提供的答案将解决错误。只是一个小提示(不是主要的),而不是使用CreateObject,你可以使用Dim xlApp As New Excel.Application
  • 有什么不同吗?
  • 老实说,我实际上并不认为与您的编码方式有关。 Excel 是一个 COM 对象,因此CreateObject 可以工作,但是您可以使用Excel.Application 直接引用它,因此认为它更干净,并且都可以放在一行上。
  • @Jinx88909:不,我不知道它们之间的区别,但我不是专家,因为我没有太多使用 office-interop。我更喜欢 EPPlus 来创建 excel 文件
  • @MichaelScofield:一个不需要 office 许可证的 excel 库,因此您可以在没有许可证的情况下在服务器上生成或处理 excel 文件

标签: vb.net


【解决方案1】:

由于您使用的是 Office-Interop,所有对象的类型都是 Object,因此您需要对它们进行强制转换:

Dim workSheet = CType(wb1.Sheets(1), Excel.Worksheet)
Dim column4Range = CType(workSheet.Columns(4), Excel.Range)
Dim column2Range = CType(workSheet.Columns(2), Excel.Range)
column4Range.Cut()
column2Range.Insert()

(您注意到我更喜欢变量而不是 With 语句)

【讨论】:

  • 已解决。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-26
  • 1970-01-01
  • 2011-10-07
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多