在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。

我做错了什么?

+0

你试过绝对路径吗? – Nayan 2010-10-05 16:11:50

+0

你在哪里保存了data.xls? – jjnguy 2010-10-05 16:12:05

+0

@Toktic,你可能因为反斜杠\而收到编译错误。试着把@符号放在字符串前,它应该是好的。例如@“c:\ whatever \ data.xls” – 2010-10-05 16:17:21

如果你的XLS将始终处于相同的位置您的.exe,你可以用它来得到不会被硬编码到构建目录的路径:

string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
string path = Path.Combine(directory, "data.xls"); 
+0

很好的答案..但可能不是什么OP问!! !!? =) – Nayan 2010-10-05 17:04:28

+0

@Nayan,我觉得他原来的问题并没有使用@,并且在帖子中指定的错误(文件不存在)是因为他没有使用绝对路径。其他人已经回答已经建议他使用绝对路径,我只是想提供这个,所以他可以在不使用xls路径硬编码的情况下从不同文件夹运行他的应用程序。 – 2010-10-05 17:14:41

+0

是的,但现在看来他想要相对路径。 =) – Nayan 2010-10-05 17:16:28

这取决于你如何运行你的应用程序。是什么让你认为应用程序正在运行在可执行文件所在的同一目录中?很可能你只是忘了设置工作目录。怎么做?请参阅this Q&A

+0

我已经设置项目的工作目录bin/release ...并没有。 – 2010-10-05 16:26:21

+0

这是无关紧要的。 – Nayan 2010-10-05 17:01:30

除非您更改了项目设置,否则当您的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位置不同,它也可以工作。

+0

绝对路径工作..但它不适用。我需要亲属。 – 2010-10-05 16:28:01

+0

你可以尝试使用“./data.xls”,但是如果你需要在CWD中找到它,我会用adrift的答案来尝试。 – 2010-10-05 16:31:28

+0

这个更新的答案可能比adrift的答案更适合你,因为它可以从CWD工作,不管它在哪里,而不仅仅是exe文件路径。 – 2010-10-05 16:37:45

我认为这是Excel文件的位置问题。应用程序的工作目录不在.exe文件所在的位置,但可能在bin/debug文件夹中。

+0

我已将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", .... 

希望它能帮助。

其他答案显示如何使用保存在特定位置的文件的绝对路径。

+0

如果您想要相对路径,那么现在您知道如何创建相对路径,以了解默认文件夹是什么。 – Nayan 2010-10-05 17:00:45