[英]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.