I'm working on a reporting macro which takes a SAS data set as input and spits it out to excel so that it looks pretty and is formatted nicely. I've got everything where I want it except that the columns aren't wide enough for several fields (long names, addresses, etc). I know that this can easily be remedited with width= but since I'm doing it as a macro for any data set is there any way to auto fit the width of each column based on the length of the data in the input data set? Relevant SAS Code: /* create "column" statement on the fly */
proc sql noprint;
select strip(name)
into :column_names separated by " "
from dictionary.columns
where upcase(memname) = upcase("&data_set");
quit;
/* create "define" statements on the fly */
proc sql noprint;
select cat("define ", name, " / display ", '"', strip(coalesce(label, name)), '" CENTER', "; ")
into :definition_lines separated by " "
from dictionary.columns
where upcase(memname) = upcase("&data_set.");
quit;
ods excel file = &out.
options (row_heights = "55, 12, 0, 16, 0, 0, 0"
sheet_interval = "PROC"
orientation = "landscape"
center_horizontal = "yes"
scale = "80"
embedded_titles = "yes"
frozen_headers = "5"
gridlines = "off"
row_repeat = "1-4"
sheet_name = &sheet.);
proc report data = &data_set. nowd missing center headline headskip
style(header) = {font_weight = BOLD
background=#418fde
foreground=white}
style(column)={vjust=center
tagattr="wrap:no"
asis=on};
column &column_names.;
&definition_lines.
run;
Any help is appreciated, thank you.
... View more