课后习题
请你编写程序,将 Excel 文件的第一张表格中的内容存储到 docx 文件中。
课程代码、课件及其他相关资料地址
https://gitee.com/wilsonyin/zero-basics-python
作者回复: 我提供一个代码样例: from docx import Document from openpyxl import load_workbook # 加载Excel文件 Workbook1 = load_workbook("import.xlsx", data_only=True) wb_sheet_actived = Workbook1['Sheet1'] # 创建docx文档 document = Document() table = document.add_table(rows=0, cols=wb_sheet_actived.max_column) table.style = 'Table Grid' # 获取合并单元格的信息 merged_cells_ranges = wb_sheet_actived.merged_cells.ranges # 遍历Excel表格的行 for row_cells in wb_sheet_actived.rows: table_cells = table.add_row().cells i = 0 # 遍历每行的单元格 for cell in row_cells: cell_value = "" # 判断单元格是否属于合并单元格 for merged_range in merged_cells_ranges: if cell.coordinate in merged_range: # 获取合并单元格的首个单元格的值 cell_value = merged_range.start_cell.value break # 如果单元格不属于合并单元格,则获取单元格的值 if not cell_value: cell_value = str(cell.value) if cell.value is not None else "" # 将值写入到docx表格的单元格中 table_cells[i].text = cell_value i += 1 # 保存docx文件 document.save('export.docx') 上述代码使用`openpyxl`库的`merged_cells`属性获取Excel中的合并单元格范围,并检查当前单元格是否在合并范围内,如果在,则获取合并范围的首个单元格的值。 然后,将单元格的值写入到`docx`文件的表格中,处理合并单元格时替换为合并范围首个单元格的值。 ps: 可以在讨论群中和我沟通,留言区问题经常会被打卡信息给淹没,导致问题被忽略,我也是翻查视频才看到的问题
作者回复: import win32com.client as win32 from win32com.client import constants import os curr_path = os.getcwd() doc_app = win32.gencache.EnsureDispatch('Word.Application')#打开word应用程序 doc_app.Visible =1#设置应用程序可见 doc = doc_app.Documents.Open(r'%s\批量插入题注示例文档.docx'%curr_path)#打开文档 print(doc.InlineShapes.Count) # 插入图片题注 for pic in doc.InlineShapes: rng = pic.Range rng.InsertCaption(Label= constants.wdCaptionFigure,Position=constants.wdCaptionPositionBelow,Title="咖啡杯") 参考链接: https://zhuanlan.zhihu.com/p/480345307