鱼C论坛

 找回密码
 立即注册
查看: 1572|回复: 13

[已解决]openpyxl 批量赋值excel

[复制链接]
发表于 2020-7-30 23:03:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

如果是逐一赋值的话,还是比较简单的,但是想请教下大神们有没有批量赋值的办法
最佳答案
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[i])
wb.save('test.xlsx')
这是你要的效果?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-30 23:45:55 | 显示全部楼层

大神,小弟刚起步,有点没看懂,能否细说下。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-31 00:00:42 | 显示全部楼层
可以用方法二,行列来赋值
7. 访问单元格(call)
① 单一单元格访问
# 方法一
>>> c = ws['A4']
# 方法二:row 行;column 列
>>> d = ws.cell(row=4, column=2, value=10)
# 方法三:只要访问就创建
>>> for i in  range(1,101):
...         for j in range(1,101):
...            ws.cell(row=i, column=j)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-31 09:43:23 | 显示全部楼层
疾风怪盗 发表于 2020-7-31 00:00
可以用方法二,行列来赋值
7. 访问单元格(call)
① 单一单元格访问

感谢大神回复
不过这种赋值方式是不是只能对多个单元格写入同一个值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-31 10:45:39 | 显示全部楼层
ws.cell(row=4, column=2)=10
这样不行么,你试试
只要有数字了,就好做循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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  这种
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-31 16:17:10 | 显示全部楼层
你的意思是这些没有规律的值,要写到单元格里?那这些值是怎么产生的呢?你自己赋值的列表还是要通过某种方式自动生成?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这些要赋值的内容是已知的,就是我要对一个excel 表制作一个表头,表头内容是已知的,但是我又不想一个个的去ws['A1'] = ‘Q’ 这样去赋值,所以我在想是不是能通过表头的坐标和列表的索引匹配去批量赋值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[i])
wb.save('test.xlsx')
这是你要的效果?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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',这个是为啥啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-31 17:16:27 | 显示全部楼层
我运行了没问题,不知道你这个报错是什么意思,是不是没有写ws=wb.active?,写了的话ws.cell肯定有啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-31 17:17:58 | 显示全部楼层
疾风怪盗 发表于 2020-7-31 17:16
我运行了没问题,不知道你这个报错是什么意思,是不是没有写ws=wb.active?,写了的话ws.cell肯定有啊
  1. import openpyxl
  2. from openpyxl import load_workbook

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

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

  6. for i in range(0,len(content)):
  7.     ws.cell(row =1,column = i+1,value = content[i])
  8. wb.save('test0731.xlsx')
复制代码



我的代码是这样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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都没有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-31 20:52:08 | 显示全部楼层
疾风怪盗 发表于 2020-7-31 17:44
Workbook对象
一个Workbook对象代表一个Excel文档,因此在操作Excel之前,都应该先创建一个Workbook对象。 ...

试了下真的是这样,再次感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-5 17:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表