2013-11-21 4 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

Если вы сделаете это в ASP.Net, то это не сможет работать с тем же экземпляром, что и тот, который вы сейчас открываете на своем рабочем столе. Даже если вы запустите это на том же компьютере, они будут работать с разными экземплярами Excel. –

+1

Это ужасная идея использовать Office Interop от ASP.NET или другой серверной технологии. Эти API были написаны для использования в настольном приложении для автоматизации Office (набор настольных приложений). Серверные приложения во многом отличаются друг от друга, что делает очень и очень плохой вариант использования Office Interop. Он также не поддерживается Microsoft и может нарушить вашу лицензию Office. См. [Соображения для автоматизации на стороне сервера Office] (http://support.microsoft.com/kb/257757) –

ответ

3

Для того, чтобы гарантировать это, в моем опыте, я должен был сделать следующее:

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 является Interop

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

-1: будет ли это работать с asp.net? –

+0

Я бы не рекомендовал делать COM-взаимодействие в ASP.NET. – billb

+0

Но это тот вопрос, на который вы только что ответили. –

Смежные вопросы