[Tutor] create an xls file using data from a txt file
James Reynolds
eire1130 at gmail.com
Wed May 11 16:53:50 CEST 2011
Slow day at work, so I tried something a little different mostly as a
learning exercise for myself, let me know what you all think.
I thought it would be useful to have a writer that scales and that organizes
the data. For example, you might have 20 tests one day, and 5 the next.
I broke up the data into dictionaries where the IDs were keys, and
everything that follows is a tuple of testX and result.
Instead of iterating through each column, it only writes to the columns
where data is present.
Disclaimer: I am copying and pasting into Gmail, which sometimes screws up
indents.
I also put it into pastebin, which was pretty exciting considering I have
never used it before:
http://pastebin.com/2Dke5FtX
import xlwt
class Parser:
'''
classdocs
'''
def __init__(self, test, result):
'''
Constructor
'''
self.result = result
self.test = test
self.id = int(self.test[4:])
x = open('test.txt')
id_dict = {}
for all in x:
y = all.split(" ")
y[-1] = y[-1].strip()
id_dict[y[0]] = y[1:]
max_test = 0
for key, lists in id_dict.items():
length = len(lists)/2
a = 0
parser_list = []
for items in range(length):
t = (lists[a], lists[a+1])
p = Parser(*t)
parser_list.append(p)
if max_test < p.id:
max_test = p.id
a +=2
id_dict[key] = parser_list
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet("testruns", cell_overwrite_ok=True)
header = 'TEST{0}'
headers = ['ID']
range_id = range(max_test +1)
for all in range_id[1:]:
headers.append(header.format(all))
for i, colno in enumerate(headers):
print i, type(i)
worksheet.write(0, i, colno)
rowno = 1
for keys, values in id_dict.items():
worksheet.write(rowno, 0, keys)
for object_lists in values:
worksheet.write(rowno, object_lists.id , object_lists.result)
rowno +=1
workbook.save("test.xls")
On Wed, May 11, 2011 at 9:58 AM, Walter Prins <wprins at gmail.com> wrote:
>
>
> On 11 May 2011 14:34, tee chwee liong <tcl76 at hotmail.com> wrote:
>
>> hi all,
>>
>> thanks for this sharing. when i copy and run this code, i got this error:
>>
>> Traceback (most recent call last):
>> File "C:/Python25/myscript/excel/sampleexcel.py", line 1, in <module>
>> import csv
>> File "C:/Python25/myscript/excel\csv.py", line 3, in <module>
>> w=csv.writer(open('output.csv','w'))
>> AttributeError: 'module' object has no attribute 'writer'
>>
>>
> Well, reading the error message, it's saying that module "csv", coming from
> file "C:/Python25/myscript/excel\
> csv.py" has no member "writer". So, it seems you've called your test
> script (module) "csv" which effecitvely hid the standard python "csv"
> module.
>
> Try renaming your script file to something else ('testcsv.py' maybe) so its
> name doesn't conflict with the standard "csv" module and try again.
>
> Walter
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20110511/fc2cbf27/attachment.html>
More information about the Tutor
mailing list