python - 在 xlsxwriter 中格式化 pandas 数据框重复工作表名称
问题描述
DuplicateWorksheetName
当我尝试编写 pandas 数据框并使用 xlsxwriter 应用一些格式时出现错误。
我还没有看到类似的问题。我已经看到有关格式的问题没有选择性地应用于标题等,对此有一些解决方案。
import xlsxwriter
import pandas as pd
dest_filename="C:/Users/User11/Python test/sample.xlsx"
writer = pd.ExcelWriter(dest_filename, engine='xlsxwriter')
wb = writer.book
df1 = pd.DataFrame({'col_1': [1, 2, 3],'col_2': [4, 5, 6],}, columns=['col_1', 'col_2'])
ws = wb.add_worksheet("Sheet1")
format1 = wb.add_format({'bg_color': '#FFC7CE','font_color': '#9C0006'})
format2 = wb.add_format({'bg_color': '#000000','font_color': '#000000'})
ws.set_column('B:P', 2)
# Set the format but not the column width.
ws.set_column('A:A', None)
ws.conditional_format('B2:P16', {'type': 'blanks','stop_if_true': True,'format': format1})
df1.to_excel(writer,sheet_name="Sheet1",)
writer.save()
解决方案
“DuplicateWorksheetName”异常表明您正在尝试创建两个具有相同名称的工作表(Excel 不允许这样做)。这发生在add_worksheet("Sheet1")
anddf1.to_excel(writer,sheet_name="Sheet1")
调用中。
这样做的正确方法是将 Pandas 与 XlsxWriter 中的工作表直接操作混合使用,即使用 pandas ( .to_excel()
) 创建工作表,然后访问创建的工作表和工作簿对象。
请参阅有关使用 Python Pandas 和 XlsxWriter的 XlsxWriter 文档。这是一个基于您的代码的工作示例:
import xlsxwriter
import pandas as pd
dest_filename="C:/Users/User11/Python test/sample.xlsx"
writer = pd.ExcelWriter(dest_filename, engine='xlsxwriter')
df1 = pd.DataFrame({'col_1': [1, 2, 3],
'col_2': [4, 5, 6],},
columns=['col_1', 'col_2'])
df1.to_excel(writer,sheet_name="Sheet1")
# Get the xlsxwriter objects from the dataframe writer object.
wb = writer.book
ws = writer.sheets['Sheet1']
format1 = wb.add_format({'bg_color': '#FFC7CE','font_color': '#9C0006'})
format2 = wb.add_format({'bg_color': '#000000','font_color': '#000000'})
ws.set_column('B:P', 2)
ws.conditional_format('B2:P16', {'type': 'blanks',
'stop_if_true': True,
'format': format1})
writer.save()
推荐阅读
- linux - 有什么方法可以更改 USB 摄像头的名称吗?
- vba - 来自验证的 MS Word VBA 宏
- python - 是否可以为熊猫 GroupBy 对象编写访问器?
- google-maps - 如何从谷歌地图路线中提取路线 GPX?
- haskell - 确定第一个参数的列表是否包含第二个参数列表中的元素
- c# - 如何在 AutoFixture 中使用一个自定义对象创建对象列表?
- kotlin - 需要从序列中过滤行但将其保留为单个序列
- angular-cli - 为什么 Angular CLI 在我运行 ng serve 时会显示 sourceMappingUrl?
- python-3.x - 当用户按下回车键时,python 脚本中的“输入”函数在终端中显示回车符 (^M)
- python - 在python中比较两个列表的索引的方法