Hi,
We are required to produce .docx files with SAS. I searched on web and did not find a good solution. Does anyone help me to figure it out?
Thanks
Why the docx requirement? We always output to RTF which is plain text with markup which Word can read just fine, and is portable and readable by anything, much better. As for creating M$ Proprietary DOCX file format, I don't know of a direct way from SAS, Word is pretty awful to use, even worse than Excel. Use RTFand if necessary SaveAs from Word when it has opened the RTF.
The "best" in terms of possibility of personalization would be using Add.-in for MS Office.
Using RTF ODS destination is another alternative (there are probably more).
AC need to compile the finall files, so they asked for using docx format, instead of doc and rtf. I guess for AC docx is easy for compiling with new version of word.
AC? I would check the requirement, RTF should be compilable with other file no problem, as I said, RTF is well accepted by Word. As for final compilation, from my understanding PDF is preferred by almost everyone, at least in my industry, and it should matter what file format, you just print to PDF.
AC: Administrative Coordinator
I find to a way by using VBA to convert doc to docx. However I like to use SAS to produce docx files directly if possible.
Does someone know how to use sas to produce docx files directlly?
@Niugg2010 wrote:
AC: Administrative Coordinator
I find to a way by using VBA to convert doc to docx. However I like to use SAS to produce docx files directly if possible.
Does someone know how to use sas to produce docx files directlly?
If you can use VBA to convernt doc to docx then you should be able to convert RTF to docx just as easily.
Yes. You are correct.
At present, SAS doesn't offer a way to create DOCX files directly. You can create an RTF file using ODS RTF and then using a VB script to convert the RTF file into a DOCX. If you system allows X command, SAS can call the VB Script as well.
Or you could combine them into PDF which is what I suspect the end product may be.
If you have the Add In for Microsoft you can likely build the report in word and create the DOCX file, but I suspect that's a lot more difficult than ODS RTF.
Hi:
A .DOCX file is really a zip archive that holds XML files that describe your document. So a .DOCX file is not one file, it is a collection of files that conform to the new Microsoft XML standard for describing Word docs.
SAS creates RTF -- not Microsoft proprietary XML as .DOCX. If you need to convert an RTF file to .DOCX, then write the RTF file to a folder and convert it to .DOCX using VBScript or some other process.
You can prove to yourself that a DOCX file is a zip archive by doing this:
1) make a Word document and save it as .DOCX
2) close Word and find the file in Windows Explorer and rename the file from .DOCX
3) Rename the file to .ZIP -- click yes when you get the warning about changing the file extension
4) Open the renamed file with WinZip or a utility that will allow you to explore the folder trees
5) Explore the structure of the zip archive folders -- you will see a lot of XML files
6) You will find the main text of your document in the document.xml file inside the archive
Here are screenshots that illustrate the process --split into 2 images --
Then:
Most companies generate RTF files with SAS and then either resave them to .DOCX before editing or combine multiple RTF files in Word and then save as .DOCX after editing.
Note that there was NO SAS programming involved in the above process. The only applications used were Word, Windows Explorer, WinZip and Notepad.
cynthia
Great thanks. Understand.
This is actually dated now. As of SAS 9.4, there is a preproduction version of ods word which will directly created docx files. For example, the following code produces the attached MS Word document.
ods word file="C:\temp\myoutput.docx"; proc print data=sashelp.class; run; ods word close;
Interesting that after all this time they have made DOCX a destinatation. I would still however stand by my original posts. RTF being a far better format for outputs. The reasons, RTF is markup, you can insert markup via report, or in data, its open, plain text file format makes it machine and programmatically readable, can be opened and parsed just like a word document. So has all the functionality, without the drawbacks of docx (which is a zip file with XML parts). If you need PDF from it, you can directly convert to PDF from RTF. Only if there was no other option would I be generating docx off the bat.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.