Archives du blog

Créer un fichier Excel sans Excel avec MyXls

Pour l’instant je suis sur un projet qui mélange InfoPath 2007 avec Sharepoint. Le formulaire InfoPath est utilisé comme template dans une « form Library ».

le gros problème que j’ai rencontré fut la création d’un fichier excel sans excel. La solution fût la librairie MyXls mais la documentation étant très sommaire, j’ai trouvé de l’aide sur un site chinois en chinois, j’ai décidé de faire un petit tuto sur cette librairie très intéressante.

Voici les étapes à suivre pour créer un fichier excel

//Créer un document
XlsDocument doc = new XlsDocument();
//créer une workSheet en lui donnant un nom
Worksheet ws = doc.Workbook.Worksheets.Add("sheetName");

A ce point on a un fichier vide avec une worksheet

Il y a deux façon de créer une cellule, la première est sans style

//Création d'une cellule sans style
rowNumber = 1;
cellNumber = 1;
Cells cells = ws.Cells;
Cell cell = cells.Add(rowNumber, cellNumber, "hello world");

la deuxième façon permet de mettre un style à la cellule et d’appliquer ce style à d’autre cellule si le besoin s’en fait sentir.

//création du style. la cellule aura un bord noir d'une épaisseur de 1
XF cellXF = doc.NewXF();
cellXF.BottomLineColor = Colors.Black;
cellXF.BottomLineStyle = 1;
cellXF.LeftLineColor = Colors.Black;
cellXF.LeftLineStyle = 1;
cellXF.TopLineColor = Colors.Black;
cellXF.TopLineStyle = 1;
cellXF.RightLineColor = Colors.Black;
cellXF.RightLineStyle = 1;

//Création d’une cellule avec style
rowNumber = 1;
cellNumber = 1;
Cells cells = ws.Cells;
Cell cell = cells.Add(rowNumber, cellNumber, « hello world », cellXF);

il reste encore deux choses à faire pour finir la création de notre premier document excel, un nom et un endroit pour le sauver.

Pour donner un nom il suffit d’utiliser la propriété FileName du document sans extension.

doc.FileName = "hello world";

Pour sauvegarder

doc.Save("c:\", true);

Save a deux paramètres, le premier est l’emplacement où la sauvegarde sera faite, ici, c:\. Le deuxième paramètre est un simple overwrite.

Maintenant j’ai mon document, par contre si j’avais voulu mettre un texte beaucoup plus long comme « Bonjour notre belle planète » j’aurais actuellement un problème de largeur de colonne. Pour résoudre ce problème il faut utiliser ColumnInfo et voici comment l’utiliser.

//doc = mon document excel et ws ma worksheet
ColumnInfo colInfo = new ColumnInfo(doc, ws);
//On indique à partir de quelle colonne on comment à appliquer la largeur et autres infos
colInfo.ColumnIndexStart = 0;
//On indique la dernière colonne où on applique la largeur et autres infos
colInfo.ColumnIndexEnd = 2;
//Je donne une largeur pour la colonne
colInfo.Width = 15 * 256;
//J'ajoute ce format de colonne à la worksheet
ws.AddColumnInfo(colInfo);

Il y a encore d’autres fonctionnalités telle  que mergeArea qui vous permet de fusionner des cellules entres elles.

Voila une première approche de cette librairie, mais si comme moi vous devez l’utiliser  avec sharepoint il serait préférable de télécharger les sources, de les signer puis les compiler.

Références

  • MyXls sur sourceforge, je vous conseil de télécharger les sources au lieu des dll. La version avec un SL est destiné à silverlight. Le seul problème c’est que la doc n’est pas bien fournie.
  • le site chinois où j’ai trouvé des exemples : MyXls
Publicités

Sharepoint mon ami …

Cela fait maintenant 9 mois que je fais du sharepoint 2007 et je dois dire que j’ai été agréablement surpris au début.

J’ai décidé d’écrire quelques articles sur le sujet, d’expliquer les problèmes que j’ai rencontré, les solutions que j’ai trouvé et les articles qui m’ont aidés.

A bientôt.

%d blogueurs aiment cette page :