save xls to csv/dbf without Excel/win32com.client

N

noydb

Is there a way to save a .xls file (the first worksheet) as a .dbf
or .csv without opening an instance of Excel with win32com.client
(been awhile, is this the best module these days for v2.5)? In case a
computer does not have Excel (2007) installed.
 
T

Tim Chase

Is there a way to save a .xls file (the first worksheet) as a .dbf
or .csv without opening an instance of Excel with win32com.client
(been awhile, is this the best module these days for v2.5)? In case a
computer does not have Excel (2007) installed.

Use the "xlrd" module[1]

############################
import csv
import xlrd

FILE_NAME = 'example.xls'
wb = xlrd.open_workbook(FILE_NAME)

for name in wb.sheet_names():
out = file('%s.csv' % name, 'wb')
writer = csv.writer(out)
sheet = wb.sheet_by_name(name)
for row in xrange(sheet.nrows):
writer.writerow([
sheet.cell_value(row, col)
for col in xrange(sheet.ncols)
])
out.close()
#############################

You say you only want the first sheet, so adjust accordingly.

-tkc

[1]
http://pypi.python.org/pypi/xlrd/
 
N

noydb

Is there a way to save a .xls file (the first worksheet) as a .dbf
or .csv without opening an instance of Excel with win32com.client
(been awhile, is this the best module these days for v2.5)?  In case a
computer does not have Excel (2007) installed.

Use the "xlrd" module[1]

############################
import csv
import xlrd

FILE_NAME = 'example.xls'
wb = xlrd.open_workbook(FILE_NAME)

for name in wb.sheet_names():
   out = file('%s.csv' % name, 'wb')
   writer = csv.writer(out)
   sheet = wb.sheet_by_name(name)
   for row in xrange(sheet.nrows):
     writer.writerow([
       sheet.cell_value(row, col)
       for col in xrange(sheet.ncols)
       ])
   out.close()
#############################

You say you only want the first sheet, so adjust accordingly.

-tkc

[1]http://pypi.python.org/pypi/xlrd/

Many thanks Tim, this worked well!

In the interest of learning, anyone have a XLS to DBF solution?
 
T

Tim Chase


Many thanks Tim, this worked well!

In the interest of learning, anyone have a XLS to DBF solution?

This becomes considerably trickier unless you're willing to have
all your DBF fields be CHAR-format rather than their actual
data-type. In an Excel file, one column can hold multiple
data-types (text, numbers, formulas, dates, currency, etc)
whereas (from my humble understanding) a single column in a DBF
must be of the same data-type.

That said, if you want to attempt it, I'd suggest using

http://dbfpy.sourceforge.net/

to create the DBF files using code similar to my CSV version
(which mostly iterates over the Excel workbook and dumps the
contents to CSV files -- just change it to dump the contents to
your DBF).

-tkc
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,525
Members
44,997
Latest member
mileyka

Latest Threads

Top