这几天做C#向Excel插入数据,其中有插入图片的需求,经试验,下面2种方法都可以实现C#向Excel插入数据,但各有不同的用处。现将这2种方法共享出来, 希望需要的朋友进行参考,代码中已经有详细注释了。

注意:使用之前需要引用COM:Microsoft Office 11.0 Object Library
如果引用列表中没有,需要自行添加 C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE
调用方法:
- MengXianhui.Utility.ExcelReport.InsertPictureToExcelipt=
 
newMengXianhui.Utility.ExcelReport.InsertPictureToExcel();- ipt.Open();
 - ipt.InsertPicture("B2",@"C:\Excellogo.gif");
 - ipt.InsertPicture("B8",@"C:\Excellogo.gif",120,80);
 - ipt.SaveFile(@"C:\ExcelTest.xls");
 - ipt.Dispose();
 
简单包装的类:
- usingSystem;
 - usingSystem.Windows.Forms;
 - usingExcel=Microsoft.Office.Interop.Excel;
 - namespaceMengXianhui.Utility.ExcelReport
 - {
 - classInsertPictureToExcel
 - {
 - ///
 - ///打开没有模板的操作。
 - ///
 - publicvoidOpen()
 - {
 - this.Open(String.Empty);
 - }
 - ///
 - ///功能:实现Excel应用程序的打开
 - ///
 - ///<paramnameparamname="TemplateFilePath">模板文件物理路径
 - publicvoidOpen(stringTemplateFilePath)
 - {
 - //打开对象
 - m_objExcel=newExcel.Application();
 - m_objExcel.Visible=false;
 - m_objExcel.DisplayAlerts=false;
 - if(m_objExcel.Version!="11.0")
 - {
 - MessageBox.Show("您的Excel版本不是11.0(Office2003),操作可能会出现问题。");
 - m_objExcel.Quit();
 - return;
 - }
 - m_objBooks=(Excel.Workbooks)m_objExcel.Workbooks;
 - if(TemplateFilePath.Equals(String.Empty))
 - {
 - m_objBook=(Excel._Workbook)(m_objBooks.Add(m_objOpt));
 - }
 - else
 - {
 - m_objBook=m_objBooks.Open
 
(TemplateFilePath,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,
m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt);- }
 - m_objSheets=(Excel.Sheets)m_objBook.Worksheets;
 - m_objSheet=(Excel._Worksheet)(m_objSheets.get_Item(1));
 - m_objExcel.WorkbookBeforeClose+=newExcel.
 
AppEvents_WorkbookBeforeCloseEventHandler(m_objExcel_WorkbookBeforeClose);- }
 - privatevoidm_objExcel_WorkbookBeforeClose(Excel.Workbookm_objBooks,refbool_Cancel)
 - {
 - MessageBox.Show("保存完毕!");
 - }
 - ///
 - ///将图片插入到指定的单元格位置。
 - ///注意:图片必须是绝对物理路径
 - ///
 - ///<paramnameparamname="RangeName">单元格名称,例如:B4
 - ///<paramnameparamname="PicturePath">要插入图片的绝对路径。
 - publicvoidInsertPicture(stringRangeName,stringPicturePath)
 - {
 - m_objRange=m_objSheet.get_Range(RangeName,m_objOpt);
 - m_objRange.Select();
 - Excel.Picturespics=(Excel.Pictures)m_objSheet.Pictures(m_objOpt);
 - pics.Insert(PicturePath,m_objOpt);
 - }
 - ///
 - ///将图片插入到指定的单元格位置,并设置图片的宽度和高度。
 - ///注意:图片必须是绝对物理路径
 - ///
 - ///<paramnameparamname="RangeName">单元格名称,例如:B4
 - ///<paramnameparamname="PicturePath">要插入图片的绝对路径。
 - ///<paramnameparamname="PictuteWidth">插入后,图片在Excel中显示的宽度。
 - ///<paramnameparamname="PictureHeight">插入后,图片在Excel中显示的高度。
 - publicvoidInsertPicture
 
(stringRangeName,stringPicturePath,floatPictuteWidth,floatPictureHeight)- {
 - m_objRange=m_objSheet.get_Range(RangeName,m_objOpt);
 - m_objRange.Select();
 - floatPicLeft,PicTop;
 - PicLeft=Convert.ToSingle(m_objRange.Left);
 - PicTop=Convert.ToSingle(m_objRange.Top);
 - //参数含义:
 - //图片路径
 - //是否链接到文件
 - //图片插入时是否随文档一起保存
 - //图片在文档中的坐标位置(单位:points)
 - //图片显示的宽度和高度(单位:points)
 - //参数详细信息参见:http://msdn2.microsoft.com/zh-cn/library/aa221765(office.11).aspx
 - m_objSheet.Shapes.AddPicture(PicturePath,Microsoft.Office.Core.MsoTriState.
 
msoFalse,Microsoft.Office.Core.MsoTriState.msoTrue,PicLeft,PicTop,
PictuteWidth,PictureHeight);- }
 - ///
 - ///将Excel文件保存到指定的目录,目录必须事先存在,文件名称不一定要存在。
 - ///
 - ///<paramnameparamname="OutputFilePath">要保存成的文件的全路径。
 - publicvoidSaveFile(stringOutputFilePath)
 - {
 - m_objBook.SaveAs(OutputFilePath,m_objOpt,m_objOpt,
 - m_objOpt,m_objOpt,m_objOpt,Excel.XlSaveAsAccessMode.xlNoChange,
 - m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt);
 - this.Close();
 - }
 - ///
 - ///关闭应用程序
 - ///
 - privatevoidClose()
 - {
 - m_objBook.Close(false,m_objOpt,m_objOpt);
 - m_objExcel.Quit();
 - }
 - ///
 - ///释放所引用的COM对象。注意:这个过程一定要执行。
 - ///
 - publicvoidDispose()
 - {
 - ReleaseObj(m_objSheets);
 - ReleaseObj(m_objBook);
 - ReleaseObj(m_objBooks);
 - ReleaseObj(m_objExcel);
 - System.GC.Collect();
 - System.GC.WaitForPendingFinalizers();
 - }
 - ///
 - ///释放对象,内部调用
 - ///
 - ///<paramnameparamname="o">
 - privatevoidReleaseObj(objecto)
 - {
 - try
 - {
 - System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
 - }
 - catch{}
 - finally{o=null;}
 - }
 - privateExcel.Applicationm_objExcel=null;
 - privateExcel.Workbooksm_objBooks=null;
 - privateExcel._Workbookm_objBook=null;
 - privateExcel.Sheetsm_objSheets=null;
 - privateExcel._Worksheetm_objSheet=null;
 - privateExcel.Rangem_objRange=null;
 - privateobjectm_objOpt=System.Reflection.Missing.Value;
 - }
 - }
 
以上介绍C#向Excel插入数据
【编辑推荐】
                新闻标题:概述C#向Excel插入数据
                
                分享URL:http://www.csdahua.cn/qtweb/news49/372949.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网