Python批量讀取Word表格的常用方法匯總
引言
在日常辦公和數(shù)據(jù)處理中,經(jīng)常需要將Word文檔中的表格提取為DataFrame進行后續(xù)分析,但Word表格的格式復雜(如上下標、內(nèi)置公式、字體樣式、單元格合并等),常規(guī)讀取方式容易丟失格式或出現(xiàn)內(nèi)容為空的問題。
本文將從基礎(chǔ)到終極,按“基礎(chǔ)讀取→上下標識別→公式解析→全格式兼容→終極優(yōu)化”的遞進邏輯,提供5個版本的可直接運行代碼,覆蓋所有Word表格場景,新手也能快速上手,按需選用。
核心依賴庫:python-docx(讀取Word文檔)、pandas(數(shù)據(jù)整理),安裝命令:
pip install python-docx pandas
本文以以下表格(test.docx)內(nèi)容為例:

一、基礎(chǔ)版:讀取Word所有表格(無格式)
適用于簡單表格(僅純文本,無上下標、公式、特殊樣式),核心功能是批量讀取Word中的所有表格,轉(zhuǎn)換為DataFrame,支持單獨返回或合并表格,搭建基礎(chǔ)讀取框架。
from docx import Document
import pandas as pd
def read_word_tables(word_path: str, merge: bool = False):
"""
讀取Word文檔中的所有表格,轉(zhuǎn)換為DataFrame
:param word_path: Word文件路徑(.docx)
:param merge: 是否合并所有表格(True=合并,F(xiàn)alse=單獨返回)
:return: 單個DataFrame 或 DataFrame列表
"""
# 打開Word文檔
doc = Document(word_path)
# 存儲所有表格的DataFrame
df_list = []
# 遍歷文檔中的每一個表格
for table_idx, table in enumerate(doc.tables):
# 存儲當前表格的所有行數(shù)據(jù)
table_data = []
# 遍歷表格的每一行
for row in table.rows:
# 提取當前行所有單元格的文本(去除空字符)
row_data = [cell.text.strip() for cell in row.cells]
table_data.append(row_data)
# 轉(zhuǎn)換為DataFrame(默認第一行為表頭,無表頭則手動設(shè)置)
if len(table_data) > 0:
# 方案:第一行作為列名,剩余行作為數(shù)據(jù)
df = pd.DataFrame(table_data[1:], columns=table_data[0])
df_list.append(df)
print(f"? 已讀取第 {table_idx + 1} 個表格,形狀:{df.shape}")
# 合并所有表格(僅當所有表格列名一致時生效)
if merge and len(df_list) > 0:
return pd.concat(df_list, ignore_index=True)
# 返回所有表格的DataFrame列表
return df_list
# ------------------- 調(diào)用示例 -------------------
if __name__ == '__main__':
# 1. 替換為你的Word文件路徑(Windows用/,或雙斜杠\\)
WORD_FILE = "test.docx"
# 2. 讀取所有表格(單獨返回)
all_dfs = read_word_tables(WORD_FILE)
# 3. 查看結(jié)果(遍歷所有DataFrame)
for i, df in enumerate(all_dfs):
print(f"\n===== 第 {i+1} 個表格數(shù)據(jù) =====")
print(df)
運行結(jié)果:

