Bonjour,
Je souhaite créer un reporting automatisé de SAS vers Excel, avec plusieurs onglets et, dans chaque onglet, des tableaux et graphiques créés sous SAS.
D’après ce que j’ai pu comprendre à travers mes 1ères lectures :
- L’utilisation du tagset ExcelXP me permet facilement de créer un fichier Excel avec plusieurs onglets mais impossible d’insérer des graphiques SAS.
- L’utilisation du tagset MSOffice2k me permet de créer un fichier Excel comportant des graphiques SAS mais impossible de créer plusieurs onglets.
J’ai essayé de contourner le problème en utilisant une proc template :
- J’utilise le tagset MSOffice2k pour créer les 2 fichiers xls (avec tableaux et graphiques) qui vont composer mes 2 onglets du fichier final. Pas de souci, mes fichiers sont créés correctement, avec tableaux et graphiques.
- Je crée ensuite une proc template qui définit la structure du fichier xls final, avec notamment les 2 onglets et le chemin vers les 2 fichiers créés précédemment (cf code joint).
- J’obtiens bien un fichier résultat final avec mes 2 onglets, les tableaux et les graphiques. Donc a priori ça fonctionne !
- Le problème c’est que ça va avec juste quelques tableaux et graphiques mais pas quand je commence à avoir beaucoup de données à afficher : seuls les graphiques du 2ème onglet apparaissent et dans le 1er onglet j’ai un espace vide à la place des graphiques.
Y a-t-il une solution ? Ca me paraît assez basique comme problème et j’imagine que beaucoup de personnes se sont posées la question avant moi.
Merci de votre aide.
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
41
42
43
44
45
46
47
48
49
50
51
52 libname steph 'xxx'; proc template; define tagset tagsets.mytags /store=steph.templat; parent=tagsets.msoffice2k; define event doc; start: put '<html xmlns:o="urn:schemas-microsoft-com:office: office"' NL; put 'xmlns:x="urn:schemas-microsoft-com:office:excel"' NL; finish: put "</html>" NL; end; define event doc_head; start: put "<head>" NL; put '<meta name="Excel Workbook Frameset">'; finish: put "<!--[if gte mso 9]><xml>" NL; put "<x:ExcelWorkbook>" NL; put " <x:ExcelWorksheets>" NL; put " <x:ExcelWorksheet>" NL; put " <x:Name>Report1</x:Name>" NL; put " <x:WorksheetSource HRef='Z: Report1.xls' />" NL; put " </x:ExcelWorksheet>" NL; put " <x:ExcelWorksheet>" NL; put " <x:Name>Report2</x:Name>" NL; put " <x:WorksheetSource HRef='Z: Report2.xls' />" NL; put " </x:ExcelWorksheet>" NL; put " </x:ExcelWorksheets>" NL; put "<x:WindowHeight>5000</x:WindowHeight>" NL; put " <x:WindowWidth>10380</x:WindowWidth>" NL; put "<x:WindowTopX>480</x:WindowTopX>" NL; put "<x:WindowTopY>45</x:WindowTopY>" NL; put "<x:ActiveSheet>0</x:ActiveSheet>" NL; put "</x:ExcelWorkbook>" NL; put "</xml><![endif]-->" NL; put "</head>" NL; end; end; run; ods path sasuser.templat sashelp.tmplmst steph.templat; ods markup file="xxx/Report.xls" tagset=tagsets.mytags; ods markup close; ods tagsets.mytags close;
Partager