2009-07-29 11 views
0

Dans .NET C# J'essaie d'ouvrir un modèle Excel, d'ajouter des données et de les enregistrer en tant que nouveau document. J'essaie d'utiliser le format de document OpenXML. Je n'arrive pas à trouver de conseils sur la façon de le faire. On dirait que toute la documentation parle de la façon d'écrire différentes parties du paquet, mais je ne trouve rien sur ce qu'il faut faire lorsque vous avez terminé et que vous voulez sauvegarder.Enregistrement de documents Excel 2007

Quelqu'un sait où je peux trouver cette information? Je dois y penser incorrectement parce que je ne trouve rien d'utile sur ce qui semble être très basique.

Merci

+1

SpreadsheetML est _not_ OpemXML –

+0

@Joel - En fait, SpreadsheetML est utilisé comme nom pour Excel 2007 format Open XML, ainsi que l'ancien dépréciée format XML Excel 2003. –

Répondre

1

ExcelPackage fonctionne assez bien pour cela. Il n'a pas été travaillé par l'auteur principal, je ne pense pas pendant un petit moment, mais il a un bon suivi des gens sur son forum qui fonctionnent tous les problèmes.

  FileInfo template = new FileInfo(Path.GetDirectoryName(Application.ExecutablePath)+"\\Template.xlsx"); 
     try 
     { 
      using (ExcelPackage xlPackage = new ExcelPackage(strFileName,template)) 
      { 
       //Enable DEBUG mode to create the xl folder (equlivant to expanding a xlsx.zip file) 
       //xlPackage.DebugMode = true; 

       ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets["Sheet1"]; 

       worksheet.Name = WorkSheetName; 

       foreach (DataRow row in dt.Rows) 
       { 
        int c = 1; 
        if (r > startRow) worksheet.InsertRow(r); 
        // our query has the columns in the right order, so simply 
        // iterate through the columns 
        foreach (DataColumn col in dt.Columns) 
        { 
         if (row[col].ToString() != null) 
         { 
          worksheet.Cell(r, c).Value = colValue; 
          worksheet.Column(c).Width = 10; 
         } 
         c++; 
        } 
        r++; 
       } 

       // change the sheet view to show it in page layout mode 
       worksheet.View.PageLayoutView = false; 

       // save our new workbook and we are done! 
       xlPackage.Save(); 
       xlPackage.Dispose(); 
      } 
     } 
0

Accès Open XML/documents SpreadsheetML est loin d'être un exercice trivial. La spécification est grande et complexe. Le "Open XML SDK" (google it) aide certainement, mais nécessite encore quelques connaissances de la norme Open XML pour faire beaucoup de choses.

a une API similaire à Excel et peut lire et écrire des documents Excel Open XML (xlsx) ainsi que des documents Excel 97-2003 (xls).

Vous pouvez voir quelques exemples de SpreadsheetGear here et télécharger un essai gratuit here.

Disclaimer: Je possède SpreadsheetGear LLC

Questions connexes