IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Compté le nombre de pages d'un document excel


Sujet :

Windows Forms

  1. #1
    Membre confirmé Avatar de Emplyst
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Par défaut Compté le nombre de pages d'un document excel
    Bonjour j'essaie de compter le nombre des pages dans un document excel. Voici le code que j'ai mis au point:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    using MSOExcel2003 = Microsoft.Office.Interop.Excel;
    using MSOWord2003 = Microsoft.Office.Interop.Word;
    //...
    		public uint GetPageCount()
    		{
    			MSOExcel2003.ApplicationClass oMSOExcel2003Application;
    			MSOExcel2003.Workbook oMSOExcel2003Workbook;
    			MSOExcel2003.Sheets oMSOExcel2003Sheets;
     
    			MSOWord2003.ApplicationClass oMSOWord2003Application;
    			MSOWord2003.Document oMSOWord2003Document;
     
    			object oParamFileName;
    			object oParamMissing;
    			object oParamFalse;
    			object oParamTrue;
     
    			uint uiPageCount;
     
     
    			oParamMissing = System.Reflection.Missing.Value;
    			oParamFalse = false;
    			oParamTrue = true;
     
    			uiPageCount = 0;
     
    			switch (m_eInputDocType)
    			{
    				case EDocumentType.MSOExcel2003:
    					oMSOExcel2003Application = new MSOExcel2003.ApplicationClass();
    					oMSOExcel2003Application.Visible = false;
    					oMSOExcel2003Workbook = oMSOExcel2003Application.Workbooks.Open(m_oInput.Folder + Path.DirectorySeparatorChar + m_oInput.Filename, oParamMissing, oParamTrue, oParamMissing, oParamMissing, oParamMissing, oParamMissing, oParamMissing, oParamMissing, oParamMissing, oParamMissing, oParamMissing, oParamMissing, oParamMissing, oParamMissing);
     
    					for (int i = 0; i < oMSOExcel2003Workbook.Worksheets.Count; i++)
    					{
    						oMSOExcel2003Sheets = (MSOExcel2003.Sheets)oMSOExcel2003Workbook.Sheets[i];
    						uiPageCount += 1 + (uint)oMSOExcel2003Sheets.HPageBreaks.Count;
    						uiPageCount += (uint)oMSOExcel2003Sheets.VPageBreaks.Count;
    					}
    Mon problème c'est lorsque je parcours la collection avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oMSOExcel2003Sheets = (MSOExcel2003.Sheets)oMSOExcel2003Workbook.Sheets[i];
    Une exception est lancé par le module COM.

    An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in Headhunter.exe

    Additional information: Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))
    Du coups, je suis bloqué et je vois mal comment résoudre cette impasse. Notez que j'ai également essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oMSOExcel2003Sheets = (MSOExcel2003.WorkSheets)oMSOExcel2003Workbook.WorkSheets[i];
    Mais sans succès.

    Si vous voyez une façon de résoudre ma problèmatique merci de m'informer, je suis un peut bloquer par ce bug

    Merci et bonne journée!

  2. #2
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    es-tu sür que
    oMSOExcel2003Workbook.Sheets[i]
    renvoie bien un objet de type

    ??

    il me semble plutot que c'est un truc MsoExcel2003.ISheet


    quand tu fais de l'interop avec office tu dois utiliser pas mal d interfaces me semble-t-il

  3. #3
    Membre confirmé Avatar de Emplyst
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Par défaut
    J'ai pas trouver pouquoi par index ça ne fonctionnait pas, parcontre ce matin j'ai trouvé la méthode GetEnumerator sur oMSOExcel2003Workbook.Worksheets doc j'ai fait qqch comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    					foreach (MSOExcel2003.Worksheet ws in oMSOExcel2003Workbook.Worksheets)
    					{
    						uiPageCount += 1 + (uint)ws.HPageBreaks.Count;
    						uiPageCount += (uint)ws.VPageBreaks.Count;
     
    					}
    Comme le sommeil porte conseil!

  4. #4
    Membre confirmé Avatar de Emplyst
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Par défaut
    Ah j'oubliais le résolu.

    De plus mon équation pour compter le nombre de page a changé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    					foreach (MSOExcel2003.Worksheet oMSOExcel2003WorkSheet in oMSOExcel2003Workbook.Worksheets)
    					{
    						uiPageCount += (uint)((oMSOExcel2003WorkSheet.HPageBreaks.Count + 1) * (oMSOExcel2003WorkSheet.VPageBreaks.Count + 1));
    					}
    En effet, comme excel sa représentation de pages est en 2 dimensions. Donc (largeur +1) x (hauteur + 1). Les +1 c'est parceque le nombre de saut de page vertical et horisontal sont compté à partir de zero.

    Bonne journée!

    Known issue: Si des feuilles vides sont présentes elles sont compté comme page même si celles-ci ne sont pas visible à l'impression.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Nombre de pages dans un document Word
    Par saintVictor dans le forum Documents
    Réponses: 0
    Dernier message: 27/05/2009, 16h43
  2. Réponses: 1
    Dernier message: 28/04/2009, 11h49
  3. Détection de nombres de pages dans un documents Word,Pdf,Xsl ..
    Par moez.mhiri dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 13/01/2009, 09h23
  4. Nombre de page d'un document word
    Par DonKnacki dans le forum VBA Word
    Réponses: 3
    Dernier message: 18/06/2007, 13h18
  5. Réponses: 5
    Dernier message: 11/01/2006, 10h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo