【问题标题】:open excel file without giving the full path in VB.Net打开 excel 文件而不给出 VB.Net 中的完整路径
【发布时间】:2020-03-29 17:13:10
【问题描述】:

我在尝试打开两个仅提供名称而不是完整路径的 Excel 文件时出错(错误:文件不存在),这些文件都与项目位于同一文件夹中(调试)。 我试图不使用静态路径,所以当我更换笔记本电脑时,项目将始终有效。 这是我正在使用的代码。 感谢您的帮助

Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet

    xlApp = New Excel.Application
    xlBook = xlApp.Workbooks.Open(Filename:="c:\EMP_.xlsx", IgnoreReadOnlyRecommended:=True, ReadOnly:=False, Editable:=True)
    xlSheet = xlBook.Worksheets(1)
    If DataGridView1.DataSource IsNot Nothing Then
        Dim i, j As Integer
        For i = 1 To DataGridView1.RowCount - 1
            For j = 1 To DataGridView1.ColumnCount
                xlSheet.Cells(i + 1, j) = DataGridView1.Rows(i - 1).Cells(j - 1).Value
            Next
        Next
        xlApp.Visible = True
        xlApp.UserControl = True
        xlApp.Quit()
        xlApp = Nothing
    Else
        MsgBox("Le tableau est vide")
    End If

【问题讨论】:

  • 为什么不用可执行当前路径?作为Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)AppDomain.CurrentDomain.BaseDirectory。如果是 WinForms 应用程序,您还可以使用 Application.StartupPath 等。或者将文件复制到专用于这些操作的路径之一,如 Application.LocalUserAppDataPathApplication.UserAppDataPathApplication.CommonAppDataPath,当然也可以使用 Path.Combine 来构建最终路径
  • 我使用了 Application.StartupPath 和 \MyFileName.xlsx 并且可以正常工作,谢谢
  • 不要使用 Excel 自动化来读取 Excel 文件,以便在 datagridview 中显示它。 use the ACE database driver 连接到 XLSX 文件并将数据从中提取到数据表中(然后您使用 datagridview1.DataSource = datatable 绑定到 datagridview)或 use EPPlus
  • 我实际上是在使用 xlsx 文件从 Datagridview 导出显示的数据,ACE 数据库驱动程序对我有用吗?

标签: excel vb.net visual-studio


【解决方案1】:

根据 Jimi 的评论,类似这样的内容会读取 exe 旁边的 xlsx:

Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "emp_.xlsx")
Path.Combine(Application.StartupPath, "emp_.xlsx")

始终使用 Path.Combine 来组合路径,而不是字符串连接


您询问了有关将应用程序移至另一台 PC 的问题:

  • 新电脑不需要安装 Vsual Studio - Visual Studio 创建一个独立的 EXE,无需 VS 即可运行
  • 新 PC 需要安装适当版本的 .Net Framework。大多数 Windows 10 电脑都将满足此要求,但用户会看到一条消息,告诉他们如果不满足则安装它
  • 新电脑需要安装 Excel。根据我的评论,如果您不想要这个或者不能保证它(仅仅为了读取一个 excel 文件而支付办公许可证是昂贵且不必要的),您应该使用 ACE 驱动程序或 EPPlus 来读取您的 excel;都不需要 Excel,而且都是免费的

【讨论】:

  • 我使用 path.combine 而不是字符串连接,它可以工作,谢谢,我还有另一个问题:如果我想在另一台没有安装 Visual Studio 的笔记本电脑上使用该应用程序,.exe 文件在调试文件夹中启动应用程序没有任何问题,或者我应该做些什么让它工作?
  • 您确实应该将新问题作为一个新问题提出,但由于它相对微​​不足道,并且作为一个问题本身可能不会受到好评,因此我将在我发布的答案中添加一些信息为此
【解决方案2】:

使用 OpenFileDialog 显示用户界面,您可以选择要打开的 excel 文件。它们易于使用:

Dim ofd as New OpenFileDialog

Dim result = ofd.ShowDialog

If result <> DialogResult.OK Then Return 'if the user cancels

xlApp.Workbooks.Open(Filename:= ofd.Filename ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2014-05-18
    • 2018-04-20
    • 2012-03-01
    相关资源
    最近更新 更多