Skip to content

xlwings快速开始

参考原文

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

未经许可禁止任何形式的转载