您的位置:首页 > 编程语言 > C#

C#实现使用Excel COM组件向Excel文件中添加图片的Demo

2013-01-07 09:34 766 查看
需要添加Microsoft.Office.Interop.Excel;及Microsoft.Office.Core;两个命名空间及对应的引用。

比如我Windows 7下装的Office 2007,是添加的是一个COM组件和一个.Net组件的引用,如下图:



而我公司的电脑添加的是Microsoft Excel Object Library 和Microsoft Object Library 。

代码如下:

using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
using System.Reflection; using System.IO; using Microsoft.Office.Interop.Excel; using Microsoft.Office.Core; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender,
EventArgs e) { Microsoft.Office.Interop.Excel.Application app = new Application(); app.Visible = false; app.DisplayAlerts = false; Workbook workBook = app.Workbooks.Open(Server.MapPath("test_ Excel.xls"), Missing.Value, Missing.Value, Missing.Value, Missing.Value,Missing.Value,
Missing.Value, Missing.Value, Missing.Value,Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); //设置为操作当前workBook的sheet1 Worksheet workSheet = (Worksheet)workBook.Worksheets[1]; string imgPath = Server.MapPath("test_Img.jpg");
byte[] bytesArr = PicToByteArr(imgPath); System.Drawing.Image bmp = ReturnPhoto(bytesArr);//图片数据 int x = 1; int y = 1; Range rangeTemp = workSheet.get_Range((Range)workSheet.Cells[x, y], (Range)workSheet.Cells[x, y]); //rangeTemp.Select(); float PicLeft, PicTop;
PicLeft = Convert.ToSingle(rangeTemp.Left) + 2; PicTop = Convert.ToSingle(rangeTemp.Top) + 1; workSheet.Shapes.AddPicture(imgPath, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, PicLeft, PicTop, bmp.Width * 8 / 10, bmp.Height
* 8 / 10); workBook.Save(); workBook.Close(null, null, null); app.Workbooks.Close(); app.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(rangeTemp); System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(app); System.GC.Collect(); System.GC.WaitForPendingFinalizers(); } /// summary /// 将图片转换为字节数组 /// /summary /// param name="path"图片的路径/param /// returns字节数组/returns public byte[] PicToByteArr(string path)
{ FileStream fs = new FileStream(path, FileMode.Open);//将图片写入流中。 int filelength = 0; filelength = (int)fs.Length; //获得文件长度 Byte[] byteArr = new Byte[filelength]; //建立一个字节数组 fs.Read(byteArr, 0, filelength); //按字节流读取 fs.Close(); return byteArr; } /// summary
/// 参数是byte返回图片 /// /summary /// param name="byteArr"字节数组/param /// returns图片/returns public System.Drawing.Image ReturnPhoto(byte[] byteArr) { MemoryStream ms = new MemoryStream(byteArr); System.Drawing.Image img = System.Drawing.Image.FromStream(ms); ms.Close();
return img; } }

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