python - 在 Python 中写入 Excel 文件
问题描述
import pandas as pd
import openpyxl
filename="Tests.xlsx"
def createWorkBook():
wrkbk = openpyxl.Workbook()
ws = wrkbk.active
Sheets=["Rostered Patient","Non-Rostered Patient","Email","Error Handling"]
for sheet in Sheets:
if not sheet in wrkbk.sheetnames:
print("Created sheet: "+ sheet)
wrkbk.create_sheet(sheet)
wrkbk.save(filename)
def main():
Columns=[[""],["ID","Testing Procedure:","Pass/Fail","Issue#","Date"],[""],[""],[""]]
createWorkBook()
xl_writer = pd.ExcelWriter(filename, engine='openpyxl')
df = pd.DataFrame([["1","2","3","4","5",'6','7','8']],columns = Columns[1])
df.to_excel(xl_writer, 'Rostered Patient', index=False, startcol=1, startrow=1)
if __name__ == "__main__":
main()
我只是想将一个数据框附加到一个 Excel 文件到 Rostered Patient 选项卡。每次运行代码时,我都想附加标题和 8 个 ID。我的问题是使用 df_to_excel 与 startrow 和 startcol 一起运行它。
解决方案
您可以尝试像这样重构您的代码:
from pathlib import Path
import openpyxl
import pandas as pd
filename="Tests.xlsx"
...
def main():
Columns = [
[""],
["ID", "Testing Procedure:", "Pass/Fail", "Issue#", "Date"],
[""],
[""],
[""],
]
# Check if the WorkBook exists and get its length
if not Path(filename):
createWorkBook()
previous_df_length = 0
else:
previous_df = pd.read_excel(io=filename, sheet_name="Rostered Patient")
previous_df_length = previous_df.shape[0] + 2
# As recommended in pandas documentation, use ExcelWriter in a context manager
with pd.ExcelWriter(filename, engine="openpyxl", mode="a") as xl_writer:
df = pd.DataFrame(
[["1", "2", "3", "4", "5", "6", "7", "8"]], columns=Columns[1]
)
df.to_excel(
xl_writer,
"Rostered Patient",
index=False,
startrow=previous_df_length,
startcol=1,
)
推荐阅读
- mysql - 在 mysql 工作台的列中确定事件之间的平均差异(以天为单位)
- prolog - PROLOG:如何在 prolog 中创建 KMP 算法?
- sql-server - 执行存储在 SQL Server 表中的语句
- javascript - jsPDF问题:未捕获(在Promise中)错误:无法加载dompurify:错误:找不到模块'dompurify'
- sql - 标量函数合并行
- python-3.x - 使用 ransac.predict(line_X.reshape(1,-1)) 时出错
- python - 在列表理解的 else 块中赋值
- javascript - 没有完整的url,无法让axios执行get
- apache-kafka - IBM IIDR for kafka - 用户出口不可点击
- javascript - 页面更新后 Selenium Python Empty 返回