在c#控制台应用程序中放置.csv文件以便直接访问它的位置

本文关键字:访问 位置 文件 应用程序 控制台 csv | 更新日期: 2023-09-27 18:10:23

我有一个方法,获取excel文件的路径并打开它。

而不是键入整个文件路径(如"C:'Users'…"),我希望能够键入"test.csv"并让程序访问其当前目录下的csv文件。

原因是,如果我希望压缩项目并将其发送给其他人,我希望其他人能够运行它并看到与我相同的结果,而不必去他们的C:'驱动器中的某个地方并手动创建excel文件。

我使用以下代码检查路径是否存在:

if (System.IO.File.Exists(path))

但是,我无法确定哪个目录是默认目录,所以我可以说'method("test.csv")'。

编辑:我将excel文件放在bin'Debug目录中(其中有一堆。dll和。exe文件),但方法调用仍然抛出文件未找到的错误。我得到以下错误:"COMException未处理-找不到'test.csv'。"当我点击查看详细信息时,我看到"System.Runtime.InteropServices.COMException"。

编辑2:以下是我在方法中的内容:

appExcel = new Microsoft.Office.Interop.Excel.Application();

            if (System.IO.File.Exists(path))
            {
                aWorkbook = appExcel.Workbooks.Open(path, true, true);
                aWorkSheet = (_Worksheet)appExcel.ActiveWorkbook.ActiveSheet;
            }
            else
            {
                Console.WriteLine("Unable to open file");
                System.Runtime.InteropServices.Marshal.ReleaseComObject(appExcel);
                appExcel = null;
            }

程序停在'aWorkbook = appExcel.Workbooks '行。使用未处理的COMException打开(path, true, true)' .

在c#控制台应用程序中放置.csv文件以便直接访问它的位置

要获取当前目录路径,可以使用directory . getgetcurrentdirectory()。

此外,您可以通过path. getdirectoryname (assembly . getexecutingassembly (). location)找到程序集的位置,然后使用该路径作为您的基本路径。

例如,对于程序集旁边的file.csv,您可以使用以下命令:

string basePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string filePath = Path.Combine(basePath, "file.csv");

将文件放在bin目录下-即与dll或exe在同一目录下。这样就不需要指定路径了。警告,事情会变得混乱。确保你也考虑过清理。

看一下Application对象——它给了你大量的路径选项…我相信你在问什么,看看StartupPath。

希望这能奏效!

默认为执行路径。我相信它在/bin/Debug或/bin/Release中,这取决于你的构建。

Excel对象使用的目录与c#使用的目录不同。在这一行

appExcel = new Microsoft.Office.Interop.Excel.Application();

如果您在调试模式下查看其属性,可以找到默认目录。有一种方法可以使用宏来更改这个默认目录,但是在if语句中添加以下行可能会更容易:

path = System.IO.Path.GetFullPath(path);

这样,您可以将Excel文件保存在c#默认目录中,并自动找到完整的文件路径。

关于使用宏和本主题的更多详细信息可以在这里找到。