[英]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.