在C中读取Excel#
我在C#中拥有这样的代码。在C中读取Excel#
xlWorkBook = xlApp.Workbooks.Open("data.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
我有.exe所在的data.xls文件。
当我编译,然后运行.exe,我收到错误,无法找到data.xls。
我做错了什么?
如果你的XLS将始终处于相同的位置您的.exe,你可以用它来得到不会被硬编码到构建目录的路径:
string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string path = Path.Combine(directory, "data.xls");
除非您更改了项目设置,否则当您的C#应用程序生成时,它将被构建在项目下的bin/debug(或bin/release)文件夹中。当您从IDE运行时,这是您的应用程序的当前工作目录。
尝试使用绝对路径,或将data.xls文件移动到应用程序的bin/debug文件夹中。
当您指定绝对路径时,请务必在字符串前加一个@符号以跳出斜线。 string path = @“c:\ data \ excel \ data.xls”;
UPDATE: 如果你需要使用相对路径,我会得到基于相对patht这样的绝对路径:
FileInfo fileInfo = new FileInfo("data.xls");
String path = fileInfo.FullName;
这可能是最好获得基础上的完整路径。 exe位置,因为即使CWD与.exe位置不同,它也可以工作。
绝对路径工作..但它不适用。我需要亲属。 – 2010-10-05 16:28:01
你可以尝试使用“./data.xls”,但是如果你需要在CWD中找到它,我会用adrift的答案来尝试。 – 2010-10-05 16:31:28
这个更新的答案可能比adrift的答案更适合你,因为它可以从CWD工作,不管它在哪里,而不仅仅是exe文件路径。 – 2010-10-05 16:37:45
我认为这是Excel文件的位置问题。应用程序的工作目录不在.exe文件所在的位置,但可能在bin/debug文件夹中。
我已将data.xls复制到所有具有项目的目录..没有任何工作。 – 2010-10-05 16:26:40
默认情况下,Excel假定指定文件的文件夹是用户的“我的文档”目录。如果文件不存在,任何尝试打开文件都将失败。
通过指定文件的绝对路径,可以确保正在拾取正确的文件。确保文件存在。
EG-
//file is in D:\TestFolder, and its called abc.xlsx
xlApp.Workbooks.Open(@"D:\TestFolder\abc.xlsx", ....
希望它能帮助。
其他答案显示如何使用保存在特定位置的文件的绝对路径。
如果您想要相对路径,那么现在您知道如何创建相对路径,以了解默认文件夹是什么。 – Nayan 2010-10-05 17:00:45
你试过绝对路径吗? – Nayan 2010-10-05 16:11:50
你在哪里保存了data.xls? – jjnguy 2010-10-05 16:12:05
@Toktic,你可能因为反斜杠\而收到编译错误。试着把@符号放在字符串前,它应该是好的。例如@“c:\ whatever \ data.xls” – 2010-10-05 16:17:21