将多个图像从目录导出到一个Excel工作表

时间:2015-10-23 03:38:35

标签: c# asp.net excel image export

我想将图像文件夹中的图像导出到Excel,并在一个工作表上显示所有图像。我设法导出图像但只有一个图像。这是我的代码:

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

        string[] filesindirectory = Directory.GetFiles(Server.MapPath("~/Image"));
        int count = 0;

        ExcelWorksheet ws = objExcelPackage.Workbook.Worksheets.Add("Worksheet" + count); //create new worksheet

                    foreach (string img in filesindirectory)
                    {
                    count++;
                    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(count.ToString(), myImage);
                    // Row, RowoffsetPixel, Column, ColumnOffSetPixel
                    pic.SetPosition(1, 0, 2, 0);
                        }
                }                            
        var filepath = new FileInfo(@"C:\Users\user\Desktop\Test\" + datetime.ToString("dd-MM-yyyy_hh-mm-ss") + ".xlsx");
        objExcelPackage.SaveAs(filepath);
    }

这是我想要实现的输出:

enter image description here

如何使用EPPlus在一个Excel工作表中将目录中的所有图像导出到Excel?

1 个答案:

答案 0 :(得分:2)

轻松解决此问题的方法是使用变量count

int x = 8;
int finalValue = 0;

if (count > 1) {
    pic.SetPosition(finalValue , 0, 2, 0);
    finalValue += (x + 1); // Add 1 to have 1 row of empty row
}
else {
    pic.SetPosition(count, 0, 2, 0);
    finalValue = (count + x) + 1; // Add 1 to have 1 row of empty
}

x取决于行的图像大小。

例如,您的图像使用8行作为1个图像
但无论如何,您实际上可以在代码中设置图像大小。
您可以更轻松地控制行