| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- # Copyright (c) 2010-2024 openpyxl
- from openpyxl.cell.text import Text
- from openpyxl.xml.functions import iterparse
- from openpyxl.xml.constants import SHEET_MAIN_NS
- from openpyxl.cell.rich_text import CellRichText
- def read_string_table(xml_source):
- """Read in all shared strings in the table"""
- strings = []
- STRING_TAG = '{%s}si' % SHEET_MAIN_NS
- for _, node in iterparse(xml_source):
- if node.tag == STRING_TAG:
- text = Text.from_tree(node).content
- text = text.replace('x005F_', '')
- node.clear()
- strings.append(text)
- return strings
- def read_rich_text(xml_source):
- """Read in all shared strings in the table"""
- strings = []
- STRING_TAG = '{%s}si' % SHEET_MAIN_NS
- for _, node in iterparse(xml_source):
- if node.tag == STRING_TAG:
- text = CellRichText.from_tree(node)
- if len(text) == 0:
- text = ''
- elif len(text) == 1 and isinstance(text[0], str):
- text = text[0]
- node.clear()
- strings.append(text)
- return strings
|