首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用openpyxl,嵌套列表开始写入/附加到单元格A2而不是A1

使用openpyxl,嵌套列表开始写入/附加到单元格A2而不是A1
EN

Stack Overflow用户
提问于 2021-07-19 19:52:21
回答 2查看 120关注 0票数 0

我有一个excel电子表格来计算每周添加的数据,以便在第一个表上进行比较,每个附加的表都是每周作为W01到W52的原始数据。我已经删除了这里的代码,使问题成为唯一不起作用的东西。实际上,我使用多个CSV并将它们放入列表中,格式化列表,然后尝试将该列表写入第一个未使用的工作表中。

它正在成功地找到第一个空工作表,但是当它将数据从列表中写入到表中时,它将从A2而不是A1开始。

所以工作表已经存在了。我已经尝试删除所有的单元格并首先清除excel中的内容,但是它总是从A2而不是A1开始。我遗漏了什么?

注意:如果这有帮助,最初,我刚刚从工作表中删除了去年的数据,当我这样离开它时,它将开始在删除的信息(如A52或其他内容)之后在第一行中添加列表的数据。删除工作表的内容已经“修正”了这个问题,所以它现在只从A2开始,但是我想从A1开始。

如果我手动向A1单元格添加某些内容,它就会工作,例如:

代码语言:javascript
运行
复制
ws_week.cell(row=1, column=1).value = 'This should be A1'

因此,我想我可以强迫它用行号的循环来编写,而对于列号的循环,但是下面的代码看起来应该是工作的。

代码语言:javascript
运行
复制
import openpyxl

output_excel = 'KB Videos 2021.xlsx' #Excel Report

#opens excel report
wb = openpyxl.load_workbook(output_excel) 

#find the first blank worksheet
for sheet in wb.sheetnames:
    if sheet == 'Weekly Stats': 
        pass #ignore first worksheet i.e. calculations
    elif wb[sheet]['A1'].value == None:
        ws_week = wb[sheet]
        break

test=[[1,2,3],['A','B','C'],[4,5,6],['a','b','c']]

for x in test:
    ws_week.append(x)

wb.save(output_excel)

print('Populated ',ws_week.value)`enter code here`)

“测试”列表中的1,2,3将被放入A2、B2、C2,而我希望它们在A1、B1、C1中。

我错过了什么?

EN

Stack Overflow用户

回答已采纳

发布于 2021-07-20 08:22:11

工作表永远不应真正被视为“空白”。当附加到工作表时,openpyxl使用一个内部计数器,该计数器将在任何现有单元格下面的next开始。当openpyxl按需创建单元时,wb[sheet]['A1'].value将隐式地创建单元格"A1“,以便它能够检查值。这就是为什么随后从第二行追加数据的原因。您可以通过删除检查后的行来避免这种情况,但也可能希望使检查更加健壮。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68446261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档