马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码:from openpyxl import Workbook
from pandas import read_csv
df = read_csv('1.csv')
book = Workbook()
sheet = book.active # 当前工作表
sheet['A1:B1'] = list(df.columns)[1:]
book.save("2.xlsx")
1.csv:,电影名称,电影类型
0,名侦探柯南 灰原哀物语~黑铁的神秘列车~,2023 / 日本 / 剧情 动画 / 高山南 林原惠美
1,风再起时,2022 / 中国香港 中国大陆 / 剧情 动作 犯罪 / 翁子光 / 郭富城 梁朝伟
2,新大头儿子和小头爸爸5:我的外星朋友,2022 / 中国大陆 / 喜剧 动画 家庭 儿童 / 何澄 刘可欣 / 鞠萍 董浩
3,婚礼上我们讨厌的人,2022 / 美国 / 喜剧 / 克莱尔·斯坎伦 / 艾莉森·珍妮 辛希亚·阿戴-罗宾森
4,达荷美女战士,2022 / 美国 加拿大 / 剧情 动作 历史 / 吉娜·普林斯-拜斯伍德 / 维奥拉·戴维斯 图索·姆贝杜
5,银河英雄传说 Die Neue These 策谋 第1章,2022 / 日本 / 动画 / 多田俊介
6,优等生社团,2022 / 加拿大 美国 / 喜剧 爱情 / Oran Zegman / 安格瑞·赖斯 伽塔·马塔拉佐
错误发生在这一行:
sheet['A1:B1'] = list(df.columns)[1:]
在 openpyxl 中,对于像 sheet['A1:B1'] 这样的多单元格范围赋值是不被允许的。这会导致你看到的 AttributeError: 'tuple' object has no attribute 'value'。
解决这个问题,你需要将列名单独写入每个单元格。尝试下面的代码:
from openpyxl import Workbook
from pandas import read_csv
df = read_csv('1.csv')
book = Workbook()
sheet = book.active # 当前工作表
columns = list(df.columns)[1:]
for index, column_name in enumerate(columns):
cell = sheet.cell(row=1, column=index+1)
cell.value = column_name
book.save("2.xlsx")
上面的代码将会把每个列名分别写入第一行的每个单元格中。 enumerate 函数返回了每个列名以及它的索引,然后我们使用 sheet.cell(row=1, column=index+1) 来获取对应的单元格,并把列名写入这个单元格中。请注意,在 openpyxl 中,行和列的索引都是从 1 开始的,所以我们在索引上加了 1。
|