我遇到了一个我认为与需要相关的问题:
- 将数据框导出到新的 Excel 工作表(在导出时创建)
- 将特定值写入同一工作簿中的现有工作表
- 在循环中执行上述两项
我可以让 1 和 3 自己工作,我可以让 2 和 3 自己工作,但是当我尝试做所有这三件事时,它就不起作用了。我认为使用 xlsxwriter 引擎的 pandas to_excel 存在一些问题,与 sheet.write(row,column, value) 冲突到同一工作簿。
例如,这本身就可以工作(请注意,我有“作家”的东西来将数据框导出到新工作表注释掉):
import pandas as pd
import xlsxwriter
loopList = ["A","B","C","D","E"]
data = [['tom', 10], ['nick', 15], ['juli', 14]]
counter = 1
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Name', 'Age'])
workbook = xlsxwriter.Workbook('C:\\Test\\Test.xlsx')
totalsSheet = workbook.add_worksheet('Totals')
writer = pd.ExcelWriter('C:\\Test\\Test.xlsx', engine = 'xlsxwriter')
for sheets in loopList:
#df.to_excel(writer, sheet_name = sheets, index=False)
totalsSheet.write(counter, counter, sheets + str(counter))
counter+=1
#writer.save()
#writer.close()
workbook.close()
以上使 test.xlsx 工作簿具有总计工作表,在递增行/列中具有“A1”、“B2”等。
同样,当我注释掉工作簿的内容并且联合国将 pandas-export 数据框注释到新工作表时,这也有效:
import pandas as pd
import xlsxwriter
loopList = ["A","B","C","D","E"]
data = [['tom', 10], ['nick', 15], ['juli', 14]]
counter = 1
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Name', 'Age'])
workbook = xlsxwriter.Workbook('C:\\Test\\Test.xlsx')
totalsSheet = workbook.add_worksheet('Totals')
writer = pd.ExcelWriter('C:\\Test\\Test.xlsx', engine = 'xlsxwriter')
for sheets in loopList:
df.to_excel(writer, sheet_name = sheets, index=False)
#totalsSheet.write(counter, counter, sheets + str(counter))
counter+=1
writer.save()
writer.close()
#workbook.close()
以上为我提供了一个新的测试工作簿,其中包含 5 个工作表(A、B、C 等),每个工作表都导出了相同的数据框。
但是,我似乎不能两者都做;根据我写入 Excel 的行的顺序,它仍然只执行一个或另一个(我没有收到错误,我只是得到一个不是我想要做的两件事的结果)。
有没有办法在同一个循环中完成这两件事?
我正在使用 python 3.xx 感谢您的帮助。