2015-10-23 54 views
1

我想從一個圖像文件夾導出到一個工作表上的所有圖像的Excel圖像。我設法導出圖像,但只有一個圖像。這是我的代碼:從一個目錄導出多個圖像到一個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工作表?

+0

首先,在所有不是1圖像...導入所有,但所有堆棧上... 你需要修改你的'pic.SetPosition'有動態行... – Nic

回答

1

拉這一關容易的方法是使用可變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個圖像
但無論如何,你其實可以設置圖片大小在你的代碼..
這將是您更容易控制行

+0

嗨@Nic,謝謝我已經嘗試過你的方法,它的工作原理! :)你知道我可以如何設置圖像大小嗎?謝謝你的幫助! –

+0

@FeliciaSoh使用'pic.SetSize',但寬度和高度ü需要確保它 – Nic

+0

嗨@Nic,你知道我該如何設置像1.5像素的十進制圖像位置?像pic.SetPosition(1.5,0,14,0)? –

相關問題