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限制(我也不太清楚)。一般来说,我的意思是,如果有一个功能,可以接受线和处理交叉点,那就更好了。