2010-06-18 9 views
2

Je sais que nous pouvons ouvrir une feuille de calcul de MS Excel en utilisant C# en fournissant le numéro de feuille (1,2,3 ..) ou nom (feuille1, feuille2, feuille3 ...)Ouverture MS Excel feuille de calcul en C#

J'ai un fichier Excel qui a 2 feuilles, 1. Valeurs, 2. Résultats

Y at-il un moyen d'ouvrir une feuille donnant le nom de la feuille, à savoir, "Valeurs" au lieu de 1 ou [s | S] heet1 en C# ??

Je regardais à travers les vieux postes, mais na pas trouvé quelque chose d'utile ...

à nouveau, ce que je suis en train de faire est, ouvrez une feuille de calcul Excel en utilisant son nom défini par l'utilisateur (valeurs) au lieu du système nom défini (1 ou [s | S] heet1)

toutes les entrées seraient grandement appréciées!

Répondre

3

Ajouter référence à Microsoft.Office.Interop.Excel dans votre projet et vous pouvez utiliser le code suivant en tant que base

Excel.Application oXL; 
Excel._Workbook oWB; 
Excel._Worksheet oSheet; 

//Start Excel and get Application object. 
oXL = new Excel.Application(); 
oXL.Visible = false; 
oXL.DisplayAlerts = false; // prevents message from popping up 

try 
{ 

    //Get a new workbook. 
    oWB = (Excel._Workbook)(oXL.Workbooks.Open(filename, 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)); 

    oSheet = (Excel._Worksheet)oWB.ActiveSheet; 

    int nCounter = 1; 
    oSheet.Copy(oSheet, Type.Missing); 
    Excel._Worksheet oSheetGame = (Excel._Worksheet)oWB.Worksheets["MyTemplate"]; 
    oSheetGame.Name = "MyNewWorksheetName"; 
    // do something with worksheet 

    ((Excel._Worksheet)oWB.Sheets["MyTemplate"]).Delete(); // delete template 
    ((Excel._Worksheet)oWB.Worksheets["MyNewWorksheetName"]).Activate(); 

} 
catch (Exception e) 
{ 
    //throw e; 
    throw; 
} 
finally 
{ 
    //Make sure Excel is visible and give the user control 
    //of Microsoft Excel's lifetime. 
    oXL.Visible = true; 
    oXL.UserControl = true; 
} 

oXL.Save(Type.Missing); 
+0

@chibacity Mise à jour – volody

+0

Gardez à l'esprit que d'utiliser sur un serveur web, vous devez avoir Excel (Office) installé là-bas. Et chaque instance de votre application Web exécutera une nouvelle instance d'Excel. Il existe une solution alternative pour utiliser la bibliothèque NPOI pour lire et écrire des fichiers XLS et XLSX: http://npoi.codeplex.com/ –

0

@volody, merci! votre message a beaucoup aidé. Je pris la partie de la déclaration de feuille de calcul de la vôtre et la mienne a changé en ce qui suit:

 Excel.Application excelApplication; 
     Excel.Worksheet excelWorksheet; 
     Excel.Workbook excelWorkbook; 
     Excel.Range range; 

     excelApplication = new Excel.Application(); 

     excelWorkbook = (Excel.Workbook)(excelApplication.Workbooks.Open(
      <FILENAME>, 
      Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, 
      true, Type.Missing, Type.Missing, false, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing)); 

     excelWorksheet = (Excel.Worksheet)excelWorkbook.Worksheets[<WORKSHEETNAME>]; 

Le code ci-dessus aide à ouvrir une feuille de calcul Excel avec un nom défini par l'utilisateur. Par exemple, pour ouvrir une feuille de calcul nommée Test au lieu de Sheet1.

  • Ivar
Questions connexes