xtable: Stata module for exporting table output to Excel
xtable
exports output from Stata’s built-in command table
to an Excel spreadsheet. It works as drop-in replacement: you can just replace table
with xtable
in your code and run it the same way (see Usage for minor restrictions and additional options). You will get the exact same output
in the results window, plus a link to an Excel spreadsheet containing the exported table.
table
is a very powerful and flexible command, but it’s not easy to get its nice tables out of Stata for further processing. You have to resort to copy/paste or, at best, logout
. The putexcel
command introduced in Stata 13 made exporting stuff to Excel a lot easier, but it relies on stored results and table
produces none.
xtable
leverages table
’s replace
option to create a matrix that reproduces as best as possible what’s shown on screen and then exports it using putexcel
. Because it depends on putexcel
, xtable
requires Stata 13 or newer.
For exporting Stata’s output to Word, see asdoc
. tabout
has a lot of cool features and is very useful, but it can be a little cumbersome for 3-way or higher dimension tables.
Installation
Install it by typing:
ssc install xtable
Usage
Basic syntax
You can use the exact same syntax from table
, because xtable
will just pass the arguments to table
and then export the results. So, instead of running:
sysuse auto
table foreign rep78, c(mean mpg sd mpg)
you can just append an “x” and run:
sysuse auto
xtable foreign rep78, c(mean mpg sd mpg)
Your data will be preserved, so the only difference you will see is a link to the Excel spreadsheet containing the exported table:
And the spreadsheet will look like this:
The only real restriction is that you can not use it with the by
prefix (i.e. by varname: xtable
). But bear in mind that you can specify row, column, supercolumn and up to four superrow variables, so you can get up to 7-way tabulations.
Also, the concise
option, that suppresses rows with all missing entries, will not affect the exported table. If you use it, you will still get a concise table on Stata’s results window, but the Excel spreadsheet will contain all rows.
Exporting options
By default, xtable
will export the tabulation to a file named “xtable.xlsx” in the current working directory, overwriting it if it already exists. You can control the exporting process by using the following options, which will be passed to putexcel
:
filename(string)
: name of the Excel file to be used. Default is “xtable.xlsx”. Both .xlsx and .xls extensions are accepted. If you do not specify an extension, .xlsx will be used;sheet(string)
: name of the Excel worksheet to be used. If the sheet exists in the specified file, the default is to modify it. To replace, usesheet(example, replace)
;replace
: overwrite Excel file. Default is to modify if filename() is specified or overwrite “xtable.xlsx”. Note thattable
also has areplace
option which is not honored byxtable
;modify
: modify Excel file.
Example:
webuse byssin
xtable workplace smokes race [fw=pop], c(mean prob) format(%9.3f) sc filename(myfile) sheet(prevalence) replace
Finally, the noput
option will keep xtable
from writing to any file. Instead, it will just store the matrix in r(xtable), so you can include it in a putexcel
call (or use it in another way):
webuse byssin
xtable workplace smokes race [fw=pop], c(mean prob) format(%9.3f) noput
putexcel A1 = ("A nice and informative title") A3 = matrix(r(xtable), names) using myfile.xlsx, replace
This might be particularly useful if you use Stata 14 or newer, which added formatting options to putexcel
. The matrix saved in r(xtable) will not include supercolumn labels.
Author
Weverthon Machado
PhD Candidate in Sociology
Universidade do Estado do Rio de Janeiro