2011-11-16 2 views
9

Comment créer un fichier Excel avec plusieurs feuilles à partir de DataSet en utilisant C#. J'ai réussi à créer un fichier Excel avec une seule feuille. Mais je ne suis pas capable de le faire pour plusieurs feuilles.Comment créer un fichier Excel avec plusieurs feuilles à partir de DataSet en utilisant C#

Cordialement Rude

+0

Je suppose que cela dépend de la façon dont vous envisagez de créer le fichier Excel. Cherchez-vous à créer une page par table dans l'ensemble de données? – KreepN

+0

Vous avez probablement modifié le comportement Excel par défaut. Voir http://stackoverflow.com/questions/8066189/c-sharp-create-excel-workbook-with-1-sheet-by-default – JMax

+0

Quelle technologie ou composant utilisez-vous pour la feuille unique que vous créez déjà? ? –

Répondre

15

Voici une simple classe C# qui crée un classeur Excel programatically et ajoute deux feuilles, et les deux feuilles puis remplit. Enfin, il enregistre le WorkBook dans un fichier dans le répertoire racine de l'application afin que vous puissiez vérifier les résultats ...

public class Tyburn1 
{ 
    object missing = Type.Missing; 
    public Tyburn1() 
    { 
     Excel.Application oXL = new Excel.Application(); 
     oXL.Visible = false; 
     Excel.Workbook oWB = oXL.Workbooks.Add(missing); 
     Excel.Worksheet oSheet = oWB.ActiveSheet as Excel.Worksheet; 
     oSheet.Name = "The first sheet"; 
     oSheet.Cells[1, 1] = "Something"; 
     Excel.Worksheet oSheet2 = oWB.Sheets.Add(missing, missing, 1, missing) 
         as Excel.Worksheet; 
     oSheet2.Name = "The second sheet"; 
     oSheet2.Cells[1, 1] = "Something completely different"; 
     string fileName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)   
           + "\\SoSample.xlsx"; 
     oWB.SaveAs(fileName, Excel.XlFileFormat.xlOpenXMLWorkbook, 
      missing, missing, missing, missing, 
      Excel.XlSaveAsAccessMode.xlNoChange, 
      missing, missing, missing, missing, missing); 
     oWB.Close(missing, missing, missing); 
     oXL.UserControl = true; 
     oXL.Quit(); 
    } 
} 

Pour ce faire, vous devez ajouter une référence à Microsoft.Office.Interop.Excel à votre projet (vous l'avez déjà fait depuis que vous créez une feuille).

La déclaration qui ajoute la deuxième feuille est ...

Excel.Worksheet oSheet2 = oWB.Sheets.Add(missing, missing, 1, missing) 
          as Excel.Worksheet; 

l'argument « 1 » spécifie une seule feuille, et il peut être plus si vous voulez ajouter plusieurs feuilles à la fois.

Note finale: l'instruction oXL.Visible = false; dit à Excel de démarrer en mode silencieux.

+0

Je reçois une erreur sur oXL.Quit(); à chaque fois. Excel Undantagskod: xc0000005 Felförskjutning: 0x000000000000f993. L'erreur est placée dans le journal des événements de la machine. Aussi avez-vous besoin des arumgents manquants dans C# 4? Est-ce pas assez avec oWB dynamique = excelApplication.Workbooks.Add(); –

+0

Une chance de traduire votre message d'erreur? –

+0

Bonne réponse. Merci beaucoup –

Questions connexes