C# 在c桌面应用程序中打开现有excel文件

C# 在c桌面应用程序中打开现有excel文件,c#,winforms,excel,desktop-application,C#,Winforms,Excel,Desktop Application,当用户按下c桌面应用程序中的链接时,我尝试显示现有的excel文件。我将excel文件放入我的项目文件夹中。然而,当我将我的项目设置到不同的计算机中时,excel文件的路径将会改变。在打开excel文件时,我找不到与直接路径(如C:\example.xlsx)无关的方法。我怎样才能解决这个问题?已经感谢您了。如果这些文件存储在您的应用程序文件夹中,请尝试使用: string excelFilePath = Path.Combine(Path.GetDirectoryName(Applicatio

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

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

string excelFilePath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "excelfiles\\myexcelfile.xlsx");
否则,若您有预定义的文件集,则需要对文件的存储位置进行一些设置


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

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

使用Application.StartupPath属性。

两件事:

如果您不介意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=新建StreamReader..\\'folder'\\'file'

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

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


希望这有帮助

您能像这样使用双斜杠c:\\example.xlsx或@c:\example.xlsx吗?谢谢您的解决方案:但它在Application.ExecutablePath部分中给出了一个错误。程序不决定使用哪个应用程序。我尝试了Microsoft.Office.Interop.Excel.Application.ExecutablePath,但仍然出现错误。System.Windows.Forms.Application.ExecutablePath也无法正常工作。我该怎么办?试试System.Reflection.Assembly.GetExecutionGassembly.Location谢谢,但我不能使用openfiledialog,因为用户可能没有那个excel文件..我以为你说的是现有的excel文件是的,但我有,不是用户。因此,我想在我的程序设置中将excel文件提供给用户,但他们可以从任何地方选择excel文件,OpenFileDialog可以将文件路径返回给您。然后您将知道该文件在哪里以及打开什么。如果您使用Excel Interop打开它,那么您可以从C中完全控制Excel对象。