簡體   English   中英

如何指定打開Excel文件的字符串路徑?

[英]How to specify string path for opening excel file?

知道Excel文件的文件名將始終更改或至少將該文件夾中最近保存的Excel文件插入字符串路徑時,我將如何指定用於打開Excel文件的字符串路徑? 例如,

string PATH = @"C:\myFileNameWillAlwaysCHange.xlms or mostRecentFile.xlms";
string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + PATH + ";Extended Properties=Excel 12.0";

我想知道excel文件所在的文件夾是否將是唯一的excel文件,是否有辦法指定基於該文件夾中任何(唯一)excel文件的路徑並將其插入字符串路徑?

你可以這樣

string PATH = Directory.GetFiles("C:\", "*.xlms").Single();

string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + PATH + ";Extended Properties=Excel 12.0";

如果您不希望它在發現更多文件時引發異常,則將Single替換為First
如果您不希望它在沒有匹配文件的情況下引發異常,請用FirstOrDefault替換Single並添加一個null檢查


編輯

要獲取最新文件:

string PATH = Directory.GetFiles("C:\", "*.xlms").Select(f => new FileInfo(f)).OrderByDescending(fi => fi.CreationTime).First().FullName

根據我從問題中收集的信息,您正在尋找一個Excel文件的路徑,該文件應該是給定目錄中唯一的此類文件。 在這種情況下,您可以執行以下操作:

string path= Directory.GetFiles("C:\YourDirectory", "*.xlms").Single();
string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0";

這將在給定目錄中獲取具有給定文件擴展名的文件,然后通過對其進行Single()調用來斷言只有一個。 如果文件夾中存在多個這樣的文件,那么您將收到InvalidOperationException

編輯要獲取最新文件(我選擇在創建時間前去,但是如果願意,可以使用修改的日期),您可以執行以下操作:

DirectoryInfo info = new DirectoryInfo("C:\YourDirectory");

string path = info.GetFiles("*.xlms").OrderByDescending (fi => fi.CreationTimeUtc).First().FullName;

這沒有異常處理,因此,如果First()調用未返回任何內容,則需要進行處理。

我了解您正在一個文件夾中查找所有Excel文件。

這是代碼:

        try
        {
        string PATH = @"C:\YourFolderPath";
        DirectoryInfo Dir = new DirectoryInfo(PATH);
        FileInfo[] FileList = Dir.GetFiles("*.xls*", SearchOption.AllDirectories );
        foreach (FileInfo FI in FileList )
        {
        Console.WriteLine(FI.FullName);
        }
        }
        catch (Exception ex)
        {
        Console.WriteLine(ex.Message );
        }

在foreach中,您可以放置​​任何所需的代碼

暫無
暫無

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

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