基礎(chǔ)版說明
- 核心邏輯:遍歷Word中的每一個表格、每一行、每一個單元格,提取純文本并整理為DataFrame,搭建最基礎(chǔ)的表格讀取流程。
- 局限性:無法識別上下標、公式、字體樣式(如加粗、斜體),會丟失這類格式信息,僅能提取純文本數(shù)據(jù)。
- 適用場景:純文本表格,僅需要提取數(shù)據(jù)內(nèi)容,不關(guān)注任何格式細節(jié)。
二、升級版本:識別上下標字體格式
在基礎(chǔ)版的基礎(chǔ)上,針對性解決“上下標格式丟失”問題,通過解析Word中的Run對象(文本片段),判斷上下標格式,并用統(tǒng)一標記(上標^()、下標_())保留格式,避免化學公式、數(shù)學數(shù)值等內(nèi)容失真。
from docx import Document
import pandas as pd
def get_cell_formatted_text(cell):
"""
【核心函數(shù)】提取單元格內(nèi)帶上下標的文本(保留格式)
規(guī)則:上標用 ^() 包裹,下標用 _() 包裹,普通文本直接顯示
例:H?O → H_(2)O,92??·3 → 92^(+0.3)
"""
full_text = ""
# 遍歷單元格所有段落
for paragraph in cell.paragraphs:
# 遍歷段落內(nèi)所有文本片段(關(guān)鍵:只有Run能讀取上下標格式)
for run in paragraph.runs:
text = run.text.strip()
if not text:
continue
# 判斷格式:上標 / 下標 / 普通文本
if run.font.superscript:
full_text += f"^({text})" # 上標標記
elif run.font.subscript:
full_text += f"_({text})" # 下標標記
else:
full_text += text # 普通文本
return full_text.strip()
def read_word_tables_with_format(word_path: str, merge: bool = False):
"""
讀取Word表格(支持上下標),轉(zhuǎn)換為DataFrame
:param word_path: docx文件路徑
:param merge: 是否合并表格
:return: DataFrame列表 / 合并后的DataFrame
"""
doc = Document(word_path)
df_list = []
for table_idx, table in enumerate(doc.tables):
table_data = []
# 遍歷表格行
for row in table.rows:
# 【替換】用自定義函數(shù)讀取帶上下標的文本
row_data = [get_cell_formatted_text(cell) for cell in row.cells]
table_data.append(row_data)
if table_data:
# 第一行作為表頭,生成DataFrame
df = pd.DataFrame(table_data[1:], columns=table_data[0])
df_list.append(df)
print(f"? 第{table_idx+1}個表格讀取完成(含上下標),形狀:{df.shape}")
# 結(jié)構(gòu)一致時合并表格
if merge and df_list:
return pd.concat(df_list, ignore_index=True)
return df_list
# ------------------- 調(diào)用示例 -------------------
if __name__ == '__main__':
# 替換為你的Word文件路徑
WORD_FILE = "test.docx"
# 讀取所有表格(保留上下標)
all_dfs = read_word_tables_with_format(WORD_FILE)
# 打印結(jié)果
for i, df in enumerate(all_dfs):
print(f"\n===== 第{i+1}個表格(帶上下標)=====")
print(df.to_string(index=False)) # 完整打印,不換行
運行結(jié)果:

