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

ODS et reporting Discussion :

Fichiers XLSX à partir de SAS (proc tabulate)


Sujet :

ODS et reporting

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    Octobre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Fichiers XLSX à partir de SAS (proc tabulate)
    Bonjour,

    Pour automatiser des sorties de fichiers Excel via SAS, j'utilise la proc tabulate et ODS htmlcss pour générer des classeurs Excel.
    J'aimerais obtenir des fichiers XLSX en sortie.
    Connaissez-vous une méthode pour y parvenir ?

    Voici la façon dont j'ai programmé mes sorties :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    %Macro Tableau(variable);
    Proc tabulate data=fusion format=7.1;
    Format X X. Y Y. &variable &variable.;
    class X Y &variable / preloadfmt order=FORMATTED ;
    TABLE (X all),Y*(&variable All)*pctn<&variable all>="%"*f=pctfmt./ printmiss;
    run;
    %Mend;
     
    ods listing close; 
    ODS  htmlcss file='C:\Q1.xls';
    %Tableau(Q1);
    ods listing close;
    Merci d'avance pour votre aide.

    Adrien

  2. #2
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    Si tu veux des sorties xls, tu peux utiliser TAGSETS.EXCELXP.
    voici un exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ODS TAGSETS.EXCELXP FILE="C:\sortie.xls" OPTIONS(SHEET_LABEL=" " SHEET_NAME="CLASS") style=DEFAULT;
    PROC TABULATE DATA=SASHELP.CLASS OUT=table;
    CLASS NAME age;
    VAR WEIGHT ;
    TABLE (NAME all)*(age ALL) (all= 'Total'), 
     ( PCTN*f=numx6.2);
    RUN;
    ODS TAGSETS.EXCELXP CLOSE ;
    j'ai ajouté un output si tu veux exploiter le résultat de la proc tabulate.

    Si tu veux absolument des sortie xlsx, j'ai trouvé cette méthode sur le net a tester

    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
     
    ods tagsets.excelxp file="c:\sas\temp.xml";
    proc print data=sashelp.class;
    run;
    ods tagsets.excelxp close;
    ods path(prepend) work.templat(update);
    filename temp url 'http://support.sas.com/rnd/base/ods/odsmarkup/tableeditor/tableeditor.tpl';
    %include temp;
    ods tagsets.tableeditor file="c:\sas\temp.html"
    options(update_target="c:\sas\temp.xml"
    excel_save_file="c:\sas\test.xlsx"
    file_format="xlsx"
    open_excel="no"
    auto_excel="yes");
    data _null_;
    file print;
    put "Save as Excel";
    run;
    ods tagsets.tableeditor close;
    Cordialement.
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    Octobre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    J'arrive jusque là à générer des fichiers XLS.
    Ce qui m'intéresse, c'est d'automatiser la génération de fichier XLSX.

    J'ai testé la méthode que tu as trouvé sur le net mais ça ne fonctionne pas.

    Néanmoins, je pense que c'est dans cette direction qu'il faille aller.

    Créer un HTML ou XML -> Ouvrir avec Excel via SAS pour enregistrer en XLSX

    Cdt

    Adrien

  4. #4
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    Néanmoins, je pense que c'est dans cette direction qu'il faille aller.

    Créer un HTML ou XML -> Ouvrir avec Excel via SAS pour enregistrer en XLSX
    Créer les fichiers XML et puis les convertir en fichiers XLSX est maintenant possible.

    Voici un exemple:

    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
     
    ODS TAGSETS.EXCELXP FILE="c:\temp\temp2_files\sortie.xml" OPTIONS(SHEET_LABEL=" " SHEET_NAME="CLASS") style=DEFAULT;
    PROC TABULATE DATA=SASHELP.CLASS OUT=table;
    CLASS NAME age;
    VAR WEIGHT ;
    TABLE (NAME all)*(age ALL) (all= 'Total'), 
     ( PCTN*f=numx6.2);
    RUN;
    ODS TAGSETS.EXCELXP CLOSE ;
     
     
    options noxsync noxwait;
     
     
    %macro test(default=c:\temp\temp2_files\,store=c:\temp\temp.vbs,ext=xml);
     data _null_;
     file "&store";
     put " Dim oXL ";
     put " Dim oFolder";
     put " Dim aFile";
     put " Dim FSO";
     put " Set oXL = CreateObject(""Excel.Application"")";
     put " Set FSO = CreateObject(""Scripting.FileSystemObject"")";
     put " oXL.DefaultFilePath = ""&default""";
     put " oXL.DisplayAlerts = False";
     put " if FSO.FolderExists(oXL.DefaultFilePath) then";
     put " Set oFolder = FSO.GetFolder(oXL.DefaultFilePath)";
     put " For each aFile in oFolder.Files ";
     put " If Right(LCase(aFile.Name), 4) = "".&ext"" Then";
     put " oXL.Workbooks.Open(aFile.Name)";
     put " oXL.Visible = False";
      put " oXL.ActiveWorkBook.SaveAs Left(aFile, Len(aFile) - 4) & "".xlsx"",51";
      put " oXL.ActiveWorkBook.Close SaveChanges = True";
     put " End If";
     put " Next";
     put " Set oFolder = Nothing";
     put " end if";
     put " FSO.DeleteFile(""&default\*.&ext""), DeleteReadOnly";
     put " oXL.DisplayAlerts = True";
     put " oXL.Quit";
     put " Set oXL = Nothing";
     
     run;
    x "cscript ""&store""";
     %mend;
     
    %test()

    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

Discussions similaires

  1. Suppression de fichier à partir de SAS
    Par stefsas dans le forum Macro
    Réponses: 3
    Dernier message: 01/10/2015, 11h27
  2. [Free Pascal] Génération d'un fichier XLSX à partir d'un fichier existant
    Par Roland Chastain dans le forum Free Pascal
    Réponses: 4
    Dernier message: 04/06/2015, 12h56
  3. SAS 9.3 & Excel 2013 - Créer un fichier XLSX à partir d'une proc tabulate
    Par Adrien M. dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/10/2014, 17h15
  4. Renommer des fichiers EXCEL à partir de SAS
    Par id301077 dans le forum ODS et reporting
    Réponses: 1
    Dernier message: 21/11/2009, 14h11
  5. supprimer fichier xls à partir de sas v9
    Par benjisan dans le forum Macro
    Réponses: 3
    Dernier message: 17/07/2008, 10h27

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