xlwings快速开始
参考原文
导包
使用xlwings包
单个单元格
默认情况下,单个单元格返回为“float”,“unicode”,“None”或“datetime”对象,具体取决于单元格是否包含数字,字符串,是否为空或表示日期:
sh
>>> import datetime as dt
>>> sht = xw.Book().sheets[0]
>>> sht.range('A1').value = 1
>>> sht.range('A1').value
1.0
>>> sht.range('A2').value = 'Hello'
>>> sht.range('A2').value
'Hello'
>>> sht.range('A3').value is None
True
>>> sht.range('A4').value = dt.datetime(2000, 1, 1)
>>> sht.range('A4').value
datetime.datetime(2000, 1, 1, 0, 0)
列表
- 一维列表:表示Excel中行或列的范围作为简单列表返回,这意味着一旦它们在Python中,您就丢失了有关方向的信息。 如果这是一个问题,下一点将向您展示如何保留此信息:
sh
>>> sht = xw.Book().sheets[0]
>>> sht.range('A1').value = [[1],[2],[3],[4],[5]] # 列方向(嵌套列表)
>>> sht.range('A1:A5').value
[1.0, 2.0, 3.0, 4.0, 5.0]
>>> sht.range('A1').value = [1, 2, 3, 4, 5]
>>> sht.range('A1:E1').value
[1.0, 2.0, 3.0, 4.0, 5.0]
- 要强制单个单元格作为列表到达,请使用:
sh
>>> sht.range('A1').options(ndim=1).value
[1.0]
- 二维列表:如果必须保留行或列方向,请在Range选项中设置“ndim”。 这将返回Ranges作为嵌套列表(“二维列表”):
sh
>>> sht.range('A1:A5').options(ndim=2).value
[[1.0], [2.0], [3.0], [4.0], [5.0]]
>>> sht.range('A1:E1').options(ndim=2).value
[[1.0, 2.0, 3.0, 4.0, 5.0]]
- 2维Range自动作为嵌套列表返回。 将(嵌套)列表分配给Excel中的Range时,只需将左上角的单元格指定为目标地址就足够了。 此示例还使用索引表示法将值读回到Python中:
sh
>>> sht.range('A10').value = [['Foo 1', 'Foo 2', 'Foo 3'], [10, 20, 30]]
>>> sht.range((10,1),(11,3)).value
[['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]]
实例
python
import xlwings as xw
print("Hello,World!")
sht = xw.Book(r'文件名').sheets[0]
arr = sht.range((6,6),(36,48)).value
sum = []
pin = []
for i in range(len(arr)):
tmp = 0
k1 = []
k2 = []
for j in range(len(arr[i])):
arr[i][j] = arr[i][j].strip()
if arr[i][j] != '-':
tmp += float(arr[i][j])
k1.append(tmp)
k2.append(round(tmp/29,3))
sum.append(k1)
pin.append(k2)
print(sum)
print(pin)
sht.range('AW6').value = sum
sht.range('AX6').value = pin