Excel数据与Python列表之间的读写包括读取Excel数据到Python列表和将Python列表数据写入到Excel工作表。[大谦Excel,dqexcel点com]
读取Excel数据到Python列表
对于图6-1中工作表内的行数据,将它们读取到Python列表中。
图6-1 Excel数据
实现如下:
code.python
>>> import win32com.client as win32
>>> app=win32.gencache.EnsureDispatch("excel.application")
>>> app.Visible=True
>>> bk=app.Workbooks.Add()
>>> sht=bk.Worksheets(1)
>>> lst=sht.Range("A1:E1").Value #从工作表读取数据
>>> lst
((1.0, 2.0, 3.0, 4.0, 5.0),)
>>> list(lst[0])
[(1.0, 2.0, 3.0, 4.0, 5.0)]
得到的首先是元组,用list函数转换成列表。
code.python
>>> lst=sht.Range("A1:A5").Value
>>> lst
((1.0,), (3.0,), (5.0,), (7.0,), (9.0,))
>>> lst2=[]
>>> for i in range(len(lst)):
lst2.append(list(lst[i]))
>>> lst2
[[1.0], [3.0], [5.0], [7.0], [9.0]]
>>> lst=sht.Range('A1:A5').Value
>>> lst
((1.0,), (3.0,), (5.0,), (7.0,), (9.0,))
>>> lst2=[]
>>> for i in range(len(lst)):
lst2.append(lst[i][0])
>>> lst2
[1.0, 3.0, 5.0, 7.0, 9.0]
将Python列表数据写入到Excel工作表
把列表数据写入到Excel工作表,指定区域的第1个单元格写入即可,使用其他两种方式,需要指定整个区域。下面把一维列表行数据写入到Excel工作表sht中。
code.python
>>> import win32com.client as win32
>>> app=win32.gencache.EnsureDispatch("excel.application")
>>> app.Visible=True
>>> bk=app.Workbooks.Add()
>>> sht=bk.Worksheets(1)
>>> lst=[1,2,3,4,5]
>>> sht.Range("A3:E3").Value=lst #将Python数据写入Excel工作表
结果如图6-2所示。
图6-2 Python列表数据写入到Excel工作表
如果希望Python列表数据写入到Excel工作表中的某列,分两种情况,一种是列表数据是二维列数据,可直接写入;第二种是列表数据为一维行数据,写入的时候进行转置。
code.python
>>> import win32com.client as win32
>>> app=win32.gencache.EnsureDispatch("excel.application")
>>> app.Visible=True
>>> bk=app.Workbooks.Add()
>>> sht=bk.Worksheets(1)
>>> lst=[[1],[2],[3],[4],[5]]
>>> sht.Range("C1:C5").Value=lst #直接写入
或
code.python
>>> import win32com.client as win32
>>> app=win32.gencache.EnsureDispatch("excel.application")
>>> app.Visible=True
>>> bk=app.Workbooks.Add()
>>> sht=bk.Worksheets(1)
>>> lst=[1,2,3,4,5]
>>> sht.Range("E1:E5").Value=app.WorksheetFunction.Transpose(lst) #转置
结果如图6-3所示。
图6-3 列数据写入到Excel工作表
需要指定满足大小要求的单元格区域。
code.python
>>> sht.Range("A5:B6").Value=[[1,2],[3,4]]