簡體   English   中英

用C#讀取Excel

[英]Reading Excel in C#

我在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時,收到的錯誤是找不到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文件夾中。

當您指定絕對路徑時,請確保在字符串前面加上@符號以避開斜杠。 字符串路徑= @“ c:\\ data \\ excel \\ data.xls”;

更新:如果您需要使用相對路徑,我將以這種方式基於相對路徑獲得絕對路徑:

FileInfo fileInfo = new FileInfo("data.xls");
String path = fileInfo.FullName;

這可能比基於.exe位置獲取完整路徑更可取,因為即使CWD與.exe位置不同,它也將起作用。

默認情況下,Excel假定指定文件的文件夾為用戶的“我的文檔”目錄。 如果文件不存在,則任何打開它的嘗試都將失敗。

通過指定文件的絕對路徑,可以確保選擇了正確的文件。 確保文件存在。

例如-

//file is in D:\TestFolder, and its called abc.xlsx
xlApp.Workbooks.Open( @"D:\TestFolder\abc.xlsx", ....

希望能幫助到你。

其他答案顯示了如何使用保存在特定位置的文件的絕對路徑。

這取決於您運行應用程序的精確程度。 是什么讓您認為應用程序在可執行文件所在的同一目錄中運行? 您很可能只是忘記了正確設置工作目錄。 怎么做? 請參閱此問答

我認為這是Excel文件位置的問題。 應用程序的工作目錄不在.exe文件所在的位置,而可能在bin / debug文件夾中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM