【问题标题】:Attaching Excel File to finished Visual Basic project将 Excel 文件附加到已完成的 Visual Basic 项目
【发布时间】:2013-12-12 16:15:20
【问题描述】:

我创建了一个包含多种表单的 Visual Basic 项目。在项目中,我将信息写入一个 excel 文件,该文件引用了 excel 文件所在的本地 (C:) 驱动器上的位置。通过引用,我的意思是,我打开一个 excel 实例,十在我的硬盘驱动器上提供 source=local 路径。我的问题是如何将 excel 文件附加到项目中,这样我就不必引用本地位置并且可以在不同的计算机上运行程序。换句话说,我如何将 excel 文件与程序捆绑在一起?一旦我将它“捆绑”到程序中,我将如何更改对 excel 文件的调用?

【问题讨论】:

  • 我正在考虑将 excel 文件包含在程序中,可能在 bin 或类似的东西中。这种事情可能吗?
  • 当人们说添加对我的 excel 文件的引用时,我该怎么做呢?我知道如何进入可以参考库等的参考窗口,但是如何参考我的 excel 文件?

标签: vb.net excel vba


【解决方案1】:

将 excel 文件添加到项目中。转到解决方案资源管理器并右键单击 excel 文件并选择属性。将复制到输出目录更改为始终复制。现在该文件将与您的 exe 位于同一目录中。可以使用Reflection.Assembly.GetExecutingAssembly获取目录。

要将文件添加到项目中:

右键单击项目>添加>现有项目>您的Excel文件.xls

在构建中包含文件:

右键单击文件>属性>复制到输出目录。将此值设置为“始终复制”或“如果更新则复制”。

获取excel文件路径的代码如下:

Dim exeDir As New IO.FileInfo(Reflection.Assembly.GetExecutingAssembly.FullName)
Dim xlPath = IO.Path.Combine(exeDir.DirectoryName, "Your Excel File.xls")

xlPath 现在应该是 excel 文件的完整路径。

【讨论】:

  • 在我完成程序后,这是否允许我添加到文件中?那么我必须将我的 excel 文件保存在哪里?
  • 编译的时候会和你的exe在同一个文件夹里。
  • 所以无论我在哪里完成定稿/发布的程序,它都会有 excel 文件?另外,如何将excel文件添加到项目中?注意:我要上班,所以我要在 6 小时后才能进一步回复,但我今晚回来后会进一步回复。非常感谢您迄今为止的帮助!
  • 我包含了我的 excel 文件并更改了属性。现在我的下一个问题是我应该把你给我的那段代码放在我的程序中的什么地方?我猜它以引用 excel 文件的任何形式出现,或者我可以将其声明为全局暗淡(我猜是我的选择)。现在,我现在将如何处理程序中的 excel 文件。例如,目前我使用诸如“sheet.Range(“A1”).Offset(row, column).Value() 之类的命令来处理文件。我会用 xlPath 替换工作表还是把 xlPath.sheet....... 工作表是 excel 工作表的声明方式。
  • Dim excel_app As Excel.Application Dim workbook As Excel.Workbook Dim sheet_name As String Dim sheet As Excel.Worksheet ' 获取 Excel 应用程序对象。 excel_app = New Excel.Application ' 使 Excel 可见(可选)。 excel_app.Visible = False ' 打开工作簿。 workbook = excel_app.Workbooks.Open("Path") sheet_name = "Sheet1" sheet = excel_app.Worksheets("Sheet1")
【解决方案2】:

用户评论后的修改回复

1)首先创建一个设置(命名为MyExcelFile)来保存您的excel文件的名称和路径。

2) 现在您可以使用My.Settings.MyExcelFile 来引用您的excel 文件路径。

3) 如果在所需位置找不到 excel 文件,您可以通过打开文件打开对话框并要求用户指定文件位置来重置它。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If Not IO.File.Exists(My.Settings.MyExcelFile) Then
        Dim ofd As New OpenFileDialog
        ofd.Filter = "Excel Files (*.xls, *.xlsx)|*.xls; *.xlsx"
        ofd.Title = "Specify Excel File Location"
        If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
            My.Settings.MyExcelFile = ofd.FileName
            My.Settings.Save()
        End If
    End If
End Sub

【讨论】:

  • 我需要能够在运行时对其进行修改,以便将下一条记录添加到 Excel 工作表中。那我该怎么做呢?
  • 如果您需要在运行时修改它,那么您需要保留物理文件(意味着不嵌入到您的 EXE 中)。如果您只关心引用路径,那么在Settings 中创建一个您想要的名称的条目;然后在您的代码中以My.Settings.YourSettingName 的身份访问它。
  • 我正在寻找更多关于将文件附加到程序的方面。我正在考虑某些程序如何包含存放程序使用的文件的垃圾箱。我怎么能这样做?
  • 为此,您可以结合我建议的两种方法。首先在您的项目资源 (My.Resources) 中包含一个预定义文件,然后在项目设置 (My.Settings) 中为文件名定义一个设置。如果您的My.Settings.FileName 标识的文件存在,则使用该文件。否则从您的资源中提取到该位置。
  • 我已经能够按照 Jeff 的指示附加文件,但感谢您提供帮助
【解决方案3】:

我认为我并没有真正理解你的意思,但是如果你需要在应用程序中一键打开 excel 文件并且你不想写 excel 文件的路径(可能是因为你希望你的应用程序可移植)所以答案是

  1. 将excel文件放在项目文件夹的任意位置
  2. 添加现有项目 (*.* filter) 并选择 excel 文件
  3. 更改 excel 文件构建操作的属性:资源复制到输出目录:始终复制
  4. 打开解决方案的属性并单击资源将文件拖放
  5. 使用 (using system.reflection & using system.io & using system.resources)

    然后这样写代码

    string sPath = Path.GetTempFileName();
    File.WriteAllBytes(sPath, Properties.Resources.excel File name here);
    

然后将其 (spath) 用作您的路径,这样您就可以使用其中的 excel 文件更改项目位置,并且它仍然可以工作而无需为其编写恒定路径

【讨论】:

    猜你喜欢
    • 2011-08-08
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多