C# 使用EPplus将文本添加到Excel

C# 使用EPplus将文本添加到Excel,c#,asp.net,excel,export,epplus,C#,Asp.net,Excel,Export,Epplus,我有一个主目录,其中包含许多子目录。在每个子目录中都会有图像。我已设法将图像从每个子目录导出到excel工作簿中的每个excel电子表格中。例如,如果我有10个子目录,将有1个excel工作簿和10个excel电子表格,在每个电子表格中将有每个子目录的图像 我现在想做的是,如果任何子目录中没有图像,导出到excel电子表格的子目录将为空。我想将“未找到图像”作为文本添加到空白excel电子表格中。 这就是我尝试过的: foreach (string subdir in filesindirec

我有一个主目录,其中包含许多子目录。在每个子目录中都会有图像。我已设法将图像从每个子目录导出到excel工作簿中的每个excel电子表格中。例如,如果我有10个子目录,将有1个excel工作簿和10个excel电子表格,在每个电子表格中将有每个子目录的图像

我现在想做的是,如果任何子目录中没有图像,导出到excel电子表格的子目录将为空。我想将“未找到图像”作为文本添加到空白excel电子表格中。

这就是我尝试过的:

 foreach (string subdir in filesindirectory)
        {
            string[] splitter = subdir.Split('\\');
            string folderName = splitter[splitter.Length - 1];
            ExcelWorksheet ws = package.Workbook.Worksheets.Add("Worksheet-" + folderName); //create new worksheet
            ImageCount = 0;

            if (Directory.GetFiles(subdir).Length == 0)
                {
                    ws.Cells["J9:L10"].Merge = true;
                    ws.Cells["J9:L10"].Style.VerticalAlignment = ExcelVerticalAlignment.Top;
                    ws.Cells["J9:L10"].Value = "No chart to display";
                    ws.Cells["J9:L10"].Style.Font.Size = 16;
                }

            foreach (string img in Directory.GetFiles(subdir))
            {
                    ImageCount++;
                    System.Drawing.Image Image1 = System.Drawing.Image.FromFile(img);
                    var AddImage = ws.Drawings.AddPicture("Image" + ImageCount.ToString(), Image1 );
                    Image1 .Dispose();
                    // Row, RowoffsetPixel, Column, ColumnOffSetPixel
                    if (ImageCount > 1)
                    {
                        AddImage .SetPosition(ImageFinalPosition, 0, 2, 0);
                        AddImage .SetSize(770, 450);
                        ImageFinalPosition += (ImagePosition + 1); // Add 1 to have 1 row of empty row
                    }
                    else
                    {
                        AddImage.SetPosition(ImageCount, 0, 2, 0);
                        AddImage.SetSize(770, 450);
                        ImageFinalPosition = (ImageCount + ImagePosition) + 1; // Add 1 to have 1 row of empty row
                    }
我现在面临的问题是,当我将文本添加到特定的合并单元格时,如果我以不同的屏幕大小查看电子表格,较小的屏幕大小将在电子表格的中心显示文本,而较大的屏幕大小将在电子表格的左侧显示文本

这是我看到的一个示例:

较小屏幕尺寸(笔记本电脑): 较大屏幕尺寸(桌面): 这是我想要实现的输出(所有屏幕大小):
请帮帮我,谢谢

您必须了解
foreach
循环的工作原理
如果您的
count
0
foreach
中的代码根本不运行
您应该在工作表中写入的
foreach
循环之前进行检查

将代码放在
foreach
循环之前,如下所示

if (Directory.GetFiles(subdir).Length == 0)   //if no image in that sub directory
{
    ws.Cells["A1:A3"].Merge = true;
    ws.Cells["A1:A3"].Style.VerticalAlignment = ExcelVerticalAlignment.Top;
    ws.Cells["A1:A3"].Style.Border.Top.Style = ExcelBorderStyle.Thin;
    ws.Cells["A1:A3"].Style.Border.Left.Style = ExcelBorderStyle.Thin;
    ws.Cells["A1:A3"].Style.Border.Right.Style = ExcelBorderStyle.Thin;
    ws.Cells["A1:A3"].Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
    ws.Cells["A1:A3"].Style.Fill.PatternType = ExcelFillStyle.Solid;
    ws.Cells["A1:A3"].Style.Fill.BackgroundColor.SetColor(System.Drawing.ColorTranslator.FromHtml("#f0f3f5"));
    ws.Cells["A1:A3"].Value = "content not found";
}

foreach (string img in Directory.GetFiles(subdir))
{
    // Your else code
}

你好@Nic,谢谢你的帮助!我已成功地将文本添加到excel。但是我在这里遇到了一个问题,如果我将文本放在特定的合并单元格中,如果我使用不同的屏幕大小查看excel表格,较小的屏幕大小将使文本显示在表格的中心,而较大的屏幕大小将使文本显示在左边。你知道这方面有什么解决办法吗?请看我的最新帖子,非常感谢!:)@FeliciaSoh很难满足中间图像的所有分辨率。。。。如果这是CSS,那么更容易,但不幸的是,这是Excel。。。。我相信我帮不了你..嗨@Nic,哦,我明白了。。明白了,谢谢你的帮助!:)