2017-06-10 10 views
0

私は自分のフォームにExcelを埋め込みしようとしています。いくつかの問題があります。パネルに埋め込まれたExcelでC#の問題が発生する

セルを選択または編集することはできません。 Excelのサイズとパネルのサイズを同期させることができません。 独立した実行時にタイトルバーを削除することはできますが、パネルタイトルバーのappersで実行すると削除できます。 Excelのサイズ変更の適切性を無効にすることはできません。

ここでコード:

namespace gomuluExcelDeneme 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 


     static Excel.Application xlApp; 
     static Excel.Workbook xlWorkbook; 
     static Excel.Worksheet xlSheet; 
     static object Missing = System.Reflection.Missing.Value; 

     [DllImport("user32.dll")] 

     static extern IntPtr SetParent(IntPtr child, IntPtr newParent); 

     private void button1_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog file = new OpenFileDialog(); 
      file.Filter = "Excel Dosyası |*.xlsx"; 
      file.ShowDialog(); 
      string filePath = ""; 
      filePath = file.FileName; 

      xlApp = new Excel.Application(); 
      xlWorkbook = xlApp.Workbooks.Open(filePath); 
      xlSheet = (Excel.Worksheet)xlWorkbook.Worksheets.get_Item(1); 

      SetParent((IntPtr)xlApp.Hwnd, this.panel1.Handle); 
      xlApp.WindowState=Excel.XlWindowState.xlNormal; 
      xlApp.Height = panel1.Height-90; 
      xlApp.Width = panel1.Width-130; 
      xlApp.DisplayStatusBar = false; 
      xlApp.ExecuteExcel4Macro("show.toolbar(\"ribbon\",false)"); 
      xlApp.Visible = true; 

     } 

     private void panel1_Resize(object sender, EventArgs e) 
     { 
      xlApp.Height = panel1.Height - 90; 
      xlApp.Width = panel1.Width - 130; 
     } 

     private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
     { 
      try { xlWorkbook.Close(0); } catch { } 
      xlApp.Quit(); 
     } 
    } 
} 

スクリーンショット: enter image description here

+0

あなたのアプリがコンテナだった場合、OLEはこれを簡単に実行できます – MickyD

答えて

0

私はDSOフレーマコントロールで解決。

関連する問題