c# 圖片插入Excel

來源:互聯網
上載者:User

引用COM:Microsoft Office 11.0 Object Library

引用類:
   using System;
   using System.Windows.Forms;
   using Excel = Microsoft.Office.Interop.Excel;

 

調用:

private void button1_Click(objectsender, EventArgse)
       {
           PictureToExcel ipt=new PictureToExcel();
           ipt.Open();
          // ipt.InsertPicture("B2", @"C:\Pic.jpg");
          ipt.InsertPicture("B8", @"C:\Pic.jpg", 80, 100);       
           ipt.SaveFile(@"C:\ExcelTest.xls");
           ipt.Dispose();     
       }

 

 

PictureToExcel.cs

using System;using System.Collections.Generic;using System.Text;using System.Windows.Forms;using Excel; namespace ImgToExcel{    class PictureToExcel    {                /// <summary>                ///開啟沒有模板的操作。           /// </summary>             public void Open( )            {             this.Open(String.Empty);          }           /// <summary>            /// 功能:實現Excel應用程式的開啟            /// </summary>            /// <param name="TemplateFilePath">模板檔案實體路徑</param>            public void Open( string TemplateFilePath )            {             //開啟對象             m_objExcel = new Excel.Application();              m_objExcel.Visible = false;             m_objExcel.DisplayAlerts = false;               if (m_objExcel.Version != "11.0")              {                 MessageBox.Show("您的Excel 版本不是11.0 (Office 2003),操作可能會出現問題。");                 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 += new Excel.AppEvents_WorkbookBeforeCloseEventHandler(m_objExcel_WorkbookBeforeClose);          }         private void m_objExcel_WorkbookBeforeClose( Excel.Workbook m_objBooks, ref bool _Cancel )        {              MessageBox.Show("儲存完畢!");         }          /// <summary>           /// 將圖片插入到指定的儲存格位置。           /// 注意:圖片必須是絕對實體路徑    /// </summary>           /// <param name="RangeName">儲存格名稱,例如:B4</param>           /// <param name="PicturePath">要插入圖片的絕對路徑。</param>          public void InsertPicture( string RangeName, string PicturePath )           {             m_objRange = m_objSheet.get_Range(RangeName, m_objOpt);             m_objRange.Select();             Excel.Pictures pics = (Excel.Pictures)m_objSheet.Pictures(m_objOpt);             pics.Insert(PicturePath, m_objOpt);         }          /// <summary>          /// 將圖片插入到指定的儲存格位置,並設定圖片的寬度和高度。         /// 注意:圖片必須是絕對實體路徑             /// </summary>            /// <param name="RangeName">儲存格名稱,例如:B4</param>           /// <param name="PicturePath">要插入圖片的絕對路徑。</param>           /// <param name="PictuteWidth">插入後,圖片在Excel中顯示的寬度。</param>             /// <param name="PictureHeight">插入後,圖片在Excel中顯示的高度。</param>             public void InsertPicture( string RangeName, string PicturePath, float PictuteWidth, float PictureHeight )            {             m_objRange = m_objSheet.get_Range(RangeName, m_objOpt);             m_objRange.Select();              float PicLeft, 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);           }          /// <summary>           /// 將Excel檔案儲存到指定的目錄,目錄必須事先存在,檔案名稱不一定要存在。         /// </summary>     /// <param name="OutputFilePath">要儲存成的檔案的全路徑。</param>           public void SaveFile( string OutputFilePath )          {              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();          }           /// <summary>            /// 關閉應用程式         /// </summary>            private void Close( )            {               m_objBook.Close(false, m_objOpt, m_objOpt);              m_objExcel.Quit();          }           /// <summary>           /// 釋放所引用的COM對象。注意:這個過程一定要執行。         /// </summary>            public void Dispose( )            {               ReleaseObj(m_objSheets);              ReleaseObj(m_objBook);              ReleaseObj(m_objBooks);              ReleaseObj(m_objExcel);              System.GC.Collect();               System.GC.WaitForPendingFinalizers();           }         /// <summary>         /// /// 釋放對象,內部調用        /// /// </summary>         /// /// <param name="o"></param>                      private void ReleaseObj( object o )            {                try                {                    System.Runtime.InteropServices.Marshal.ReleaseComObject(o);                                    }                catch { }                                      finally                {                    o = null;                }            }            private Excel.Application m_objExcel = null;            private Excel.Workbooks m_objBooks = null;            private Excel._Workbook m_objBook = null;            private Excel.Sheets m_objSheets = null;            private Excel._Worksheet m_objSheet = null;            private Excel.Range m_objRange = null;            private object m_objOpt = System.Reflection.Missing.Value;              }    }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.