gpt4 book ai didi

c# - 遍历目录中的子目录

转载 作者:太空狗 更新时间:2023-10-30 00:04:43 27 4
gpt4 key购买 nike

我有一个目录“文件夹”,该目录中有许多子目录。每个子目录中都有许多图像。我想遍历“文件夹”目录中的子目录,然后遍历每个目录中的所有图像以将图像导出到 Excel,每个子目录中的图像都在一个 Excel 工作表中。

例如如果我有十个子目录,我应该有一个包含十个 Excel 工作表的 Excel 工作簿,那么在每个 Excel 工作表中都会有来自每个子目录的图像。

这是我尝试过的方法,但图像只出现在 Worksheet1 而不是所有工作表上:

   public void ExportToExcel()
{
//for export
ExcelPackage objExcelPackage = new ExcelPackage(); //create new workbook

string[] filesindirectory = Directory.GetDirectories(Server.MapPath("~/Folder"));
int count = 0;
int count1 = 0;
int x = 25;
int finalValue = 0;

foreach (string subdir in filesindirectory)
{
count++;
ExcelWorksheet ws = objExcelPackage.Workbook.Worksheets.Add("Worksheet" + count); //create new worksheet

foreach (string img in Directory.GetFiles(subdir))
{
count1++;
System.Web.UI.WebControls.Image TEST_IMAGE = new System.Web.UI.WebControls.Image();
System.Drawing.Image myImage = System.Drawing.Image.FromFile(img);
var pic = ws.Drawings.AddPicture(count1.ToString(), myImage);
// Row, RowoffsetPixel, Column, ColumnOffSetPixel
if (count1 > 1)
{
pic.SetPosition(finalValue, 0, 2, 0);
finalValue += (x + 1); // Add 1 to have 1 row of empty row
}
else
{
pic.SetPosition(count1, 0, 2, 0);
finalValue = (count1 + x) + 1; // Add 1 to have 1 row of empty
}
}
}

var filepath = new FileInfo(@"C:\Users\user\Desktop\Test\" + datetime.ToString("dd-MM-yyyy_hh-mm-ss") + ".xlsx");
objExcelPackage.SaveAs(filepath);
}

如何循环遍历目录中的每个子目录,然后使用 C# 循环遍历每个子目录中的所有图像?

最佳答案

Janne Matikainen 答案是正确的,但您需要知道如何修改您的代码...

首先更改您的代码这一行

 string[] filesindirectory = Directory.GetFiles(Server.MapPath("~/Folder"));

 string[] filesindirectory = Directory.GetDirectories(Server.MapPath("~/Folder"));

其次,您需要在您的子文件夹路径中搜索文件

foreach (string subdir in filesindirectory)

subdir 是您的目录路径。

只需返回与获取文件相同的操作

foreach (string img in  Directory.GetFiles(subdir))

完成foreach子目录后

foreach (string img in  Directory.GetFiles(subdir)) 
{
// Your Code
}
// Reset the Count1
count1 = 0;

重置它,因为您正在为每个工作表增加动态行生成。
然后你在新的工作表上,你没有重置它。
它将按照之前的表格继续计数。

要获取文件夹名称,您可以通过拆分轻松获取它。
在创建工作表之前,请按照以下步骤进行操作。

string[] splitter = subdir.Split('\\');
string folderName = splitter[splitter.Length - 1];

注意 如果文件夹名称 包含一些符号,它可能无法将其设置为excel 工作表,而且名称不能太长。
请确保您替换为 excel 工作表支持的符号

关于c# - 遍历目录中的子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33296318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com