文章目录
一、代码示例
- 下面代码是转微软雅黑的示例
python
from io import BytesIO
import markdown
from bs4 import BeautifulSoup
from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt
def md_content_to_docx(md_text):
"""将单个 Markdown 文件转换为 Word"""
def set_run_font(run, qn_name='w:eastAsia', font_name="微软雅黑"):
"""统一设置 Run 对象的字体"""
run.font.name = font_name
# 解决中文显示问题(Windows 系统)
run.font.element.rPr.rFonts.set(qn(qn_name), font_name)
html = markdown.markdown(md_text, extensions=['tables', 'fenced_code'])
soup = BeautifulSoup(html, "html.parser")
doc = Document()
for element in soup.children:
if element.name == "h1":
heading = doc.add_heading(level=1)
run = heading.add_run(element.get_text())
set_run_font(run)
elif element.name == "h2":
heading = doc.add_heading(level=2)
run = heading.add_run(element.get_text())
set_run_font(run)
elif element.name == "h3":
heading = doc.add_heading(level=3)
run = heading.add_run(element.get_text())
set_run_font(run)
elif element.name == "p":
para = doc.add_paragraph()
run = para.add_run(element.get_text())
set_run_font(run)
elif element.name == "ul":
for li in element.find_all("li"):
para = doc.add_paragraph(style="List Bullet")
run = para.add_run(li.get_text())
set_run_font(run)
elif element.name == "ol":
for li in element.find_all("li"):
para = doc.add_paragraph(style="List Number")
run = para.add_run(li.get_text())
set_run_font(run)
elif element.name == "pre":
para = doc.add_paragraph()
run = para.add_run(element.get_text())
set_run_font(run)
run.font.size = Pt(10)
elif element.name == "table":
rows = element.find_all("tr")
if rows:
cols = len(rows[0].find_all(["td", "th"]))
table = doc.add_table(rows=len(rows), cols=cols)
table.style = "Table Grid"
for i, row in enumerate(rows):
cells = row.find_all(["td", "th"])
for j in range(min(cols, len(cells))):
cell = table.cell(i, j)
cell_text = cells[j].get_text().strip()
# 设置单元格字体
para = cell.paragraphs[0]
run = para.add_run(cell_text)
set_run_font(run)
# 表头加粗
if cells[j].name == "th":
run.bold = True
else:
text = getattr(element, "get_text", lambda: str(element))()
if text.strip():
para = doc.add_paragraph()
run = para.add_run(text.strip())
set_run_font(run)
doc_bytes = BytesIO()
doc.save(doc_bytes)
return doc_bytes.getvalue()
def get_test_md_content():
return """# 审计行业全景分析报告
## 一、行业概述
### 1.1 行业定义与核心价值
审计是指由独立第三方机构依据相关法律法规、会计准则和审计准则,对企业、事业单位及其他经济组织的财务报表、内部控制体系、经营活动合规性等进行审查、监督和评价的专业服务活动。
核心价值体现在:
- 提升财务信息透明度与可信度,保护投资者、债权人等利益相关方权益
- 监督企业合规经营,防范财务舞弊与风险
- 为企业优化内部控制、提升管理效率提供专业建议
### 1.2 行业发展历程
| 发展阶段 | 时间区间 | 核心特征 | 关键事件 |
|----------|----------|----------|----------|
| 起步阶段 | 1980-2000 年 | 恢复重建审计制度,以国营企业审计为主 | 1983 年成立国家审计署;1993 年注册会计师制度正式实施 |
| 快速发展阶段 | 2001-2010 年 | 资本市场推动行业扩张,外资所进入中国市场 | 2001 年安然事件引发审计监管强化;2007 年新会计准则实施 |
| 规范发展阶段 | 2011-2020 年 | 监管趋严,行业集中度提升,本土所崛起 | 2012 年会计师事务所 "脱钩改制" 完成;2016 年证监会强化审计执法 |
| 高质量发展阶段 | 2021 年至今 | 数字化转型加速,ESG 审计兴起,全球监管协同 | 2023 年《注册会计师行业发展规划(2021-2025 年)》落地;ESG 信息披露强制化 |
## 二、行业分类与业务范围
### 2.1 按审计主体分类
#### 2.1.1 政府审计
- 执行主体:国家审计署及地方各级审计机关
- 审计对象:各级政府部门、事业单位、国有企业、重点建设项目
- 核心职能:监督财政收支、财务收支的真实性、合法性和效益性
- 典型业务:预算执行审计、政策落实跟踪审计、领导干部经济责任审计
#### 2.1.2 内部审计
- 执行主体:企业 / 组织内部审计部门或岗位
- 审计对象:内部管理制度、业务流程、风险控制体系、部门绩效
- 核心职能:优化内部控制、防范运营风险、提升组织效率
- 典型业务:流程合规审计、风险管理审计、专项业务审计(如采购审计)
#### 2.1.3 社会审计(注册会计师审计)
- 执行主体:会计师事务所(内资所、外资所)
- 审计对象:上市公司、非上市企业、社会组织等
- 核心职能:提供独立审计报告,满足外部信息披露需求
- 典型业务:财务报表审计、IPO 审计、并购重组审计、税务审计
## 三、行业产业链与市场格局
### 3.1 产业链结构
#### 3.1.1 上游环节
- 监管机构:财政部、审计署、证监会、中注协等(制定规则、监督管理)
- 专业支持:会计准则制定机构、审计准则委员会、软件服务商(审计工具、数据分析工具)
- 人才供给:高等院校(会计、审计专业)、职业培训机构(CPA、CIA 等认证)
#### 3.1.2 中游环节
- 核心主体:会计师事务所(头部所、区域所、小型所)、内部审计部门、政府审计机关
- 服务模式:线下审计 + 数字化审计融合,远程审计逐步普及
#### 3.1.3 下游环节
- 主要需求方:上市公司、国有企业、民营企业、政府部门、金融机构、投资者
- 需求驱动因素:法律法规要求、资本市场信息披露需求、风险管理需求
### 3.2 市场格局分析
#### 3.2.1 竞争梯队
| 梯队 | 代表机构 | 市场特征 | 市场份额(2024 年) |
|------|----------|----------|--------------------|
| 第一梯队 | 四大会计师事务所(普华永道、德勤、安永、毕马威) | 国际化布局,服务大型企业及上市公司,品牌优势显著 | 35% |
| 第二梯队 | 本土头部所(立信、天健、信永中和、大华等) | 国内网络完善,服务中小企业及地方国企,政策支持力度大 | 40% |
| 第三梯队 | 区域型会计师事务所 | 聚焦特定区域或细分领域,服务小微企业,规模较小 | 20% |
| 第四梯队 | 小型事务所及个体执业者 | 提供基础审计及税务服务,业务单一 | 5% |
#### 3.2.2 区域分布特征
- 一线城市(北京、上海、深圳、广州):集中了 60% 以上的头部事务所及高端审计业务,金融、科技行业审计需求突出
- 新一线城市(杭州、成都、武汉等):本土事务所区域总部聚集地,制造业、服务业审计需求旺盛
- 三四线城市:以小型事务所为主,主要服务本地中小企业及政府部门委托业务
"""
if __name__ == '__main__':
with open("test.docx", "wb") as f:
f.write(md_content_to_docx(get_test_md_content()))
二、效果图
