Python 使用xlsxwriter和pandas创建重叠的boarder颜色

Python 使用xlsxwriter和pandas创建重叠的boarder颜色,python,pandas,formatting,conditional-formatting,xlsxwriter,Python,Pandas,Formatting,Conditional Formatting,Xlsxwriter,鉴于以下数据: 将熊猫作为pd导入 将numpy作为np导入 #样本数据 np.随机种子(1) np.随机种子(1) df=pd.DataFrame( np.random.randint(低=0,高=1000,大小=(6,5)), 列=[“X”、“a”、“b”、“c”、“d”], 索引=[“a”、“b”、“X”、“d”、“e”、“X”], ) 我可以使用以下方法创建带有格式化boarders的xlsx文件: 以pd.ExcelWriter(“testing.xlsx”)作为编写器的: #需要为

鉴于以下数据:

将熊猫作为pd导入
将numpy作为np导入
#样本数据
np.随机种子(1)
np.随机种子(1)
df=pd.DataFrame(
np.random.randint(低=0,高=1000,大小=(6,5)),
列=[“X”、“a”、“b”、“c”、“d”],
索引=[“a”、“b”、“X”、“d”、“e”、“X”],
)
我可以使用以下方法创建带有格式化boarders的xlsx文件:

以pd.ExcelWriter(“testing.xlsx”)作为编写器的
:
#需要为此示例创建xlsx输出
表\u name=“表1”
df.to\u excel(编写器,工作表名称=工作表名称)
工作簿=writer.book
工作表=编写器.工作表[工作表名称]
#创建水平线
行_范围=(3,3)
col_范围=(1,8)
工作表.U格式(
行_范围[0],
col_范围[0],
行_范围[1],
col_范围[1],
{
“类型”:“无错误”,
“格式”:工作簿。添加\u格式(
{
"顶":2,,
“边框颜色”:“红色”,
}
),
},
)
#创建垂直线
行_范围=(1,9)
col_范围=(4,4)
工作表.U格式(
行_范围[0],
col_范围[0],
行_范围[1],
col_范围[1],
{
“类型”:“无错误”,
“格式”:工作簿。添加\u格式(
{
"左":二,,
“边框颜色”:“红色”,
}
),
},
)
但是,格式不正确(或不符合要求),看起来:

不正确的部分是:

似乎我无法格式化一个单元格两次?这是一个问题


这个问题可能会从创建重叠的boarder扩展到创建重叠的条件格式,我对xlsxwriter还不太熟悉,因此无法回答。

我找到了解决方法,因为它看起来像一个bug,我不是该模块的作者

这样做的目的是不让细胞重叠。我将2个范围分成5个范围。位于十字路口的单元格有两个彩色边框

import pandas as pd
import numpy as np
# sample data
np.random.seed(1)
np.random.seed(1)
df = pd.DataFrame(
    np.random.randint(low=0, high=1000, size=(6, 5)),
    columns=["X", "a", "b", "c", "d"],
    index=["a", "b", "X", "d", "e", "X"],
)

with pd.ExcelWriter("C:\\Users\\kemot\\Desktop\\programy Python\\testing.xlsx") as writer:
    #  need to create xlsx output for this example
    sheet_name = "Sheet1"
    df.to_excel(writer, sheet_name=sheet_name)
    workbook = writer.book
    worksheet = writer.sheets[sheet_name]

 
   # create horizontal line
    worksheet.conditional_format(
        'A4:B4',
        {
            "type": "no_errors",
            "format": workbook.add_format(
                {
                    "bottom": 2,
                    "border_color": "red",
                }
            ),
        },
    )

    worksheet.conditional_format(
        'C4',
        {
            "type": "no_errors",
            "format": workbook.add_format(
                {
                    "right": 2,
                    "bottom": 2,
                    "border_color": "red",
                }
            ),
        },
    )

    worksheet.conditional_format(
        'D4:F4',
        {
            "type": "no_errors",
            "format": workbook.add_format(
                {
                    "bottom": 2,
                    "border_color": "red",
                }
            ),
        },
    )
    # create vertical line

    worksheet.conditional_format(
        'D1:D3',
        {
            "type": "no_errors",
            "format": workbook.add_format(
                {
                    "left": 2,
                    "border_color": "red",
                }
            ),
        },
    )

    worksheet.conditional_format(
        'D5:D10',
        {
            "type": "no_errors",
            "format": workbook.add_format(
                {
                    "left": 2,
                    "border_color": "red",
                }
            ),
        },
    )

干杯,我想我需要一种方法来概括这一点,以便它成为一个解决方案。我认为这是一个bug。你有不同的观点吗?是的,这可能被认为是一个bug,但我不确定这是excel限制还是xlsxwriter限制(我也不太清楚)。一般来说,我的意思是,如果有一个功能,可以接受线和处理交叉点,那就更好了。