我对使用python进行编码相对较新,因此遇到了编码问题,无法合并来自输入excel的单元格中的相似字体颜色文本并将输出保存回excel文件。输入的excel文件如下所示:-
------------
| John | #black color font text
------------
| Charlie | #black color font text
------------
| Sean | #red color font text
------------
| Johnny | #red color font text
------------
| Tom | #black color font text
------------
| Ronny | #red color font text
------------
| Larry | #black color font text
------------
黑色字体文本应合并在一起,而红色字体文本应合并在一起。输出应分为black-red-black字体文本块。第一组Block-1单元格应具有以下值:-
--------------
|John Charlie| #black color font text
--------------
|Sean Johnny | #red color font text
--------------
|Tom | #black color font text
---------------
要添加到输出excel的第二个Block-2单元格组应具有Block-1的最后黑色字体文本,其余值应紧随其后。
---------------
|Tom | #black color font text
---------------
|Ronny | #red color font text
---------------
|Larry | #black color font text
---------------
最终输出excel应该是Block-1和Block-2的组合,这意味着'Tom'应该在输出excel中重复两次。
import xlrd
book = xlrd.open_workbook("input-out.xls", formatting_info=True)
def font_color(xf):
font = book.font_list[xf.font_index]
if not font:
return None
return get_color(font.colour_index)
def get_color(color_index):
return book.colour_map.get(color_index)
red_rows = []
black_rows = []
sheets = book.sheet_names()
for index, sh in enumerate(sheets):
sheet = book.sheet_by_index(index)
rows, cols = sheet.nrows, sheet.ncols # 11, 1 - int type
for row in range(1,rows):
for col in range(cols):
c = sheet.cell(row, col)
xf = book.xf_list[c.xf_index]
color = font_color(xf)
if 255 not in color: # black rows
black_rows.append(row)
else: # red rows
red_rows.append(row)
以上在用于检测红色和黑色文本字体的python代码中实现,尽管我无法进一步讨论如何合并单元格。是否可以将单元格值合并到pandas数据框中,或者是否有任何其他python模块可以成功给出预期的输出?
您可以在其他列的excel中标记颜色,然后可以使用熊猫读取该excel文件。查看颜色公式可以看到Excel formula to get cell color。对于其他分组,您可以看到Finding rows with same column values in pandas dataframe