循环遍历目录中的子目录

2023-12-04

我有一个目录“文件夹”,该目录内有许多子目录。每个子目录内都有许多图像。我想循环遍历“文件夹”目录中的子目录,然后循环遍历每个目录中的所有图像以将图像导出到 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(使用前将#替换为@)

循环遍历目录中的子目录 的相关文章

  • 字节序和大小为 1 的位域

    我认为字节顺序不应该影响大小最多为 1 个字节的结构 但这是我的小端机器上的代码 include
  • 与 Visual Studio 2010 的静态 libpng 链接

    我正在尝试向我的应用程序添加 PNG 支持 因此我想包含 libpng 我知道它需要 zlib 因此我也下载了它 我进入 png 文件夹 projects vstudio 然后打开解决方案 我编译了它 一切顺利 我将其中的一些标头添加到我的
  • 模板:模板函数与类模板成员函数不能很好地配合[重复]

    这个问题在这里已经有答案了 这是我实际拥有的一些代码的最小测试用例 当它尝试评估时失败a getResult b test cpp In function void printStuff const A test cpp 6 error e
  • 对于任何真实数据集,数据压缩比的最小可能值是多少

    我在写信ZLIB类似于嵌入式硬件压缩器的 API 它使用 deflate 算法来压缩给定的输入流 在进一步讨论之前 我想解释一下数据压缩率 数据压缩率定义为未压缩大小与压缩大小之间的比率 压缩比通常大于一 这意味着压缩数据通常比未压缩数据小
  • ASP.NET GridView 项目模板

    好的 我有一个 GridView 并且有一个列 如果文件存在 我希望将其作为链接 否则我只想将其作为标签 现在 我正在使用参数中传递的 Row 更改 RowDataBound 事件处理程序上的控件 我不太喜欢这个 因为我对列 ID 进行了硬
  • 具有未指定长度数组的 PInvoke 结构

    C 定义 typedef struct const uint8 t buf int bufLen Info int Foo Info info C 定义 StructLayout LayoutKind Sequential public s
  • 如何在configure.in中测试C++库的可用性?

    我正在 GNU Linux 上开发一个 C 项目 并且正在寻找一种方法来使用 Autotools 测试 IBM Informix 库的存在性和可用性 即编辑configure in 我没有使用 Autotools 的经验 所以基本上我是从该
  • 如何doxygen注释Qt属性?

    我想将 Doxygen 注释附加到我的 Q PROPERTY 例如 song h class Song public QObject Q OBJECT private Q PROPERTY QString title READ title
  • 如何正确绑定和更新 Xamarin.Forms ListView?

    使用 MVVM 模式 我有一个模型 ViewModel 和视图 其中包含一个 ListView ListView 绑定到 ViewModel 的成员 该成员是 Model 类的 ObservableCollection 我可以使初始显示的绑
  • 将渲染后效果应用于 XNA 中的 SpriteBatch

    在 XNA 框架中 有没有一种方法可以使用典型的 SpriteBatch 方法渲染 2D 场景 然后在渲染该帧后将效果应用于整个图像 例如 模糊 棕褐色甚至使整个事情看起来像旧电影胶片 带有颗粒 灰尘 线条等 是的 您要做的就是将渲染目标设
  • 如何在 Unix 控制台或 Mac 终端中编译和运行 C/C++ 代码?

    如何在 Unix 控制台或 Mac 终端中编译 运行 C 或 C 代码 如果是一个简单的单源程序 make foo 源文件在哪里foo c foo cpp等等 你甚至不需要 makefile Make 有足够的内置规则将源文件构建为同名的可
  • Linq 选择行,其中日期在当月

    我需要获取当月的数据 一直无法找到有效的解决方案 这是我的代码 它为我提供了所需的数据 但我获取的是整整一个月前的数据 而不是当前月份的数据 我选择了两次日期 限制 row gt DateTime Today Addmonths 1 有任何
  • 如何在网页中显示嵌入的 Excel 文件?

    我想允许在网页中查看嵌入的 Excel 报告 有什么办法吗 我不想使用 ActiveX 或 OWC Office Web 组件 我只想从 Internet Explorer 应用程序打开现有文件 我不希望用户下载然后打开它 使用 ifram
  • 状态代码:404,原因短语:“未找到”,版本:1.1,

    我使用 Web api 自托管 public class TestController ApiController HttpPost public void Testp FromBody string title Console Write
  • 从用户控件访问父控件 - C#

    如何访问C winform 中用户控件的父控件 我使用以下代码 但它并不适用于所有类型的控件 例如 ListBox Control Co this TopLevelControl Controls Find label7 true Co 0
  • 将 CollectionBase 转换为 List 或可用于 Linq 的数据类型

    我正在使用 Aspose 单元格来操作 Excel 电子表格 API 中的类型之一是电子表格中的图片集合 它派生自 CollectionBase 请参阅此链接 http www aspose com documentation net co
  • 关于捕获异常的良好实践

    我正在用 C 11 编写一个小程序 并且第一次真正使用异常 我有一个关于如何有效捕获异常的问题 经过一番谷歌搜索后我仍然没有答案 这是问题 通过 const 左值引用捕获异常还是通过 const 右值引用捕获异常 哪个更有效 或推荐 在代码
  • 在第 i 个位置切换一点[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 C 中设置 清除和切换单个位 https stackoverflow com questions 47981 how do you set clear and toggle a single
  • 将 TableCell 文本转换为超链接

    我正在将 sql 查询中的数据提取到页面后面的 cs 代码中的 asp 表中 TableCell tCell1 new TableCell tCell1 Text myDataRow tid ToString 我想将其转换为超链接 我怎样才
  • 为什么编译器将“char”匹配“int”而不是“short”?

    我有一个小程序 include

随机推荐

  • 使用 AWS ECS Fargate 进行水平和垂直自动扩展

    我这里有一个具体的用例 我需要自动扩展在 ECS Fargate 上运行的分布式 Web 应用程序 问题是所有节点都需要在内存中保存相同的数据 因此增加节点数量无助于缓解内存压力 因此 只有水平扩展 添加节点 和垂直扩展 增加节点内存 才能
  • LinkedIn inShare 插件共享计数器返回零

    我有一个 WordPress 博客 http bloculus com 我使用 Super Socializer 插件来分享我的帖子 最近 我发现我失去了所有 LinkedIn 分享计数 在每个帖子中 它都回到了 0 我联系了插件作者 我们
  • 使用 CSS 制作脉动环动画

    我想要一个从中心开始的扩展半径div而不是从左上角开始div 想象一下按钮有一个向外的脉动轮廓 那脉动的轮廓应该从中间开始div然后出去 请参阅此处的示例 https jsbin com dinehoqaro edit html css 输
  • IcmpSendEcho2 失败并显示 WSA_QOS_ADMISSION_FAILURE 和 ERROR_NOACCESS

    我有一个应用程序可以 ping 一堆服务器 它运行了好几天 但突然会出现以下两种类型之一的许多故障 WSA QOS ADMISSION FAILURE 11010 由于缺乏资源而发生 QoS 错误 or ERROR NOACCESS 998
  • 在matlab中绘制一个包含许多子图的大图

    我必须打印一张大海报 其中包含数字矩阵 让 MATLAB 排列它们对我来说非常实用 不幸的是 子图是为了适应特定的图形尺寸而显示的 因此很小且扭曲 我不想适应人物尺寸 而是想适应海报的纸张尺寸 我尝试过set gcf Position 并且
  • Delphi 皮肤库

    我想知道最适合您的 Delphi 应用程序皮肤库是什么 我正在寻找 WinXP Windows Vista Windows 7 兼容性 这样应用程序就不会因为皮肤而崩溃或工作异常 我尝试过主题引擎 但它在 Windows Vista 中运行
  • 使用 SSE 的矩阵向量和矩阵矩阵乘法

    我需要编写矩阵 向量和矩阵 矩阵乘法函数 但我无法理解 SSE 命令 矩阵和向量的维数始终是 4 的倍数 我设法编写了向量 向量乘法函数 如下所示 void vector multiplication SSE float m float n
  • 如何获取 Node.js 目录中存在的所有文件的名称列表?

    我正在尝试使用 Node js 获取目录中存在的所有文件的名称列表 我想要的输出是文件名数组 我怎样才能做到这一点 您可以使用fs readdir or fs readdirSync方法 fs包含在 Node js 核心中 因此无需安装任何
  • 类似于 git status 的命令(或脚本)显示自上次 git svn dcommit 以来的所有本地提交?

    这个 python 脚本是迄今为止我想出的最好的脚本 我只是将它组合在一起 在粗略的前几次使用中 似乎表现得正确 但我忍不住觉得有一种更简单的方法可以做到这一点 甚至是内置的东西 尽管我已经搜索了一遍 谢谢您的帮助 usr bin env
  • 如何将值传递到系统调用 XV6

    我正在尝试创建一个系统调用 该系统调用将增加添加到 cpu 结构中的数字 但是我相信系统调用必须是空的 那么我如何在调用它时传递一个值 增量数 3 Xv6 有自己的函数 用于将参数从用户空间传递到内核空间 系统调用 您可以使用 argint
  • 查询仅从字符串中获取数字

    我有这样的数据 string 1 003Preliminary Examination Plan string 2 Coordination005 string 3 Balance1000sheet 我期望的输出是 string 1 003
  • 如何以编程方式实例化和应用指​​令?

    我知道在 ng2 中我们有ComponentFactoryResolver可以解决我们可以应用到的工厂ViewContainerRef 但是 指令有类似的东西吗 一种实例化它们并将它们应用到组件的投影内容的方法 不 不能动态添加或删除指令
  • android SDK 中缺少 platform-tools\aapt.exe 目录

    我正在尝试使用 Eclipse 在 Android SDK 上运行 hello world 我正在一步一步地遵循本教程 http developer android com resources tutorials hello world h
  • 单元测试的详细程度[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我想开始讨论您在单元测试中涵盖的细节 您是否测试由多种方法组成的主要功能 通过一次测试同时执行一项任务 或者您甚至可以测试自动属性 因为 例如 我认为编写仅测试以下内容的测试没有什么价值
  • 如何为Android创建收件箱样式(带有未读计数)小部件?

    我正在尝试为我的 Android 应用程序创建一个小部件 我希望它是一个单元格 但右上角有注释 类似于流行的小部件 在右上角显示未读电子邮件 短信计数 这似乎是一个常见的尝试和做的事情 但我找不到任何如何构建它的示例 我该怎么做呢 或者有什
  • php变量作为条件赋值

    我想知道如何将条件赋值给 php 变量并在其他条件中使用它 如下所示 cndtnal x 4 if y 5 cndtnal print Hello World Thanks 您应该尽量避免使用eval尽可能多 但如果你想使用它 那么你可以这
  • reset() - “严格标准:只有变量应该通过引用传递”[重复]

    这个问题在这里已经有答案了 我目前正在为客户迁移一个网站 据我所知 他们的旧主机肯定使用的是旧版本的 PHP 该网站目前正在其当前主机上工作 我正在努力将其移至新主机 但出现以下错误 PHP 严格标准 第 17 行 home parcelt
  • 与flock()函数有关的问题

    我有一个关于如何flock 有效 特别是在 python 中 我有一个打开串行连接的模块 通过os open 我需要确保这个线程的安全 当使用相同的模块工作时 它很容易使其线程安全threading Lock 但是如果模块从不同的地方导入
  • viewForSupplementaryElementOfKind 没有被调用

    我已经声明了如下所示的集合视图 lazy var collectionView UICollectionView let layout UICollectionViewFlowLayout layout itemSize UICollect
  • 循环遍历目录中的子目录

    我有一个目录 文件夹 该目录内有许多子目录 每个子目录内都有许多图像 我想循环遍历 文件夹 目录中的子目录 然后循环遍历每个目录中的所有图像以将图像导出到 Excel 并将每个子目录中的图像放在一个 Excel 工作表中 例如如果我有十个子