【问题标题】:open existing excel file in c# desktop application在 c# 桌面应用程序中打开现有的 excel 文件
【发布时间】:2011-09-16 11:34:54
【问题描述】:

当用户按下我的 c# 桌面应用程序中的链接时,我尝试显示现有的 excel 文件。我将我的 excel 文件放入我的项目文件夹中。然而,当我将我的项目设置到不同的计算机上时,excel 文件的路径会改变。在打开 excel 文件时,我找不到与 C:\example.xlsx 等直接路径无关的方法。我怎么解决这个问题?已经谢谢了..

【问题讨论】:

  • 你能用双斜线像这样 "c:\\example.xlsx" 或 @"c:\example.xlsx" 吗?

标签: c# winforms excel desktop-application


【解决方案1】:

我建议使用 System.IO.Path.GetTempFileName() 并将 Excel 文件复制到临时文件中。

或者

使用 Application.StartupPath 属性。

【讨论】:

    【解决方案2】:

    如果这些文件存储在您的应用程序文件夹中,请尝试使用:

    string excelFilePath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "excelfiles\\myexcelfile.xlsx");
    

    否则,如果您已经预定义了一组文件,则需要对文件的存储位置进行一些设置。

    如果您只需要允许用户指定文件的存储位置 - 使用 OpenFileDialog

    【讨论】:

    • 感谢您的解决方案:) 但它在“Application.ExecutablePath”部分出现错误。程序不决定哪个“应用程序”。我尝试了 Microsoft.Office.Interop.Excel.Application.ExecutablePath 但仍然出错。 System.Windows.Forms.Application.ExecutablePath 也无法正常工作。我该怎么办?
    • 试试System.Reflection.Assembly.GetExecutingAssembly().Location
    【解决方案3】:

    两件事:

    如果您不介意 MS GUI 实现,请尝试使用 OpenFileDialog 让您的用户(如果合适的话)选择正确的文件:

    var openFileDialog1 = new OpenFileDialog();
    openFileDialog1.InitialDirectory = "c:\\";
    openFileDialog1.Filter = "xlsx files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
    openFileDialog1.FilterIndex = 1;
    openFileDialog1.RestoreDirectory = true;
    

    编辑: 然后使用openFileDialog1.Filename 获取文件名。

    如果文件始终在同一个关系目录中,则使用相对路径名:

    StreamReader reader = new StreamReader("..\\'folder'\\'file'");

    我发现这两种方法中的一种总是有效的;取决于我是否希望用户选择文件。

    编辑: 获得文件名后,如果需要,请使用 Microsoft.Office.Interop.Excel 命名空间来控制 excel 中的文件。

    希望这会有所帮助!

    【讨论】:

    • 谢谢,但我不能使用 openfiledialog,因为用户可能没有那个 excel 文件..
    • 我以为你说这是一个现有的 excel 文件
    • 是的,但我有,不是用户。所以我想在我的程序设置中向用户提供 excel 文件
    • 但是他们可以从任何地方选择 excel 文件,并且 OpenFileDialog 可以将文件的路径返回给您。然后您将知道该文件在哪里以及要打开什么。如果您使用 Excel Interop 打开它,那么您可以从 C# 中完全控制 Excel 对象。
    猜你喜欢
    • 2011-04-26
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多