利用python中的win32com模块操作Word、Excel文件
word操作
doc文件转换为docx文件
安装win32com模块:pip3 install pypiwin32
import os from win32com.client import Dispatch, DispatchEx, constants def doc_to_docx(f_path): w = Dispatch( 'Word.Application' ) # w = DispatchEx('Word.Application') # 启动独立进程 w.Visible = 0 # 后台运行 w.DisplayAlerts = 0 # 不警告 # 打开文件 doc = w.Documents. Open (f_path) # 新建docx类型文件 new_path = os.path.splitext(f_path)[ 0 ] + '.docx' ''' word_doc = w.Documents.Add() # 创建新的文档 # 插入文字 myRange = doc.Range(0,0) myRange.InsertBefore('Hello python!') # 使用样式 wordSel = myRange.Select() wordSel.Style = constants.wdStyleHeading1 ''' # 保存 doc.SaveAs(new_path, 16 , False , " ", True, " ", False , False , False , False ) # 参数1、2必须传,如果文档有密码保护则需要传第四个参数,参数2可以是12,或者16,或其他适合的类型,其余参数都是默认值,不传也可以 # 关闭退出 doc.Close() w.Quit() # 删除源文件 os.remove(f_path) return new_path doc_to_docx(r "C:\Users\Desktop\新建 Microsoft Word 文档.doc" ) |
安装模块python-docx:pip3 install python-docx
往Word文档中插入图片,并设置宽度
from docx import Document def insert_img(): msg = '插入图片' image1 = r "C:\Users\Pictures\Camera Roll\1.jpg" image2 = r "C:\Users\Pictures\Saved Pictures\IMG_20180214_113145.jpg" # 保存在本地的图片 # 实例化对象 doc = Document() doc.add_paragraph(msg) # 添加文字 doc.add_picture(image1, width = Inches( 3 )) # 添加图, 设置宽度 doc.add_picture(image2, width = Inches( 5 )) doc.save(r "C:\Users\rongg\Desktop\word_添加图片.docx" ) # 保存路径 |
Excel操作
注:只能操作已经存在的Excel表格,不存在会报错
from win32com.client import Dispatch def excel_write(f_path, data, pwd = 123 ): excel_app = Dispatch( 'Excel.Application' ) excel_app.Visible = 0 # 后台运行 excel_app.DisplayAlerts = 0 # 禁止弹窗 # 打开Excel文件, 有密码时前三个参数必须传 xl_handle = excel_app.Workbooks. Open (f_path, UpdateLinks = 3 , ReadOnly = False , Format = None , Password = pwd) # 指定sheet页 sheet1 = xl_handle.Worksheets( 'Sheet1' ) for i in range ( len (data)): for j in range ( len (data[ 0 ])): sheet1.Cells(i + 1 , j + 1 ).Value = data[i][j] print ( 'done!' ) # 选择单元格 range_obj = sheet1. Range ( 'A2' ) range_obj.EntireRow.Insert() # 在选择的单元格前插入行 # 设置边框 ''' 5 双点虚线 6 加粗点虚线 7 单实线 8 点虚线 9 双实线 10 单点虚线 ''' range_obj.Borders.LineStyle = 7 # 为单元格赋值 sheet1.Cells( 8 , 1 ).Value = 'Hello' sheet1.Cells( 8 , 2 ).Value = 'Excel' # 关闭退出 xl_handle.Close( True ) # True 必须传入,否则不会保存 excel_app.Quit() excel_write( r "C:\Users\Desktop\新建 Microsoft Excel 工作表.xlsx" , [[ 'name' , 'age' , 'gender' ], [ 'jack' , 22 , 'man' ], [ 'bob' , 18 , 'man' ], [ 'alice' , 19 , 'woman' ]] ) |
执行后的结果如下:
后续更新。。。。
本文来自博客园,仅供参考学习,如有不当之处还望不吝赐教,不胜感激!转载请注明原文链接:https://www.cnblogs.com/rong-z/p/11307160.html
作者:cnblogs用户
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人