B
Bell, Kevin
I'm pulling a range of cells from Excel into a list and the data in
Excel is a number or possibly some text like an asterisk. Each member
of the list is a com object (I think) and I'm converting them to
integers (or to None if not numberic) but my method seems very silly.
Is this the best way to go about it?
It does exactly what it should, but it seems like a lot of extra BS to
convert my object to a string to a float to a rounded integer! Don't
laugh. I'm new at this!
THE SCRIPT:----------------------------------
import win32com.client
xlApp = win32com.client.Dispatch("Excel.Application")
f = r"C:\py\TrafficVolumes\xlTestDocs\3125113A.xls"
xlApp.Visible = 0
xlApp.Workbooks.Open(f)
list = xlApp.ActiveWorkbook.ActiveSheet.Range("Q13:Q36")
print list
print "\n"
def comObjToInteger(myObj):
try:
s = str(myObj)
fl = float(s)
integer = int(round(fl))
return integer
except:
return None
for i in list:
print comObjToInteger(i)
xlApp.ActiveWorkbook.Close(SaveChanges=0)
xlApp.Quit()
del xlApp #clean up
----------------------------------------------
THE RESULT:--------------------
((4.7999999999999998,), (u'*',), (2.0,), (1.6000000000000001,),
(5.5999999999999996,), (19.399999999999999,), (25.0,),
(38.799999999999997,), (32.799999999999997,), (21.0,), (24.0,),
(17.399999999999999,), (22.800000000000001,), (22.600000000000001,),
(33.799999999999997,), (35.399999999999999,), (29.199999999999999,),
(35.399999999999999,), (32.200000000000003,), (26.0,),
(24.399999999999999,), (22.800000000000001,), (14.0,), (11.6,))
my converted values:
5
None
2
2
6
19
25
39
33
21
24
17
23
23
34
35
29
35
32
26
24
23
14
12
----------------------------------
Excel is a number or possibly some text like an asterisk. Each member
of the list is a com object (I think) and I'm converting them to
integers (or to None if not numberic) but my method seems very silly.
Is this the best way to go about it?
It does exactly what it should, but it seems like a lot of extra BS to
convert my object to a string to a float to a rounded integer! Don't
laugh. I'm new at this!
THE SCRIPT:----------------------------------
import win32com.client
xlApp = win32com.client.Dispatch("Excel.Application")
f = r"C:\py\TrafficVolumes\xlTestDocs\3125113A.xls"
xlApp.Visible = 0
xlApp.Workbooks.Open(f)
list = xlApp.ActiveWorkbook.ActiveSheet.Range("Q13:Q36")
print list
print "\n"
def comObjToInteger(myObj):
try:
s = str(myObj)
fl = float(s)
integer = int(round(fl))
return integer
except:
return None
for i in list:
print comObjToInteger(i)
xlApp.ActiveWorkbook.Close(SaveChanges=0)
xlApp.Quit()
del xlApp #clean up
----------------------------------------------
THE RESULT:--------------------
((4.7999999999999998,), (u'*',), (2.0,), (1.6000000000000001,),
(5.5999999999999996,), (19.399999999999999,), (25.0,),
(38.799999999999997,), (32.799999999999997,), (21.0,), (24.0,),
(17.399999999999999,), (22.800000000000001,), (22.600000000000001,),
(33.799999999999997,), (35.399999999999999,), (29.199999999999999,),
(35.399999999999999,), (32.200000000000003,), (26.0,),
(24.399999999999999,), (22.800000000000001,), (14.0,), (11.6,))
my converted values:
5
None
2
2
6
19
25
39
33
21
24
17
23
23
34
35
29
35
32
26
24
23
14
12
----------------------------------