From: Bruce on
I'm trying to create a word doc using win32com. I don't get the same
whitespace as when printing the same stuff in the dos window. At the
terminal I manage to line up the second column like

apples 5
pears 7

I do this by adding whitespace characters to the strings in the first
column so that their length is equal to that of the longest string in
the first column.

I print the excact same string to word. but in the word doc somehting
happens that messes things up like this :

apples 5
pears 7

Needless to say, this is extremely frustrating. But why does it
happen, and how can I align the column in word?
From: Tim Golden on
On 15/07/2010 08:45, Bruce wrote:
> I'm trying to create a word doc using win32com. I don't get the same
> whitespace as when printing the same stuff in the dos window. At the
> terminal I manage to line up the second column like
>
> apples 5
> pears 7
>
> I do this by adding whitespace characters to the strings in the first
> column so that their length is equal to that of the longest string in
> the first column.
>
> I print the excact same string to word. but in the word doc somehting
> happens that messes things up like this :
>
> apples 5
> pears 7
>
> Needless to say, this is extremely frustrating. But why does it
> happen, and how can I align the column in word?

Couple of things which will help us to help you:

1) Consider what's going on *without* Python: if you take the exact
same text and spaces and type it into a Word document, does the same
thing happen? If so, then there is something of a gap in your understanding
of how Word arranges spaces, especially with proportional fonts.

2) If the text looks fine when you type it in but dodgy when programmed
in from Python, post the code here. If there's an issue with the way
your code is doing what its' doing, we need to see the code to work
that out. (Usually).

If you want things to line up in columns in Word, you probably want to
do one of two things (possibly both): use a fixed-width font, eg Courier
New;
use Word tables. If you go the latter route, it can sometimes be easier to
generate the equivalent HTML and then ask Word to open it directly. Depends.


TJG
From: Bruce on
On Jul 15, 9:59 am, Tim Golden <m...(a)timgolden.me.uk> wrote:
> On 15/07/2010 08:45, Bruce wrote:
>
>
>
>
>
> > I'm trying to create a word doc using win32com. I don't get the same
> > whitespace as when printing the same stuff in the dos window. At the
> > terminal I manage to line up the second column like
>
> > apples          5
> > pears            7
>
> > I do this by adding whitespace characters to the strings in the first
> > column so that their length is equal to that of the longest string in
> > the first column.
>
> > I print the excact same string to word. but in the word doc somehting
> > happens that messes things up like this :
>
> > apples                        5
> > pears               7
>
> > Needless to say, this is extremely frustrating. But why does it
> > happen, and how can I align the column in word?
>
> Couple of things which will help us to help you:
>
> 1) Consider what's going on *without* Python: if you take the exact
> same text and spaces and type it into a Word document, does the same
> thing happen?

Yes. Now using courier new. Thanks.
From: Grant Edwards on
On 2010-07-15, Bruce <epost2(a)gmail.com> wrote:

> I'm trying to create a word doc using win32com.

Unfortunately the phrase "word doc" is meaningless.

Exactly what format file are you trying to generate? For example: Word97 "doc" or the
new "docx" format?

> I don't get the same whitespace as when printing the same stuff in
> the dos window. At the terminal I manage to line up the second column
> like
>
> apples 5
> pears 7
>
> I do this by adding whitespace characters to the strings in the first
> column so that their length is equal to that of the longest string in
> the first column.

Are you just generating an ASCII text file and then opening it in
word?

> I print the excact same string to word. but in the word doc somehting
> happens that messes things up like this :
>
> apples 5
> pears 7
>
> Needless to say, this is extremely frustrating. But why does it
> happen, and how can I align the column in word?

Why? Because word is using a viable-spaced font and the "dos window"
uses a fixed-width font.

If you want any control over the appearance of the document, you'll
have to either force word to open the file in a fixed-width font, or
you'll have to generate a file that contains formatting information.
What you appear to want is a table.

Generating RTF has worked well for me in the past:

http://code.google.com/p/pyrtf-ng/
http://pyrtf.sourceforge.net/

An enahanced version of pyRTF that supports EMF graphics and scaling
of graphics is available here:

http://www.panix.com/~grante/files/python/PyRTF-0.46.tar.gz

If you want to generate graphics, this might be worth a look

http://pyemf.sourceforge.net/

You might also be able to generate HTML and then open that file using
Word.


--
Grant Edwards grant.b.edwards Yow! The Osmonds! You are
at all Osmonds!! Throwing up
gmail.com on a freeway at dawn!!!