In my previous tutorials, I’d explained how to upload and download files in asp.net, get directory files list with it’s sub-directory and other more cracking tutorials on Files, JavaScript, jQuery in Asp.net with an example code.
Now here in this tutorial, I’ll explain how to get folder files list and export to csv or excel spread sheet in asp.net using c# as well as vb.net.
To get list of file names from the specified directory or folder, we need to use static method Directory.Get Files included in System.IO namespace. This method returns the names of files (including their full path) from the specified directory structure. I’ve already explained list of available folder scanning options to get files including it’s sub-folders, file name with extension here.
Follow two easy steps to achieve this functionality with ease:
Step 1: Copy CsvExport.cs or CsvExport.vb file depends on your programming language. It’s a abstract class needed to export files list into csv or excel sheet.
Step 2: Copy and paste following code to your project wherever you want to implement this functionality. Just make sure to replace your directory paths and include required namespaces within your project.
Get Folder Files List and Export to CSV or Excel in C#
Following is the complete example that I demonstrate to get folder files list and export to csv or excel spread sheet recursively in .net using c#:
{
// replace your base path where to get files list
string baseDirectory = @”C:\MyFolder\”;// get list of files from the specific directory
string[] allFiles = Directory.GetFiles(baseDirectory, “*.*”, SearchOption.AllDirectories)
.OrderByDescending(x => x.Split(‘\\’).Length).ToArray();
if (allFiles.Count() > 0)
{
// replace your target path where to export files list
string baseExportDirectory = @”C:\MyExportFolder\”;
string baseExportPath = baseExportDirectory + “FilesList.csv”;
PreparingFilesList(allFiles, baseDirectory, baseExportDirectory, baseExportPath);
}
}
private static void PreparingFilesList(string[] allFiles, string baseDirectory,
string baseExportDirectory, string baseExportPath)
{
var csvExport = new CsvExport();
try
{
int fileCounter = 0;
foreach (string file in allFiles)
{
fileCounter++;
csvExport.AddRow();
string fileName = Path.GetFileName(file);
string dirPath = GetNeededDirectoriesFromPath(baseDirectory, file);
int dirCounter = 0;
var deepDirectories = dirPath.Split(‘\\’);
foreach (string dir in deepDirectories)
{
dirCounter++;
if (dir.IndexOf(fileName) == -1)
{
csvExport[“Dir “ + dirCounter] = dir;
}
}
csvExport[“File Name”] = fileName;
}
// create export directory if not exists
if (!Directory.Exists(baseExportDirectory))
Directory.CreateDirectory(baseExportDirectory);
// delete old files if already exists
if (File.Exists(baseExportPath))
File.Delete(baseExportPath);
// start exporting files to export directory
csvExport.ExportToFile(baseExportPath);
}
catch (UnauthorizedAccessException UAEx)
{
Console.WriteLine(UAEx.Message);
}
catch (PathTooLongException PathEx)
{
Console.WriteLine(PathEx.Message);
}
}
private static string GetNeededDirectoriesFromPath(string basePath, string path)
{
// normalize paths
basePath = Path.GetFullPath(basePath);
path = Path.GetFullPath(path);
// same path case
if (basePath == path)
return string.Empty;
// path is not contained in basePath case
if (!path.StartsWith(basePath))
return string.Empty;
// extract relative path
if (basePath[basePath.Length – 1] != Path.DirectorySeparatorChar)
{
basePath += Path.DirectorySeparatorChar;
}
return path.Substring(basePath.Length);
}
Get Folder Files List and Export to CSV or Excel in Vb.net
Following is the complete example that I demonstrate to get folder files list and export to csv or excel spread sheet recursively in .net using vb.net:
‘ replace your base path where to get files list
Dim baseDirectory As String = “C:\MyFolder\”‘ get list of files from the specific directory
Dim allFiles() As String = Directory.GetFiles(baseDirectory, “*.*”, SearchOption.AllDirectories)
.OrderByDescending(Function(x) x.Split(“\”c).Length).ToArray()
If allFiles.Count() > 0 Then
‘ replace your target path where to export files list
Dim baseExportDirectory As String = “C:\MyExportFolder\”
Dim baseExportPath As String = baseExportDirectory & “FilesList.csv”
PreparingFilesList(allFiles, baseDirectory, baseExportDirectory, baseExportPath)
End If
End Sub
Private Shared Sub PreparingFilesList(ByVal allFiles() As String, ByVal baseDirectory As String,
ByVal baseExportDirectory As String, ByVal baseExportPath As String)
Dim csvExport = New CsvExport()
Try
Dim fileCounter As Integer = 0
For Each file As String In allFiles
fileCounter += 1
csvExport.AddRow()
Dim fileName As String = Path.GetFileName(file)
Dim dirPath As String = GetNeededDirectoriesFromPath(baseDirectory, file)
Dim dirCounter As Integer = 0
Dim deepDirectories = dirPath.Split(“\”c)
For Each dir As String In deepDirectories
dirCounter += 1
If dir.IndexOf(fileName) = -1 Then
csvExport(“Dir “ & dirCounter) = dir
End If
Next dir
csvExport(“File Name”) = fileName
Next file
‘ create export directory if not exists
If Not Directory.Exists(baseExportDirectory) Then
Directory.CreateDirectory(baseExportDirectory)
End If
‘ delete old files if already exists
If File.Exists(baseExportPath) Then
File.Delete(baseExportPath)
End If
‘ start exporting files to export directory
csvExport.ExportToFile(baseExportPath)
Catch UAEx As UnauthorizedAccessException
Console.WriteLine(UAEx.Message)
Catch PathEx As PathTooLongException
Console.WriteLine(PathEx.Message)
End Try
End Sub
Private Shared Function GetNeededDirectoriesFromPath(ByVal basePath As String,
ByVal path As String) As String
‘ normalize paths
basePath = System.IO.Path.GetFullPath(basePath)
path = System.IO.Path.GetFullPath(path)
‘ same path case
If basePath = path Then
Return String.Empty
End If
‘ path is not contained in basePath case
If Not path.StartsWith(basePath) Then
Return String.Empty
End If
‘ extract relative path
If basePath.Chars(basePath.Length – 1) <> System.IO.Path.DirectorySeparatorChar Then
basePath &= System.IO.Path.DirectorySeparatorChar
End If
Return path.Substring(basePath.Length)
End Function
Example Usage
You can use above example by simply calling the StartProcees() method wherever you want to use.
That’s it, now you’ll be able to get folder files list and export to csv or excel to specified folder path without any trouble.