作品展示
![](https://img-blog.csdnimg.cn/direct/420a5467b71545c58b645f279c37091b.png)
背景需求:
前文将APP题库里的育婴师题目下载到EXCEL,并进行手动整理
【办公类-21-13】 2024045三级育婴师 721道单选题 UIBOT下载+整理-CSDN博客文章浏览阅读451次,点赞10次,收藏3次。【办公类-21-13】 2024045三级育婴师 721道单选题 UIBOT下载+整理
https://blog.csdn.net/reasonsummer/article/details/137398105
![](https://img-blog.csdnimg.cn/direct/d96347f822eb4fecabeb9ba4534214c5.png)
![](https://img-blog.csdnimg.cn/direct/c90266a6c52345c08aa5847582ee5172.png)
如果把EXCEL全部内容复制黏贴到word里,大约有26页
![](https://img-blog.csdnimg.cn/direct/66421542f1ba47d5bd7144aa82e358fc.png)
![](https://img-blog.csdnimg.cn/direct/05e3dbf5a12f43c0a55bcbdcc030f9fc.png)
我感觉打印纸张较多,而且实际上背题,就只要把正确答案看眼熟。
因此我希望获得以下的样式
1、只要正确选项的文字答案,并将答案放在题目的括号里
2、括号(正确答案)加粗
![](https://img-blog.csdnimg.cn/direct/1f152000affc4a918603ad07aa4b13df.png)
第一步:从EXCEL提取每题正确答案字母,并将对应选项后面的文字,写入题目的()(英文状态括号)内,写入一个EXCEL
'''
育婴师单选题,从EXCEL提取内容,将选项答案(不要字母)写入题目中的()内
作者:AI对话大师,阿夏
时间:2024年4月10日
'''
import openpyxl
from openpyxl.utils.cell import coordinate_from_string, column_index_from_string, get_column_letter
import re,time
import openpyxl
from openpyxl.styles import Font
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\育婴师理论题爬取'
# 打开Excel文件
workbook = openpyxl.load_workbook(path + r'\单选题(712).xlsx')
# 选择第一个工作表
sheet = workbook.active
# 遍历 C 列和 B 列的每个单元格
for c_cell, b_cell in zip(sheet['C'], sheet['B']):
# 获取 C 列和 B 列单元格的行号和值
c_row = c_cell.row
c_value = c_cell.value
b_row = b_cell.row
b_value = b_cell.value
# 在 D 到 K 列之间寻找与 C 列内容相同的单元格,并读取右侧一格的内容
matching_cells = []
for column in sheet.iter_cols(min_col=4, max_col=11, min_row=c_row, max_row=c_row):
for cell in column:
if cell.value == c_value:
# 获取右侧一格的单元格
next_cell = sheet.cell(row=cell.row, column=cell.column + 1)
next_cell_value = next_cell.value
matching_cells.append(next_cell_value)
# 输出找到的单元格右侧一格的内容
print(f"C 列单元格 {c_row} 的右侧一格的内容:")
for value in matching_cells:
print(value)
# 查找左括号和右括号的索引位置
left_parenthesis_index = b_value.find('(')
right_parenthesis_index = b_value.find(')')
if left_parenthesis_index != -1 and right_parenthesis_index != -1:
# 提取括号前后的内容
# 提取括号前后的内容
before = b_value[:left_parenthesis_index]
after = b_value[right_parenthesis_index + 1:]
# 拼接新的内容
new_value = f'{before}({value}){after}'
value = Font(bold=True)
# 将新内容写入 B 列单元格
sheet.cell(row=b_row, column=2).value = new_value
# 删除 C 列到 K 列的内容
sheet.delete_cols(3, 9)
# 保存修改后的 Excel 文件为 234.xlsx
workbook.save(path + r'\单选题只有答案.xlsx')
time.sleep(5)
# 关闭 Excel 文件
workbook.close()
# import openpyxl
# import re
# from openpyxl.styles import Font
# # 打开Excel文件
# workbook = openpyxl.load_workbook(path + r'\单选题只有答案.xlsx')
# # 选择要操作的工作表
# worksheet = workbook['Sheet1'] # 替换为你的工作表名
# # 遍历所有单元格
# for row in worksheet.iter_rows():
# for cell in row:
# # 获取单元格的值
# cell_value = cell.value
# # 使用正则表达式提取括号和其中的文字
# matches = re.findall(r"\((.*?)\)", cell_value)
# if matches:
# for match in matches:
# # 构建加粗的正则表达式模式
# pattern = r"\(" + re.escape(match) + r"\)"
# # 替换匹配的文本为加粗格式
# cell_value = re.sub(pattern, r"<b>\g<0></b>", cell_value)
# # 将带有加粗格式的文本赋值回单元格
# cell.value = cell_value
# # 设置单元格字体为加粗
# cell.font = Font(bold=True)
# # 保存修改后的Excel文件
# workbook.save(path + r'\单选题只有答案1.xlsx')
![](https://img-blog.csdnimg.cn/direct/23c95cbdcd53405c8a175e05169d48b2.png)
![](https://img-blog.csdnimg.cn/direct/9cdd57bfb2344237b381947bff22cb1b.png)
二、手动将整理后的EXCEL文档内容全选,复制到word内(文字黏贴)
复制EXCEL
![](https://img-blog.csdnimg.cn/direct/02bf82ae6d154c31b1f1dddf5bf0ba47.png)
黏贴新建docx
![](https://img-blog.csdnimg.cn/direct/a4cceaf4e35f47eaa716abc853dfa171.png)
![](https://img-blog.csdnimg.cn/direct/01826d91fa8e455eb7abe168214f6a2b.png)
![](https://img-blog.csdnimg.cn/direct/2462dc19f96e48d38fdd0e91dec91801.png)
第三步:对word内部文字中()部分文字进行加粗
![](https://img-blog.csdnimg.cn/direct/7bd55362643d4e8889a717b93f5f0fb2.png)
'''
育婴师单选题,对docx内答案所在的括号内的文字加粗
作者:AI对话大师,阿夏
时间:2024年4月10日
'''
from docx import Document
from docx.shared import Pt, RGBColor
# 打开Word文档
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\育婴师理论题爬取\docx'
doc = Document(path + r'\单选题.docx')
# 遍历段落
for para in doc.paragraphs:
# 获取段落文本
text = para.text
# 查找括号 '(' 和 ')' 的位置
start_index = text.find('(')
end_index = text.find(')')
# 判断是否找到了括号
if start_index != -1 and end_index != -1:
# 拆分前、中、后部分
before_text = text[:start_index]
middle_text = text[start_index:end_index+1]
after_text = text[end_index+1:]
# 清空原始段落内容
para.clear()
# 添加拆分后的内容到段落
para.add_run(before_text)
run = para.add_run(middle_text)
run.bold = True
para.add_run(after_text)
# 保存修改后的Word文档
doc.save(path + r'\单选题2.docx')
![](https://img-blog.csdnimg.cn/direct/14cc2b187f1f49bbb5e58a734df1c8dd.png)
![](https://img-blog.csdnimg.cn/direct/be54d41af24b4f91a40949c8e5499553.png)
这下只有15页了。
![](https://img-blog.csdnimg.cn/direct/2a2c11b1daef454e90265dee2000fd87.png)
第四步:把只有正确文字答案的单选题docx检查一下(可能题目有会两个(),会导致答案被写到其他格括号里)
另存为PDF,便于分享和打印![](https://img-blog.csdnimg.cn/direct/a223d62306c44e14be7691c7bd17399e.png)
![](https://img-blog.csdnimg.cn/direct/6f57721cce0248afb4a93444f1592186.png)
![](https://img-blog.csdnimg.cn/direct/37fb30cf3cc7426a916f5cb1b98f7a9a.png)
PDF打开后文字不加粗
![](https://img-blog.csdnimg.cn/direct/afccfb84fb4143389b46ab5d893ba16e.png)
打印效果:
![](https://img-blog.csdnimg.cn/direct/36f47c3af6aa43efb5d408e80f966210.png)