升級版本說明
- 核心改進:新增
get_cell_formatted_text函數(shù),通過Run對象的font.superscript和font.subscript屬性,精準判斷上下標格式。 - 格式標記規(guī)則(易讀易解析,不影響后續(xù)數(shù)據(jù)處理):
- 上標:用
^()包裹,如92??·³ → 92^(+0.3) - 下標:用
_()包裹,如H?O → H_(2)O - 局限性:仍無法識別Word內(nèi)置公式,公式會被當作普通文本或空值處理,未支持字體樣式。
- 適用場景:含上下標的表格(如化學公式、數(shù)學數(shù)值、學術(shù)表格),僅需保留上下標,無需處理公式。
- 上標:用
三、進階版本:識別Word內(nèi)置公式
在升級版本的基礎(chǔ)上,解決“Word內(nèi)置公式讀取為空”的核心痛點,通過解析公式的XML結(jié)構(gòu)(OMML格式),提取公式文本,并用專屬標記區(qū)分,同時兼容上下標格式,滿足學術(shù)、技術(shù)表格的核心需求。
from docx import Document
from docx.oxml.ns import qn
import pandas as pd
# ===================== 核心:解析 Word 內(nèi)置公式(解決公式為空) =====================
def parse_omath_text(omath_node):
"""遞歸解析 OMML 公式 XML,提取純文本(解決公式為空問題)"""
text = ""
# 遍歷公式所有子節(jié)點
for child in omath_node.iter():
# 提取文字節(jié)點
if child.tag == qn("m:t"):
if child.text:
text += child.text
# 提取上下標/分數(shù)等符號
elif child.tag == qn("m:sup"):
text += "^"
elif child.tag == qn("m:sub"):
text += "_"
elif child.tag == qn("m:f"):
text += "/"
return text.strip()
# ===================== 提取單元格完整內(nèi)容(文本+上下標+公式) =====================
def extract_cell_content(cell):
"""提取單個單元格的所有內(nèi)容,完美兼容三種格式"""
content = ""
# 遍歷單元格內(nèi)的所有段落
for paragraph in cell.paragraphs:
para_elem = paragraph._element
# 1. 優(yōu)先檢測:段落中是否包含 Word 內(nèi)置公式(oMath)
omath_nodes = para_elem.findall('.//m:oMath', namespaces=para_elem.nsmap)
if omath_nodes:
for omath in omath_nodes:
formula_text = parse_omath_text(omath)
content += f"【公式】{formula_text} "
continue
# 2. 無公式:解析普通文本 + 字體上下標
for run in paragraph.runs:
run_text = run.text.strip()
if not run_text:
continue
# 判斷上下標格式
if run.font.superscript:
content += f"^({run_text})"
elif run.font.subscript:
content += f"_({run_text})"
else:
content += run_text
return content.strip()
# ===================== 讀取 Word 所有表格 → DataFrame =====================
def read_word_tables_final(word_path: str, merge=False):
"""讀取文檔所有表格,生成DataFrame"""
doc = Document(word_path)
df_list = []
for table_idx, table in enumerate(doc.tables):
table_data = []
# 遍歷表格每一行
for row in table.rows:
row_data = [extract_cell_content(cell) for cell in row.cells]
table_data.append(row_data)
# 生成DataFrame(第一行作為表頭)
if table_data:
df = pd.DataFrame(table_data[1:], columns=table_data[0])
df_list.append(df)
print(f"? 第 {table_idx+1} 個表格讀取完成 | 數(shù)據(jù)形狀:{df.shape}")
# 合并表格(結(jié)構(gòu)一致時使用)
if merge and df_list:
return pd.concat(df_list, ignore_index=True)
return df_list
# ===================== 調(diào)用測試 =====================
if __name__ == '__main__':
# 替換為你的 Word 文件路徑
WORD_PATH = "test.docx"
# 讀取所有表格
all_dataframes = read_word_tables_final(WORD_PATH)
# 打印結(jié)果
for i, df in enumerate(all_dataframes):
print(f"\n" + "=" * 50)
print(f"?? 第 {i+1} 個表格完整數(shù)據(jù)")
print("=" * 50)
print(df.to_string(index=False))
運行結(jié)果:

