【问题标题】:Can I get information from Excel without Microsoft Interop我可以在没有 Microsoft Interop 的情况下从 Excel 获取信息吗
【发布时间】:2013-01-23 15:53:16
【问题描述】:

所以,我在工作中使用 vb 能做的事情非常有限。他们为我设置的 vb.net 版本没有使用 microsoft.office 的文件,并且他们不会授予我下载它们的权限。有没有其他方法可以提取电子表格 E 列中的所有信息?

感谢您提供的任何见解。

【问题讨论】:

  • 如果他们不给他们的程序员他们需要的工具,他们就不配拥有程序员。
  • You can。只需关闭Option Strict
  • 您是否有机会瞄准 .Net 客户端框架?

标签: vb.net excel


【解决方案1】:

您可以使用late binding。从链接页面:

Private Sub Button1_Click(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles Button1.Click
    Dim objApp As Object
    Dim objBook As Object
    Dim objBooks As Object
    Dim objSheets As Object
    Dim objSheet As Object
    Dim range As Object

    ' Instantiate Excel and start a new workbook.
   objApp = CreateObject("Excel.Application")
    objBooks = objApp.Workbooks
    objBook = objBooks.Add
    objSheets = objBook.Worksheets
    objSheet = objSheets.Item(1)

    range = objSheet.Range("A1")

    'Set the range value.
    range.Value = "Hello, World!"

    'Return control of Excel to the user.
    objApp.Visible = True
    objApp.UserControl = True
End Sub

【讨论】:

  • @jkeefe - 请注意,您应该考虑一般的后期绑定邪恶(因为它会妨碍编译器捕获拼写错误的能力等)。由于在这种情况下有必要完成您的工作,因此请尝试完全隔离处理 Excel 的代码,并在其他任何地方保留 Option Strict
  • 我不会称之为邪恶。这不是 首选最简单 方式,您必须确保彻底测试您的代码,并且只使用常用版本的 Office 中可用的功能,而不是不过,最新和最伟大的。 :-) 当没有可用于早期绑定的信息或您不确定用户系统上是否安装了某些东西时,很多时候后期绑定是必要的。
  • 我不知道这是可能的,非常酷,它是 VB.Net 独有的吗?
  • @JMK: No. :-) 它适用于任何可以使用 COM 和IDispatch 接口的语言。转到我链接的页面,将页面标题复制并粘贴到搜索框中,然后将Visual Basic 更改为C#,您会在那里找到相同的文章。你可以在 C++ 中做同样的事情(当然更多的代码)。除了与 MS Office 一起工作(例如 Windows Shell)之外,它还可以用于更多方面。
  • 今天我学到了一些新东西,谢谢!补充一下,如果 OP 实际上在他们的机器上安装了 Excel,并且他们没有在引用对话框中看到 Interop 库,那可能只是因为他们的目标是客户端框架而不是完整框架。
【解决方案2】:

@KenWhite 给出了关于没有 Interop 的 Excel 的正确答案,但您真正需要做的就是更改目标框架以访问库。

你可以这样做。首先,在解决方案资源管理器中右键单击您的项目,然后转到 Properties。此时,您应该会看到一个项目属性页面,其中包含 Target framework 下拉框,将其从 .NET Framework xx (Client Profile) 更改为 .NET框架 xx.

现在,您只需在属性窗口中选择 References 选项卡,点击 Add 并添加 Microsoft.Office.Interop.Excel .

【讨论】:

    猜你喜欢
    • 2016-05-03
    • 2013-03-16
    • 2018-11-27
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    相关资源
    最近更新 更多