当前位置: 首页 > 知识库问答 >
问题:

如何使用python在excel中合并相同字体颜色的文本单元格?

文华美
2023-03-14

我对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
------------

黑色字体文本应合并在一起,红色字体文本应合并在一起。输出应分为黑-红-黑字体文本块。第一组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代码,尽管我无法进一步讨论如何合并单元格。是否可以将单元格值合并到数据帧中,或者是否有其他python模块可以成功地提供预期的输出?

共有1个答案

齐献
2023-03-14

您可以在另一列中标记excel中的颜色,然后可以使用熊猫读取该excel文件。颜色检查公式您可以查看Excel公式以获取单元格颜色。对于其他分组,您可以看到在dataframe中查找具有相同列值的行

 类似资料:
  • 有人知道如何在excel中更改单元格特定文本的颜色吗。我正在使用apache poi,我可以发现如何更改整个单元格的文本颜色。但我只想要一个特定的文本。 A1单元有Hello World,我希望“Hello”为蓝色,“World”为绿色。我该怎么做?

  • 我有一个对象列表,我试图为每个对象指定三行,我使用的"Office Open Xml库"有以下例程: 然而,它弹出一个错误,说不能合并已经合并的单元格。 所以问题是如何在Excel中合并两个以上的单元格?

  • 我使用POI API从Postgres数据库生成了excel文档。第一列“Ordre”有许多相同的值。但是我想合并具有相同值的单元格。 我想遵循这个算法: 在字段“ordre”中循环 如果单元格(i)=单元格(i1) 而不是合并它们 但是我有一个问题,在Java中如何说,我不希望它能给出一些令人满意的结果,我开始写这段代码: 任何建议都将不胜感激

  • 问题内容: 我使用xlwt Python库在excel工作簿中写入数据。 现在我在将背景色添加到excel单元时遇到了一些问题。 例如,我在RGB(10,20,30)中有下一个颜色,最简单的方法是什么?有什么办法可以将此颜色设置为单元格吗? 问题答案: 在此示例中,我展示了如何设置单元格的背景色,您可以将其运行以得到结果:

  • 我在javaFX中有一个文本字段,在该字段中键入的任何内容都必须以蓝色显示,这可以通过css实现吗?如果是,那么如何?

  • 问题内容: 还有其他方法可以使用Apache POI库在Excel中合并单元格? 我正在尝试使用以下内容,但无法正常工作 问题答案: 您可以使用 该示例将从B2合并到E2。请记住,它是基于零的索引(例如POI版本3.12)。 有关详细信息,请参见《BusyDeveloper指南》。