在C#中读取Excel
我有这样的C#代码。
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,我收到错误,无法finddata.xls。
我做错了什么?
如果你的xls总是和你的.exe文件位于同一个位置,你可以使用它来得到一个不会被硬编码到build目录的path:
string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string path = Path.Combine(directory, "data.xls");
默认情况下,Excel假定指定文件的文件夹是用户的“我的文档”目录。 如果该文件不存在,则尝试打开文件将失败。
通过指定文件的绝对path,可以确保正在拾取正确的文件。 确保文件存在。
例如-
//file is in D:\TestFolder, and its called abc.xlsx xlApp.Workbooks.Open( @"D:\TestFolder\abc.xlsx", ....
希望能帮助到你。
其他答案显示如何使用保存在特定位置的文件的绝对path。
除非你改变了你的项目设置,否则当你的C#应用程序被构build时,它将被构build在项目下的bin / debug(或bin / release)文件夹中。 当您从IDE运行时,这是您的应用程序的当前工作目录。
尝试使用绝对path,或将data.xls文件移动到应用程序的bin / debug文件夹中。
当您指定绝对path时,请确保在string前加一个@符号以避开斜线。 string path = @“c:\ data \ excel \ data.xls”;
更新:如果你需要使用相对path,我会得到基于相对path的绝对path:
FileInfo fileInfo = new FileInfo("data.xls"); String path = fileInfo.FullName;
这可能更适合获取基于.exe位置的完整path,因为即使CWD与.exe位置不同,它也可以工作。
这取决于你如何运行你的应用程序。 是什么让你认为应用程序正在运行在可执行文件所在的同一目录下? 很可能你只是忘了把工作目录设置正确。 怎么做? 看到这个问答 。
我认为这是Excel文件的位置的问题。 应用程序的工作目录不在.exe文件所在的位置,但可能位于bin / debug文件夹中。
- 当行不是以数字开头时,删除c#中csv文件的行
- 如何读取excel(.xlsm)文件,该文件是使用finansu加载项通过C#
- Excel互操作(Visual Studio C#) – “embedded互操作types”属性
- Microsoft OLEDB错误外部表格不是预期的格式
- 是posible编辑打开excel文件
- 我怎么能做到这一点“select * from 其中列是L”在Excel中使用OLEDB的C#?
- EPPlus:使用外部连接的dynamic数据透视表
- 使用EPPLUS查找某个列是否隐藏在Excel文件中
- ExcelLibrary – 尝试打开Excel电子表格时发生OutOfMemoryException