[英]Write to multiple rows in excel sheet using pandas xlsxwriter
我正在嘗試使用 xlsxwriter 將值寫入 excel 表。
當試圖將數據寫入第二行時,數據會覆蓋到第一行本身。 由於我是 xlsx 作家的新手,我無法弄清楚在哪里迭代。
import pandas as pd
from pandas import ExcelWriter
def outputInExcel(valueToExcel):
with ExcelWriter('pandas.xlsx', mode='A', engine='xlsxwriter') as writer:
# write operation perform
valueToExcel.to_excel(writer,startrow=1, header=False)
worksheet = writer.sheets['Sheet1']
workbook = writer.book
header_format = workbook.add_format({
'bold': True,
'text_wrap': True,
'valign': 'top',
'fg_color': '#D7E4BB',
'border': 1})
for row_num,col_num,value in enumerate(valueToExcel.columns.values):
worksheet.write(0, col_num + 1, value, header_format)
writer.save()
file = "Search.xlsx"#image reference
df = pd.read_excel(file)
for index, row in df.iterrows():
valueToExcel = pd.DataFrame({
'Manager': [row['Manager']], 'Policy Name': [row['Policy Name']], 'Numbers': [row['Numbers'], 'Source IP': [row['Source']], 'Destination IP': [row['Destination']]
})
outputInExcel(valueToExcel)
我期待像這樣的 output。
我得到一個像這樣的 output。
您的代碼存在一些問題; 您每次都覆蓋同一行,並且每行都重新啟動編寫器,因此效率不高。 我的建議是將整個 dataframe 寫在一個 go 中:
writer = ExcelWriter('pandas.xlsx', mode='A', engine='xlsxwriter')
worksheet = writer.sheets['Sheet1']
workbook = writer.book
header_format = workbook.add_format({
'bold': True,
'text_wrap': True,
'valign': 'top',
'fg_color': '#D7E4BB',
'border': 1
})
# write the header separately so you can format it
for col_num, value in enumerate(['Manager', 'Policy Name', 'Numbers', 'Source IP', 'Destination IP']):
worksheet.write(0, col_num + 1, value, header_format)
df = pd.read_excel(file)
# if you only want specific columns
df = df[['Manager', 'Policy Name', 'Numbers', 'Source', 'Destination']]
df.to_excel(writer, sheet_name=name, index=False, header=False, startrow=1)
writer.save()
我試圖讓它盡可能與您的代碼相同,我只是刪除了循環並將代碼移出 function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.