|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Développeur informatique Inscription : juillet 2011 Messages : 6 ![]() |
ASPNET 3.5 / Excel 2003
J'ai ajouté dans une application aspnet 3.5 déjà existante la capacité de générer à partir d'un template xlt 2003, un fichier xls à partir de données extraites de bases SQL Server. En config de dev sous visual studio 2008, tout fonctionne parfaitement et le fichier de sortie xls est généré sans souci. Une fois cette nouvelle version de cette application déployée sous Windows 7 de nombreux soucis d'accès/config se posent et empêchent la génération de se réaliser. On a essayé l'affectation d'un profil admin au DCOM Excel, au pool dédié à l'application et au dossier abritant le fichier xlt, de déclarer une Identité pour un utilisateur interactif sur le DCOM et évidemment de tenter cette génération en loggant en session (profil admin) sur le serveur. Aucune configuration fonctionnant sous xp ne semble permettre de générer du fichier Excel à partir d'un template sous Windows 7. Les erreurs sont tour à tour "Impossible d'utiliser des objets liés et incorporés", le fichier (xlt) n'est pas présent, erreur sous la session. La génération d'un fichier Excel fonctionne, mais pas à partir du chargement d'un template. Lorsque le chargement d'un template se passe bien, c'est la génération qui plante. Quelqu'un connaitrait-il une configuration qui permette de réaliser cette génération à partir d'un template en aspnet sous Windows 7. |
|
|
00
|
|
|
#2 | ||||||||
|
Invité régulier
![]() Développeur informatique Inscription : juillet 2011 Messages : 6 ![]() |
Je n'ai pas résolu le problème, mais j'ai opté pour l'utilisation de NPOI, portage de POI Java en dotnet.
Le résultat est presque parfait. Aucun besoin de droits. Aucun besoin d'utiliser le DCOM Excel sur le serveur. Les dll de NPOI sont dans votre projet ou votre site et génèrent vos Excel 2 à 3 fois plus rapidement que Excel en plus et sans aucun problème de droit ! IDEAL pour un déploiement sur serveur ! Génération d'un Excel en utilisant un template : 1 - Instanciation du Worbook (sans faire appel à un objet application) : Code :
3- Accès à une ligne d'une feuille (pas d'accès à la collection de toutes les lignes rows) : 4 - Accès à une cellule (index de colonne dans un row ou ligne) : CODES pratiques : Accès et/ou affectation de la feuille par défaut (focus) : Code :
Création d'un style pour changer le background (et je dis bien le background !) en appliquant une font : Code :
Votre cellule aura un fond rouge. ATTENTION, il y un piège. NPOI considère que votre feuille se résume à peu près au tableau que vous avez défini dans votre template. Donc si vos données vont au-delà en nombre de colonnes et de lignes que le "tableau" défini dans la feuille de votre template vous devrez faire : Code :
Donc, pour les formules, celles-ci doivent respecter le format culturelle qui sera utilisé dans Excel soit en français =SOMME(A2;B7) par exemple. La valeur sera du type String et il ne faudra pas omettre la ligne cell.Sheet.ForceFormulaRecalculation = true; qui force le respect du format de votre template (nombre de chiffres après la virgule, formule insérée, formule existante non insérée, etc.). Et par sécurité, à la fin de la génération : Code :
xlSheet.ForceFormulaRecalculation = true;
|
||||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com