進階版本說明
- 核心突破:新增
parse_omath_text函數(shù),遞歸解析Word公式的XML結(jié)構(gòu)(OMML格式),提取公式文本,徹底解決“公式讀取為空”的問題。 - 優(yōu)先級邏輯:先檢測公式,再解析文本和上下標,避免公式被當作普通文本處理,確保格式準確性。
- 公式標記:用「【公式】」前綴標記公式內(nèi)容,便于后續(xù)區(qū)分和單獨提取公式。
- 局限性:未識別字體樣式(如加粗、斜體、刪除線),不支持多段落單元格和特殊符號(如制表符)。
- 適用場景:含公式、上下標的學術(shù)表格、技術(shù)表格,無需處理復雜字體樣式。
四、終極版本:全格式兼容(推薦使用)
整合基礎(chǔ)、升級、進階三個版本的核心功能,實現(xiàn)「全格式兼容」,支持純文本、上下標、Word內(nèi)置公式、字體樣式(加粗/斜體/下劃線等)、多段落單元格、制表符/手動換行,覆蓋99%的常規(guī)Word表格場景。
from docx import Document
from docx.oxml.ns import qn
import pandas as pd
# ===================== 核心1:完整解析 Word 內(nèi)置公式(OMML) =====================
def parse_omath_text(omath_node):
"""遞歸解析所有公式結(jié)構(gòu):文本、上下標、分數(shù)、符號等,無空值"""
text = ""
for child in omath_node.iter():
# 提取公式文字
if child.tag == qn("m:t") and child.text:
text += child.text
# 公式結(jié)構(gòu)標記(上標/下標/分數(shù))
elif child.tag == qn("m:sup"):
text += "^"
elif child.tag == qn("m:sub"):
text += "_"
elif child.tag == qn("m:f"):
text += "/"
return text.strip()
# ===================== 核心2:全格式提取單元格內(nèi)容(100%兼容) =====================
def extract_cell_full_content(cell):
"""
終極全兼容:提取單元格所有內(nèi)容,覆蓋所有格式/元素
輸出:帶簡潔格式標記的純文本,無內(nèi)容丟失
"""
full_content = []
# 遍歷單元格內(nèi) 所有段落(支持多段落單元格)
for para in cell.paragraphs:
para_elem = para._element
para_text = ""
# 1. 檢測并提取 Word 內(nèi)置公式(優(yōu)先級最高)
omath_nodes = para_elem.findall('.//m:oMath', namespaces=para_elem.nsmap)
if omath_nodes:
for omath in omath_nodes:
formula = parse_omath_text(omath)
para_text += f"[公式]{formula}"
full_content.append(para_text)
continue
# 2. 無公式:提取 文本+所有字體樣式+格式符號
for run in para.runs:
# 基礎(chǔ)文本(保留所有字符:特殊符號、空格、制表符)
text = run.text
if not text:
continue
# ---------------- 格式標記(簡潔不冗余,不影響DataFrame使用) ----------------
style_tags = []
if run.font.bold: # 加粗
style_tags.append("粗")
if run.font.italic: # 斜體
style_tags.append("斜")
if run.font.underline: # 下劃線
style_tags.append("下劃")
if run.font.strike: # 刪除線
style_tags.append("刪")
if run.font.hidden: # 隱藏文本
style_tags.append("隱藏")
if run.font.superscript: # 上標
text = f"^({text})"
if run.font.subscript: # 下標
text = f"_({text})"
# 拼接格式+文本
if style_tags:
para_text += f"[{','.join(style_tags)}]{text}"
else:
para_text += text
# 清理多余空白,保留有效格式
para_text = para_text.replace("\t", "[制表符]").replace("\n", "[換行]").strip()
if para_text:
full_content.append(para_text)
# 單元格多段落用分隔符連接,保證數(shù)據(jù)完整性
return " | ".join(full_content) if full_content else ""
# ===================== 讀取 Word 所有表格 → DataFrame =====================
def read_word_tables_ultimate(word_path: str, merge=False):
"""全兼容讀取Word表格,生成DataFrame"""
doc = Document(word_path)
df_list = []
for table_idx, table in enumerate(doc.tables):
table_data = []
for row in table.rows:
# 全格式提取每個單元格
row_data = [extract_cell_full_content(cell) for cell in row.cells]
table_data.append(row_data)
if table_data:
# 第一行作為表頭,無表頭可改為 pd.DataFrame(table_data)
df = pd.DataFrame(table_data[1:], columns=table_data[0])
df_list.append(df)
print(f"? 第 {table_idx+1} 個表格讀取完成 | 形狀:{df.shape}")
return pd.concat(df_list, ignore_index=True) if merge and df_list else df_list
# ===================== 調(diào)用測試 =====================
if __name__ == '__main__':
# 替換為你的Word文件路徑
WORD_FILE = "test.docx"
# 讀取所有表格(全格式兼容)
all_dfs = read_word_tables_ultimate(WORD_FILE)
# 打印完整結(jié)果
for i, df in enumerate(all_dfs):
print(f"\n{'='*60}")
print(f"?? 第 {i+1} 個表格(全格式兼容版)")
print(f"{'='*60}")
print(df.to_string(index=False))
運行結(jié)果:

