Mat*_*ttR 5 python excel pandas openpyxl xlsxwriter
我有一段时间前的代码,我将其重新用于新任务。任务是将一个新的 DataFrame 写入一个新的工作表,写入一个现有的 excel 文件。但是有一部分代码我不明白,但它只是使代码“工作”。
在职的:
from openpyxl import load_workbook
import pandas as pd
file = r'YOUR_PATH_TO_EXCEL_HERE'
df1 = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})
book = load_workbook(file)
writer = pd.ExcelWriter(file, engine='openpyxl')
writer.book = book # <---------------------------- piece i do not understand
df1.to_excel(writer, sheet_name='New', index=None)
writer.save()
Run Code Online (Sandbox Code Playgroud)
的小线writer.book=book让我难住了。如果没有一段代码,Excel文件将删除所有其它片材,除了在使用的片材sheetname=中的参数df1.to_excel。
我看着xlsxwriter的文档以及openpyxl的,但似乎无法弄清楚,为什么这条线给我我预期的输出。有任何想法吗?
编辑:我相信这篇文章是我最初想法的来源。
在ExcelWriter的源代码中,使用openpyxl,它初始化空工作簿并删除所有工作表。这就是为什么你需要明确添加它
class _OpenpyxlWriter(ExcelWriter):
engine = 'openpyxl'
supported_extensions = ('.xlsx', '.xlsm')
def __init__(self, path, engine=None, **engine_kwargs):
# Use the openpyxl module as the Excel writer.
from openpyxl.workbook import Workbook
super(_OpenpyxlWriter, self).__init__(path, **engine_kwargs)
# Create workbook object with default optimized_write=True.
self.book = Workbook()
# Openpyxl 1.6.1 adds a dummy sheet. We remove it.
if self.book.worksheets:
try:
self.book.remove(self.book.worksheets[0])
except AttributeError:
# compat
self.book.remove_sheet(self.book.worksheets[0])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14535 次 |
| 最近记录: |