当前位置: 首页 > 面试题库 >

如何在Excel文档单元格中查找文本子集的格式

司寇善
2023-03-14
问题内容

使用Python,我需要在给定的Excel工作表单元格中找到所有粗体或斜体的子html" target="_blank">字符串。

..但该解决方案不适用于我,因为我无法假定单元格中 所有 内容的格式 相同。单个单元格中的值如下所示:

1.一些粗体文本 一些常规文本。 一些斜体文字

有没有一种方法可以使用xlrd(或任何其他Python Excel模块)在单元格中查找字符范围的格式?


问题答案:

感谢@Vyassa提供所有正确的指针,我已经能够编写以下代码,该代码在XLS文件中的行上进行迭代,并输出带有“单个”样式信息的单元格的样式信息(例如,整个单元格为斜体)
)或样式“细分”(例如,单元格的一部分是斜体,部分不是)。

import xlrd

# accessing Column 'C' in this example
COL_IDX = 2

book = xlrd.open_workbook('your-file.xls', formatting_info=True)
first_sheet = book.sheet_by_index(0)

for row_idx in range(first_sheet.nrows):
  text_cell = first_sheet.cell_value(row_idx, COL_IDX)
  text_cell_xf = book.xf_list[first_sheet.cell_xf_index(row_idx, COL_IDX)]

  # skip rows where cell is empty
  if not text_cell:
    continue
  print text_cell,

  text_cell_runlist = first_sheet.rich_text_runlist_map.get((row_idx, COL_IDX))
  if text_cell_runlist:
    print '(cell multi style) SEGMENTS:'
    segments = []
    for segment_idx in range(len(text_cell_runlist)):
      start = text_cell_runlist[segment_idx][0]
      # the last segment starts at given 'start' and ends at the end of the string
      end = None
      if segment_idx != len(text_cell_runlist) - 1:
        end = text_cell_runlist[segment_idx + 1][0]
      segment_text = text_cell[start:end]
      segments.append({
        'text': segment_text,
        'font': book.font_list[text_cell_runlist[segment_idx][1]]
      })
    # segments did not start at beginning, assume cell starts with text styled as the cell
    if text_cell_runlist[0][0] != 0:
      segments.insert(0, {
        'text': text_cell[:text_cell_runlist[0][0]],
        'font': book.font_list[text_cell_xf.font_index]
      })

    for segment in segments:
      print segment['text'],
      print 'italic:', segment['font'].italic,
      print 'bold:', segment['font'].bold

  else:
    print '(cell single style)',
    print 'italic:', book.font_list[text_cell_xf.font_index].italic,
    print 'bold:', book.font_list[text_cell_xf.font_index].bold


 类似资料:
  • 问题内容: 我想通过文本在Excel工作表中找到一个单元格。文字是这样的: 我的目标是使用户能够提供一种用于写入数据的模板。用户可以在Excel文件中配置颜色和字体以及数据位置。该单元格是数据表的左上角。 附加问题:是否有更优雅的方法来完成这项工作? 编辑 我正在遍历行和单元格以找到它。恐怕它并不是真的有效,但是到目前为止它仍然有效: 问题答案: 您可以遍历工作表的单元格并调查内容。我认为没有更简

  • 我已经编写了一个程序,找到一个包含“customer:”的单元格,并且程序成功地工作。问题是,我想要直接挨着单元格的单元格的值。布局如下所示:

  • 问题内容: 我正在尝试将多行文本写入Excel单元格。 但是,当我打开文档时,我只看到一行,直到我双击它进行编辑,然后它变成了两行。为什么会这样呢?谢谢 问题答案: 您需要设置行高以容纳两行文本。 您需要设置以获取新行。试试这个:这是wb 。

  • 问题内容: 我正在创建一个HTML表,将在Excel中作为电子表格打开。我可以使用哪种HTML标记或CSS样式“讲述” Excel以将单元格的内容显示为文本? 问题答案: 您可以将格式应用于数字,文本,日期等的单元格。 请参阅我以前关于此的答案:HTML toExcel:如何告诉Excel将列视为数字? (已调整的代码段) 如果将CSS类添加到页面: 并在您的TD上拍那些课,行得通吗?

  • 我需要制作瓦丁8网格单元格文本换行。我试着在瓦丁论坛上关注这个链接。https://vaadin.com/forum/thread/16908210/vaadin-8-grid-wrap-long-lines 我的网格仅在每个单元格中包含字符串。 我有一个这样的风格生成器类: 我正在从Vaadin 6转换,所以我仍然使用旧主题() 在我的styles.css文件中,有: 在创建网格的类中,我有:

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