2010-01-06 31 views
10

Tengo un archivo de Excel con 5 hojas de trabajo y quiero con el código C# para abrirlo y cuando se abre quiero que se active el número de hoja 3.Abrir archivo de Excel en una hoja de cálculo específica

¿Cómo puedo hacer eso?

+0

¿Desea automatizar Excel o quieres para mostrar los datos en una cuadrícula en su aplicación? ¿O algo mas? –

Respuesta

23

De esta manera:

using Excel; 

Excel.Application excelApp = new Excel.ApplicationClass(); 

    // if you want to make excel visible to user, set this property to true, false by default 
    excelApp.Visible = true; 

// open an existing workbook 
string workbookPath = "c:/SomeWorkBook.xls"; 
    Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath, 
     0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", 
     true, false, 0, true, false, false); 



// get all sheets in workbook 
    Excel.Sheets excelSheets = excelWorkbook.Worksheets; 

    // get some sheet 
string currentSheet = "Sheet1"; 
    Excel.Worksheet excelWorksheet = 
     (Excel.Worksheet)excelSheets.get_Item(currentSheet); 

// access cell within sheet 
    Excel.Range excelCell = 
     (Excel.Range)excelWorksheet.get_Range("A1", "A1"); 

Esperanza esto ayuda

MDSN información here

+0

? Solo funciona con .Visible = True. ¿Qué tal con .Visible = False? – Denis

3

¿Qué pasa algo como esto: (no probado)

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

Excel.ApplicationClass app = new Excel.ApplicationClass(); 
Excel.Workbook workbook = app.Workbooks.Open("YourFile.xls", 
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
    Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets["Number 3"]; 
worksheet.Activate(); 
+0

esto funcionó para mí :) – Somebody

+0

solo funciona si .Visible = True – Denis

+0

¿Alguien puede confirmar @Denis – Si8

1

Si querer presentar una respuesta visual para el usuario, estas dos declaraciones establecerán la hoja activada y se Lect el rango en consecuencia:

considerar la inclusión de la siguiente declaración inmediatamente antes de inicializar el Excel.Range ...

// conjunto de planos activa en Excel

excelWorksheet.Activate()

también considere la siguiente declaración inmediatamente después de inicializar Excel.Range ...

// Establecer rango activo en Excel

excelCell.Activate()

0
public static Workbook openExternalWorkBook(String fileName) 
    { 
     Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();    
     excel.Visible = false; 
     return excel.Workbooks.Open(fileName, false); 
    } 
Cuestiones relacionadas