423baff73b
- Docker bridge 网络隔离(8000 端口封死) - Gunicorn 4 Worker 多进程 - Alembic 数据库迁移基线 - 日志轮转 20m×3 - JWT 密钥 + DB 密码 + CORS 收紧 - 3-2-1 备份链路(NAS + R740-B 冷备) - 连接池 pool_pre_ping + pool_recycle=3600
45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
# 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
|