簡體   English   中英

如何使用C#在Excel中嵌入圖像?

[英]How to embed images in Excel using C#?

我目前在SQL數據庫中有一個產品列表,並且其中一個字段是包含產品圖像的blob字段,我將其存儲並使用Byte []數組進行檢索,該圖像取自PNG格式。 當用戶查看產品時,在網站上顯示圖像工作正常。

客戶現在想要的是將所有產品導出到Excel,包括要在每種產品的每一行中顯示的圖像,例如F列。

我一直沒有在網上找到任何行之有效的信息-示例代碼似乎總是有錯誤或引用了我找不到的東西,這使我想知道是否存在版本問題。 我目前正在使用Visual Studio 2010和Office 2010對此進行測試。

我已經看到了一些示例,這些示例顯示了如何將圖像帶到剪貼板並將其粘貼,但是考慮到它將在Web服務器上運行並且可能一次只能處理20個左右的產品,因此我不確定剪貼板是否會網絡服務器的好主意?

我希望能夠直接從Byte []數組將其寫入excel文件,因為我將提取所有其他產品數據。

在更新網站上的代碼之前,我正在嘗試使用一個簡單的控制台程序在本地對其進行測試。 一旦知道可以將圖像導入Excel,就可能會編寫一個可以在aspx頁面上引用的dll庫。

        var xlApp = new Excel.Application();
        Excel.Workbook xlWorkBook = xlApp.Workbooks.Add();
        Excel.Worksheet xlWorkSheet = xlWorkBook.Worksheets[1];

        byte[] imgdata = File.ReadAllBytes("product.png");

        //what do I enter here to insert the image into cell[1,1]

        xlWorkBook.SaveAs("abc.xlsx");
        xlWorkBook.Close(true);
        xlApp.Quit();

        Marshal.ReleaseComObject(xlApp);

如果要使用字節數據而不是硬盤上的文件,關鍵是使用工作表粘貼功能而不是AddPicture

Bitmap bmp;
using (var ms = new MemoryStream(imgdata))
{
    bmp = new Bitmap(ms);
    System.Windows.Forms.Clipboard.SetDataObject(bmp, False);
    var rng = xlWorkSheet.Range("A1");
    xlWorkSheet.Paste(rng, bmp);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM