我有一个目录“文件夹”,该目录内有许多子目录。每个子目录内都有许多图像。我想循环遍历“文件夹”目录中的子目录,然后循环遍历每个目录中的所有图像以将图像导出到 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# 循环遍历目录中的每个子目录,然后循环遍历每个子目录中的所有图像?
珍妮·马蒂凯宁答案是正确的,但您需要知道如何在代码中修改...
首先更改您的代码这一行
string[] filesindirectory = Directory.GetFiles(Server.MapPath("~/Folder"));
to
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];
做笔记 if the 文件夹名称包含某些符号可能无法将其设置为 Excel 工作表,而且名称不能太长。
请确保替换为 Excel 工作表支持的符号
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)