weiyideid823 发表于 2020-7-30 23:03:35

openpyxl 批量赋值excel

请教下大神们,怎样批量赋值excel的表头

比如说 Q,W,E,R,T,Y,U,I,O,P 这几个毫无规律的字母怎么样能批量赋值成为一个excel的表头

如果是逐一赋值的话,还是比较简单的,但是想请教下大神们有没有批量赋值的办法

weiyideid823 发表于 2020-7-30 23:45:55

zltzlt 发表于 2020-7-30 23:10


大神,小弟刚起步,有点没看懂,能否细说下。。。

疾风怪盗 发表于 2020-7-31 00:00:42

可以用方法二,行列来赋值
7. 访问单元格(call)
① 单一单元格访问
# 方法一
>>> c = ws['A4']
# 方法二:row 行;column 列
>>> d = ws.cell(row=4, column=2, value=10)
# 方法三:只要访问就创建
>>> for i inrange(1,101):
...         for j in range(1,101):
...            ws.cell(row=i, column=j)

weiyideid823 发表于 2020-7-31 09:43:23

疾风怪盗 发表于 2020-7-31 00:00
可以用方法二,行列来赋值
7. 访问单元格(call)
① 单一单元格访问


感谢大神回复
不过这种赋值方式是不是只能对多个单元格写入同一个值?

疾风怪盗 发表于 2020-7-31 10:45:39

ws.cell(row=4, column=2)=10
这样不行么,你试试
只要有数字了,就好做循环了

weiyideid823 发表于 2020-7-31 16:00:58

疾风怪盗 发表于 2020-7-31 10:45
ws.cell(row=4, column=2)=10
这样不行么,你试试
只要有数字了,就好做循环了

感谢回复!
如果是给一行单元格批量写入一些没有规律的值呢,比如 Q,W,E,R,T,Y,U,I,O,P这种

疾风怪盗 发表于 2020-7-31 16:17:10

你的意思是这些没有规律的值,要写到单元格里?那这些值是怎么产生的呢?你自己赋值的列表还是要通过某种方式自动生成?

weiyideid823 发表于 2020-7-31 16:27:44

疾风怪盗 发表于 2020-7-31 16:17
你的意思是这些没有规律的值,要写到单元格里?那这些值是怎么产生的呢?你自己赋值的列表还是要通过某种方 ...

这些要赋值的内容是已知的,就是我要对一个excel 表制作一个表头,表头内容是已知的,但是我又不想一个个的去ws['A1'] = ‘Q’ 这样去赋值,所以我在想是不是能通过表头的坐标和列表的索引匹配去批量赋值?

疾风怪盗 发表于 2020-7-31 16:38:12

from openpyxl import load_workbook

wb=load_workbook('test.xlsx')
ws=wb.active
content=['q','w','e','r','t','y']
for i in range(0,len(content)):
    ws.cell(row=1,column=i+1,value=content)
wb.save('test.xlsx')
这是你要的效果?

weiyideid823 发表于 2020-7-31 17:04:26

疾风怪盗 发表于 2020-7-31 16:38
from openpyxl import load_workbook

wb=load_workbook('test.xlsx')


对对,是这个意思,但是我运行的时候报错 AttributeError: 'NoneType' object has no attribute 'cell',这个是为啥啊

疾风怪盗 发表于 2020-7-31 17:16:27

我运行了没问题,不知道你这个报错是什么意思,是不是没有写ws=wb.active?,写了的话ws.cell肯定有啊

weiyideid823 发表于 2020-7-31 17:17:58

疾风怪盗 发表于 2020-7-31 17:16
我运行了没问题,不知道你这个报错是什么意思,是不是没有写ws=wb.active?,写了的话ws.cell肯定有啊

import openpyxl
from openpyxl import load_workbook

wb=openpyxl.Workbook('test0731.xlsx')
ws=wb.active

content=['q','w','e','r','t','y']

for i in range(0,len(content)):
    ws.cell(row =1,column = i+1,value = content)
wb.save('test0731.xlsx')


我的代码是这样的

疾风怪盗 发表于 2020-7-31 17:44:51

Workbook对象
一个Workbook对象代表一个Excel文档,因此在操作Excel之前,都应该先创建一个Workbook对象。对于创建一个新的Excel文档,直接进行Workbook类的调用即可,对于一个已经存在的Excel文档,可以使用openpyxl模块的load_workbook函数进行读取,该函数包涵多个参数,但只有filename参数为必传参数。filename 是一个文件名,也可以是一个打开的文件对象。

可能wb=openpyxl.Workbook('test0731.xlsx')这句话光创建文件吧,访问文件还是要load_workbook才行的,没有访问的话,我刚也试了下,打印出来都是空值,sheetname都没有

weiyideid823 发表于 2020-7-31 20:52:08

疾风怪盗 发表于 2020-7-31 17:44
Workbook对象
一个Workbook对象代表一个Excel文档,因此在操作Excel之前,都应该先创建一个Workbook对象。 ...

试了下真的是这样,再次感谢!
页: [1]
查看完整版本: openpyxl 批量赋值excel