2013-11-21 142 views
0

Excel窗口保持最小化。我該如何將它帶到瀏覽器的前端。無法激活Excel窗口

using Microsoft.Office.Interop; 
using Excel = Microsoft.Office.Interop.Excel; 

protected void btnOpen_Click(object sender, EventArgs e) 
{ 
    OpenExcel(); 
} 

private void OpenExcel() 
{ 
    Excel.Application app = new Excel.Application(); 
    Excel.Workbook wb = null; 
    Excel.Worksheet ws = null; 
    Excel.Range range = null; 

    app.visible = true; 
    wb = app.Workbooks.Add(1); 
    ws = (Excel.Worksheet)wb.WorkSheets[1]; 
    range = ws.get_Range("A1","D1"); 

    ws.Cells[1,1]="Date"; 
    ws.Cells[1,2]="Code"; 
    ws.Cells[1,3]="Name"; 
    app.WindowState = Excel.XlWindowState.xlNormal;  
    app.ActiveWindow.Activate(); 
} 
+1

將無法使用與您當前在桌面上打開的實例相同的實例。即使你在同一臺計算機上運行它們,它們也可以使用不同的Excel實例。 –

+1

從ASP.NET或其他服務器技術使用Office Interop是一個可怕的想法。這些API被編寫用於桌面應用程序,用於自動化Office(一套桌面應用程序)。服務器應用程序在許多方面有所不同,因此在其中使用Office Interop是非常非常糟糕的主意。它也不受Microsoft的支持,並可能違反您的Office許可證。請參閱[服務器端自動化辦公室的注意事項](http://support.microsoft.com/kb/257757) –

回答

3

爲了保證這一點,在我的經驗,我必須做到以下幾點:如果你這樣做在ASP.Net那麼

if (app.WindowState == XlWindowState.xlMinimized) 
{ 
    app.WindowState = XlWindowState.xlNormal; 
} 
app.WindowState = XlWindowState.xlMaximized; 
app.ShowWindowsInTaskbar = true; 
app.Visible = true; 

IntPtr hwnd = new IntPtr(app.Hwnd); 
Win32Helper.SetForegroundWindow(hwnd); 

SetForegroundWindow是互操作

[DllImport("user32.dll")] 
public static extern bool SetForegroundWindow(IntPtr hWnd); 
+0

-1:這將與asp.net一起工作嗎? –

+0

我不會推薦在ASP.NET中進行COM互操作。 – billb

+0

但這就是你剛纔回答的問題。 –