J'utilise DSOFile.OleDocumentPropertiesClass pour obtenir le nombre de pages pour les documents Office sans automatisation. Cela fonctionne bien pour les fichiers docx et pptx, mais renvoie toujours 0 pour les fichiers xlsx.Problème Obtenir le nombre de pages pour les documents office (excel) à l'aide de DSOFile.OleDocumentPropertiesClass
DSOFile.OleDocumentPropertiesClass oleDocument = new DSOFile.OleDocumentPropertiesClass();
oleDocument.Open(documentFilePath, true, DSOFile.dsoFileOpenOptions.dsoOptionOpenReadOnlyIfNoWriteAccess);
//WORKS FOR DOCX
int pageCount = oleDocument.SummaryProperties.PageCount;
//WORKS FOR PPTS
int pageCount = oleDocument.SummaryProperties.SheetCount;
//NONE OF ABOVE WORKS FOR XLSX, IT ALWAYS RETURNS 0
La solution OleDB fonctionne très bien pour les fichiers Excel en lecture/écriture. mais ici, je veux que la page compte quand le document est imprimé à partir d'une imprimante souple. Cela ne marchera pas pour moi. J'essaie d'éviter l'automatisation Problème: L'utilisateur devrait pouvoir télécharger n'importe quel type de document (doc, docx, ppt, pptx, xls, xlsx, images, pdf) et il sera converti en swf par un processus, et enfin que swf est utilisé dans l'application. Maintenant, nous avons une situation où nous voulons interdire à l'utilisateur de télécharger plusieurs documents de la page. donc nous utilisons le fichier dso cela fonctionne bien pour les autres formats restants xls et xlsx. – Lalit
jeter un oeil à ce lien http://npoi.codeplex.com/, cette chose pourrait vous aider avec ce que vous essayez de faire. Aussi, je ne pense pas que vous seriez en mesure d'obtenir le nombre de pages de xls, plus probablement un certain nombre de feuilles. La pagination pour chaque feuille est faite à la volée avant l'impression. Avec l'automatisation, vous pouvez le faire en appelant ExecuteExcel4Macro avec la commande GET.DOCUMENT (50, \ "your_sheet_name \") –