全格式標記說明
為了兼顧“格式保留”和“DataFrame可讀性”,采用簡潔的標記規(guī)則,所有標記不影響后續(xù)數(shù)據(jù)處理,可通過字符串替換批量去除:
| 格式類型 | 輸出標記 | 示例 |
|---|---|---|
| 上標 | ^(文本) | 92??·³ → 92^(+0.3) |
| 下標 | _(文本) | H?O → H_(2)O |
| 內(nèi)置公式 | [公式]內(nèi)容 | [公式]92+0.3+0.3 |
| 加粗 | [粗] | [粗]測試 |
| 斜體+下劃線 | [斜,下劃] | [斜,下劃]測試 |
| 手動換行 | [換行] | 第一行 [換行] 第二行 |
| 制表符(Tab) | [制表符] | 名稱 [制表符] 數(shù)值 |
五、終極優(yōu)化(無敵版):處理合并單元格+全格式兼容
在終極版本的基礎(chǔ)上,新增“合并單元格處理”功能,解決實際辦公中跨行/跨列合并單元格導致的數(shù)據(jù)重復、缺失問題,實現(xiàn)“全格式+合并單元格”雙兼容,覆蓋所有Word表格場景,真正做到無敵適配。
from docx import Document
from docx.oxml.ns import qn
import pandas as pd
# ===================== 新增:處理合并單元格(核心函數(shù)) =====================
def get_merged_cell_text(table, row_idx, col_idx):
"""
讀取合并單元格的完整文本(解決合并單元格數(shù)據(jù)重復/缺失問題)
:param table: 當前表格對象
:param row_idx: 行索引(從0開始)
:param col_idx: 列索引(從0開始)
:return: 合并單元格的完整文本
"""
cell = table.cell(row_idx, col_idx)
# 檢查單元格是否被合并(通過XML屬性判斷)
cell_elem = cell._element
# 跨列合并(horizontal merge)
h_merge = cell_elem.xpath('.//w:hMerge')
# 跨行合并(vertical merge)
v_merge = cell_elem.xpath('.//w:vMerge')
# 1. 若為合并單元格的“起始單元格”(包含完整文本),直接返回文本
if (h_merge and h_merge[0].attrib.get(qn('w:val')) == 'restart') or \
(v_merge and v_merge[0].attrib.get(qn('w:val')) == 'restart'):
return extract_cell_full_content(cell)
# 2. 若為合并單元格的“后續(xù)單元格”(無文本),向上/向左查找起始單元格
elif h_merge:
# 跨列合并:向左查找起始單元格
return get_merged_cell_text(table, row_idx, col_idx - 1)
elif v_merge:
# 跨行合并:向上查找起始單元格
return get_merged_cell_text(table, row_idx - 1, col_idx)
# 3. 非合并單元格,直接返回文本
else:
return extract_cell_full_content(cell)
# ===================== 核心1:完整解析 Word 內(nèi)置公式(OMML) =====================
def parse_omath_text(omath_node):
"""遞歸解析所有公式結(jié)構(gòu):文本、上下標、分數(shù)、符號等,無空值"""
text = ""
for child in omath_node.iter():
# 提取公式文字
if child.tag == qn("m:t") and child.text:
text += child.text
# 公式結(jié)構(gòu)標記(上標/下標/分數(shù))
elif child.tag == qn("m:sup"):
text += "^"
elif child.tag == qn("m:sub"):
text += "_"
elif child.tag == qn("m:f"):
text += "/"
return text.strip()
# ===================== 核心2:全格式提取單元格內(nèi)容(100%兼容) =====================
def extract_cell_full_content(cell):
"""
終極全兼容:提取單元格所有內(nèi)容,覆蓋所有格式/元素
輸出:帶簡潔格式標記的純文本,無內(nèi)容丟失
"""
full_content = []
# 遍歷單元格內(nèi) 所有段落(支持多段落單元格)
for para in cell.paragraphs:
para_elem = para._element
para_text = ""
# 1. 檢測并提取 Word 內(nèi)置公式(優(yōu)先級最高)
omath_nodes = para_elem.findall('.//m:oMath', namespaces=para_elem.nsmap)
if omath_nodes:
for omath in omath_nodes:
formula = parse_omath_text(omath)
para_text += f"[公式]{formula}"
full_content.append(para_text)
continue
# 2. 無公式:提取 文本+所有字體樣式+格式符號
for run in para.runs:
# 基礎(chǔ)文本(保留所有字符:特殊符號、空格、制表符)
text = run.text
if not text:
continue
# ---------------- 格式標記(簡潔不冗余,不影響DataFrame使用) ----------------
style_tags = []
if run.font.bold: # 加粗
style_tags.append("粗")
if run.font.italic: # 斜體
style_tags.append("斜")
if run.font.underline: # 下劃線
style_tags.append("下劃")
if run.font.strike: # 刪除線
style_tags.append("刪")
if run.font.hidden: # 隱藏文本
style_tags.append("隱藏")
if run.font.superscript: # 上標
text = f"^({text})"
if run.font.subscript: # 下標
text = f"_({text})"
# 拼接格式+文本
if style_tags:
para_text += f"[{','.join(style_tags)}]{text}"
else:
para_text += text
# 清理多余空白,保留有效格式
para_text = para_text.replace("\t", "[制表符]").replace("\n", "[換行]").strip()
if para_text:
full_content.append(para_text)
# 單元格多段落用分隔符連接,保證數(shù)據(jù)完整性
return " | ".join(full_content) if full_content else ""
# ===================== 全兼容讀取(含合并單元格) =====================
def read_word_tables_ultimate_with_merge(word_path: str, merge=False):
"""全兼容讀取Word表格(支持合并單元格+所有格式),生成DataFrame"""
doc = Document(word_path)
df_list = []
for table_idx, table in enumerate(doc.tables):
table_data = []
# 獲取表格總行數(shù)和總列數(shù)
row_count = len(table.rows)
col_count = len(table.columns)
# 遍歷表格每一行、每一列,處理合并單元格
for row_idx in range(row_count):
row_data = []
for col_idx in range(col_count):
# 讀取合并單元格的完整文本
cell_text = get_merged_cell_text(table, row_idx, col_idx)
row_data.append(cell_text)
table_data.append(row_data)
if table_data:
# 第一行作為表頭,無表頭可改為 pd.DataFrame(table_data)
df = pd.DataFrame(table_data[1:], columns=table_data[0])
df_list.append(df)
print(f"? 第 {table_idx+1} 個表格讀取完成(含合并單元格),形狀:{df.shape}")
return pd.concat(df_list, ignore_index=True) if merge and df_list else df_list
# ===================== 調(diào)用測試(含合并單元格) =====================
if __name__ == '__main__':
# 替換為你的Word文件路徑
WORD_FILE = "test.docx"
# 讀取所有表格(全格式+合并單元格兼容)
all_dfs = read_word_tables_ultimate_with_merge(WORD_FILE)
# 打印完整結(jié)果
for i, df in enumerate(all_dfs):
print(f"\n{'='*60}")
print(f"?? 第 {i+1} 個表格(全格式+合并單元格版)")
print(f"{'='*60}")
print(df.to_string(index=False))
運行結(jié)果:

