As I said, "stacked" values are supported for HTML and LISTING, but are not supported for CSV destinations. So ODS CSV/CSVALL "unstacks" the info (as a favor), since it can't do "stacking". And if you think about it, you probably wouldn't want all the values pumped into 1 Excel cell anyway.
PROC TABULATE gets around that limitation by generating a separate row for every one of your variables listed in the ROW dimension. The SUM statistic is in the COLUMN dimension of the table -- so for my example, there are 3 numeric variables in SASHELP.CLASS so I get 3 separate report rows from TABULATE.
On the other hand, instead of using CSV, you can "fool" the Windows registry into launching Excel for you by creating an ODS HTML or ODS MSOFFICE2K file and naming the file with a .XLS file extension. As you can see, in this case, Excel knows how to open and render the HTML file. (If you get a warning messages about the file extension not matching the file contents, just click "Yes" to open the file -- you will see this message if you are using Office 2010 and I think Office 2007.)
cynthia
[pre]
ods msoffice2k file='c:\temp\use_mso.xls' style=minimal;
proc means data=sashelp.class sum maxdec=0;
title '1) Proc Means Report on All Numeric variables';
run;
proc tabulate data=sashelp.class f=comma6.0;
title '2) PROC TABULATE equivalent of MEANS output';
var _numeric_;
table _numeric_,
sum / box='Variable';
run;
ods _all_ close;
[/pre]