無敵版說明
- 核心優(yōu)化:新增
get_cell_formatted_text函數(shù),通過解析Word表格的XML屬性(w:hMerge、w:vMerge),自動識別跨行、跨列合并單元格,避免數(shù)據(jù)重復或缺失。 - 功能整合:完全繼承終極版本的全格式兼容能力,同時新增合并單元格處理,實現(xiàn)“格式無丟失+合并單元格無異常”雙保障。
- 使用便捷:無需手動修改代碼,替換終極版本的調(diào)用函數(shù)即可,自動適配所有表格場景,新手也能直接使用。
- 適用場景:所有Word表格(含合并單元格、公式、上下標、字體樣式等),尤其適合復雜辦公表格、學術(shù)表格、技術(shù)表格。
六、五個版本對比與選擇建議
為方便大家按需選用,整理5個版本的核心差異、優(yōu)缺點及適用場景,一目了然:
| 版本 | 核心功能 | 適用場景 | 優(yōu)點 | 缺點 |
|---|---|---|---|---|
| 基礎(chǔ)版 | 純文本表格讀取 | 簡單純文本表格 | 代碼簡潔,運行快 | 不支持任何格式 |
| 升級版本 | 支持上下標 | 含上下標的表格 | 保留上下標,標記清晰 | 不支持公式、字體樣式 |
| 進階版本 | 支持上下標+公式 | 學術(shù)/技術(shù)表格(含公式) | 解決公式為空問題 | 不支持字體樣式、多段落 |
| 終極版本 | 全格式兼容(無合并單元格) | 無合并單元格的復雜表格 | 格式無丟失,兼容性強 | 合并單元格支持不友好 |
| 無敵版 | 全格式+合并單元格 | 所有場景(推薦) | 全場景適配,無短板 | 代碼稍復雜,運行略慢 |
七、注意事項(必看)
- 文件格式:僅支持
.docx格式,.doc格式需先轉(zhuǎn)換為.docx(可通過Word另存為實現(xiàn)),否則會報錯。 - 文件路徑:Windows系統(tǒng)路徑需用
/或雙斜杠\\(如"C:/test.docx"或"C:\\test.docx"),避免路徑錯誤導致讀取失敗。 - 表格結(jié)構(gòu):默認第一行為表頭,若表格無表頭,需修改代碼中的
pd.DataFrame部分(刪除table_data[1:]和columns=table_data[0])。 - 公式兼容性:僅支持Word內(nèi)置公式(OMML格式),不支持插入的圖片公式(圖片公式需額外結(jié)合OCR識別工具)。
- 合并表格:僅當所有表格的列名完全一致時,合并功能(
merge=True)才有效,否則會出現(xiàn)列名錯亂、數(shù)據(jù)錯位。 - 合并單元格:無敵版僅支持Word原生合并單元格,不支持手動繪制的合并效果(手動繪制表格需先轉(zhuǎn)為原生表格)。
八、總結(jié)
本文按“基礎(chǔ)→升級→進階→終極→無敵”的遞進邏輯,提供了5個可直接運行的Python讀取Word表格版本,從簡單純文本到復雜全格式+合并單元格,逐步解決實際應用中的痛點:
- 簡單需求:基礎(chǔ)版(純文本讀取,快速高效)
- 含上下標:升級版本(保留上下標,適配化學/數(shù)學表格)
- 含公式:進階版本(解決公式為空,適配學術(shù)表格)
- 復雜格式:終極版本(全格式兼容,無合并單元格場景)
萬能適配:無敵版(全格式+合并單元格,覆蓋所有場景,優(yōu)先推薦)
所有代碼均可直接復制運行,只需替換WORD_FILE 為自己的Word文件路徑即可。
以上就是Python批量讀取Word表格的常用方法匯總的詳細內(nèi)容,更多關(guān)于Python批量讀取Word表格的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python SQLAlchemy的Mapping與Declarative詳解
這篇文章主要介紹了python SQLAlchemy的Mapping與Declarative詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07
Python使用Beautiful Soup包編寫爬蟲時的一些關(guān)鍵點
這篇文章主要介紹了Python使用Beautiful Soup包編寫爬蟲時的一些關(guān)鍵點,文中講到了parent屬性的使用以及soup的編碼問題,需要的朋友可以參考下2016-01-01
python基礎(chǔ)之變量和數(shù)據(jù)類型
這篇文章主要介紹了python的變量和數(shù)據(jù)類型,實例分析了Python中返回一個返回值與多個返回值的方法,需要的朋友可以參考下2021-10-10
Python入門經(jīng)典題目實戰(zhàn)應用指南
Python作為一門易學且功能強大的編程語言,是初學者入門編程的理想選擇,通過解決實際問題,我們可以更好地理解和掌握Python的基礎(chǔ)知識,這篇文章主要介紹了Python入門經(jīng)典題目實戰(zhàn)應用的相關(guān)資料,需要的朋友可以參考下2025-10-10
Python實現(xiàn)讀取大量Excel文件并跨文件批量計算平均值
這篇文章主要為大家詳細介紹了如何利用Python語言,實現(xiàn)對多個不同Excel文件進行數(shù)據(jù)讀取與平均值計算的方法,感興趣的可以了解一下2023-02-02

