python 调用office_python调用office - CSDN
  • 我在昨天发布的文章 —— 简明 Python 教程:人生苦短,快用Python —— 中提到了Python已经在Office 365开发中全面受支持,有不同朋友留言或私信说想了解更加详细的说明,所以特意整理这一篇给大家参考。...

    我在昨天发布的文章 —— 简明 Python 教程:人生苦短,快用Python —— 中提到了Python已经在Office 365开发中全面受支持,有不同朋友留言或私信说想了解更加详细的说明,所以特意整理这一篇给大家参考。

     

    我之前写的《Office 365 开发入门指南》一书,对Office 365开发进行了比较详细的阐述,有兴趣可以参考 《Office 365开发入门指南》上市说明和读者服务

     

     

    Microsoft Graph SDK for Python

     


    如果你用Python开发了一个应用程序,希望调用Microsoft Graph来访问Office 365的数据,例如联系人列表,邮件处理,文件分享等。你可以通过下面的地址得到Microsoft Graph SDK,以及代码范例。

     

    http://aka.ms/pythongraphsamples

     

     

    Office 365 Add-ins with Python

     

    Office 365 Add-ins包括Office Add-ins和SharePoint Add-ins,在新的Web Add-ins的这种框架下,Python可以很自然地开发以上两种组件,因为他们其实都是用一个manifest文件进行定义,然后核心内容都是用一个网站来提供。Python可以很方便地开发网站,所以非常简单。

     

    这里有一个Office Add-in 范例 https://github.com/OfficeDev/Groups-API-Office-Add-in-Python-Sample 

     

     

    你可以用任意你喜欢的方式来开发Python 网站,例如在Visual Studio中提供了Python工具套件。

     

     

    除了上面的这种新型的Web Add-in,Python也可以通过传统方式与Office 应用程序交互,例如操作Excel,PowerPoint,Word等。请参考下面的介绍。

     

    Python with Excel

     

    有几个很好的Python模块能够方便地操作Excel的数据,包括读与写,不要求本地安装Excel。例如pandas, openpyxl, xlrd, xlutils 和 pyexcel. 详情可以参考下面的介绍:

    https://www.datacamp.com/community/tutorials/python-excel-tutorial 

     

     

    Python for Excel

     

    利用xlwings模块,你可以很方便地Python应用程序中操作Excel文件(同时支持xls和xlsx),也可以在Excel中直接调用Python的脚本(通过RunPython函数),还可以使用Python为Excel自定义函数,需要本地安装Excel。请参考 https://www.xlwings.org/ 

     

     

    Python for Word

     

    使用python-docx这个模块,可以很方便地创建和修改Word文档(不需要本地安装Word)

    https://pypi.org/project/python-docx/

     

     

    Python for PowerPoint

     

    使用python-pptx这个模块,可以很容易地创建或修改PowerPoint 文档(不需要本地安装PowerPoint)。请参考

    https://python-pptx.readthedocs.io/en/latest/ 

     

     

    其实还有很多,Python的模块都是开源的,由全世界的程序员贡献并分享,如果遇到什么需求,可以先用 pip search 命令搜索一下,也许已经有了现成的模块呢。

     

    本文转载自微信公众号"希章分享",有兴趣可扫描关注。

     

    展开全文
  • Python操作Word

    2019-03-25 13:53:43
    Python操作Word 使用python操作word &#...
        

    Python操作Word


    有两种方式:

    • 使用win32com
    • 使用docx

     

    1.使用win32com扩展包

    只对windows平台有效

    
    # coding=utf-8
    import win32com
    from win32com.client import Dispatch, DispatchEx
    word = Dispatch('Word.Application')  # 打开word应用程序
    # word = DispatchEx('Word.Application') #启动独立的进程
    word.Visible = 0  # 后台运行,不显示
    word.DisplayAlerts = 0  # 不警告
    path = 'G:/WorkSpace/Python/tmp/test.docx'  # word文件路径
    doc = word.Documents.Open(FileName=path, Encoding='gbk')
    # content = doc.Range(doc.Content.Start, doc.Content.End)
    # content = doc.Range()
    print '----------------'
    print '段落数: ', doc.Paragraphs.count
    # 利用下标遍历段落
    for i in range(len(doc.Paragraphs)):
        para = doc.Paragraphs[i]
        print para.Range.text
    print '-------------------------'
    # 直接遍历段落
    for para in doc.paragraphs:
        print para.Range.text
        # print para  #只能用于文档内容全英文的情况
    doc.Close()  # 关闭word文档
    # word.Quit  #关闭word程序
    

     

    2.使用docx扩展包

    优点:不依赖操作系统,跨平台

    安装:

    pip install python-docx
    

    参考文档:  https://python-docx.readthedocs.io/en/latest/index.html

    代码:

    
    import docx
    def read_docx(file_name):
        doc = docx.Document(file_name)
        content = '\n'.join([para.text for para in doc.paragraphs])
        return content
    


    创建表格

    
    # coding=utf-8
    import docx
    doc = docx.Document()
    table = doc.add_table(rows=1, cols=3, style='Table Grid') #创建带边框的表格
    hdr_cells = table.rows[0].cells  # 获取第0行所有所有单元格
    hdr_cells[0].text = 'Name'
    hdr_cells[1].text = 'Id'
    hdr_cells[2].text = 'Desc'
    # 添加三行数据
    data_lines = 3
    for i in range(data_lines):
        cells = table.add_row().cells
        cells[0].text = 'Name%s' % i
        cells[1].text = 'Id%s' % i
        cells[2].text = 'Desc%s' % i
    rows = 2
    cols = 4
    table = doc.add_table(rows=rows, cols=cols)
    val = 1
    for i in range(rows):
        cells = table.rows[i].cells
        for j in range(cols):
            cells[j].text = str(val * 10)
            val += 1
    doc.save('tmp.docx')
    

    读取表格

    
    # coding=utf-8
    import docx
    doc = docx.Document('tmp.docx')
    for table in doc.tables:  # 遍历所有表格
        print '----table------'
        for row in table.rows:  # 遍历表格的所有行
            # row_str = '\t'.join([cell.text for cell in row.cells])  # 一行数据
            # print row_str
            for cell in row.cells:
                print cell.text, '\t',
            print
    


     相关样式参考:  https://python-docx.readthedocs.io/en/latest/user/styles-understanding.html


    使用PYTHON编辑和读取WORD文档

    python调用word接口主要用到的模板为python-docx,基本操作官方文档有说明。

    python-docx官方文档地址

    使用python新建一个word文档,操作就像文档里介绍的那样:

    
    from docx import Document
    from docx.shared import Inches
    document = Document()
    document.add_heading('Document Title', 0)  #插入标题
    p = document.add_paragraph('A plain paragraph having some ')   #插入段落
    p.add_run('bold').bold = True
    p.add_run(' and some ')
    p.add_run('italic.').italic = True
    document.add_heading('Heading, level 1', level=1)
    document.add_paragraph('Intense quote', style='IntenseQuote')
    document.add_paragraph(
        'first item in unordered list', style='ListBullet'
    )
    document.add_paragraph(
        'first item in ordered list', style='ListNumber'
    )
    document.add_picture('monty-truth.png', width=Inches(1.25)) #插入图片
    table = document.add_table(rows=1, cols=3) #插入表格
    hdr_cells = table.rows[0].cells
    hdr_cells[0].text = 'Qty'
    hdr_cells[1].text = 'Id'
    hdr_cells[2].text = 'Desc'
    for item in recordset:
        row_cells = table.add_row().cells
        row_cells[0].text = str(item.qty)
        row_cells[1].text = str(item.id)
        row_cells[2].text = item.desc
    document.add_page_break()
    document.save('demo.docx')  #保存文档
    

    读取和编辑一个已有的word文档,只需在一开始添加上文件路径就行了,如下:

    
    from docx import Document
    from docx.shared import Inches
    document = Document('demo.docx')  #打开文件demo.docx
    for paragraph in document.paragraphs:
        print(paragraph.text)  #打印各段落内容文本
    document.add_paragraph(
        'Add new paragraph', style='ListNumber'
    )    #添加新段落
    document.save('demo.docx') #保存文档
    

    如果是想读取其中的图片或是更复杂地编辑,首先我们需要先来认识下docx文档的格式组成:

    docx是Microsoft Office2007之后版本使用的,用新的基于XML的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名扩展名后面添加了字母“x”(即“.docx”取代“.doc”、“.xlsx”取代“.xls”、“.pptx”取代“.ppt”)。

    docx格式的文件本质上是一个ZIP文件。将一个docx文件的后缀改为ZIP后是可以用解压工具打开或是解压的。事实上,Word2007的基本文件就是ZIP格式的,他可以算作是docx文件的容器。

    docx 格式文件的主要内容是保存为XML格式的,但文件并非直接保存于磁盘。它是保存在一个ZIP文件中,然后取扩展名为docx。将.docx 格式的文件后缀改为ZIP后解压, 可以看到解压出来的文件夹中有word这样一个文件夹,它包含了Word文档的大部分内容。而其中的document.xml文件则包含了文档的主要文本内容。

    word目录下:

    document.xml文件内容:

    media目录下存放word文档中插入的图片:

    所以,我们可以使用手工的方法编辑文件document.xml来对该word文档内容进行编辑,或是提取文档media中图片文件的方式来提取该word文档中所插入的所有图片。

    
    import zipfile
     
     f=zipfile.ZipFile('demo.docx','r') 
     
     for filename in f.namelist():
         f.extract(filename)
    






    About Me

    ........................................................................................................................

    ● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

    ● 本文在itpub( http://blog.itpub.net/26736162 )、博客园( http://www.cnblogs.com/lhrbest )和个人weixin公众号( xiaomaimiaolhr )上有同步更新

    ● 本文itpub地址: http://blog.itpub.net/26736162

    ● 本文博客园地址: http://www.cnblogs.com/lhrbest

    ● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

    ● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

    ● DBA宝典今日头条号地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

    ........................................................................................................................

    ● QQ群号: 230161599 (满) 、618766405

    ● weixin群:可加我weixin,我拉大家进群,非诚勿扰

    ● 联系我请加QQ好友 646634621 ,注明添加缘由

    ● 于 2019-01-01 06:00 ~ 2019-01-31 24:00 在魔都完成

    ● 最新修改时间:2019-01-01 06:00 ~ 2019-01-31 24:00

    ● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

    ● 版权所有,欢迎分享本文,转载请保留出处

    ........................................................................................................................

    小麦苗的微店 https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

    小麦苗出版的数据库类丛书 http://blog.itpub.net/26736162/viewspace-2142121/

    小麦苗OCP、OCM、高可用网络班 http://blog.itpub.net/26736162/viewspace-2148098/

    小麦苗腾讯课堂主页 https://lhr.ke.qq.com/

    ........................................................................................................................

    使用 weixin客户端 扫描下面的二维码来关注小麦苗的weixin公众号( xiaomaimiaolhr )及QQ群(DBA宝典)、添加小麦苗weixin, 学习最实用的数据库技术。

    ........................................................................................................................

    欢迎与我联系

     

     



    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2375245/,如需转载,请注明出处,否则将追究法律责任。

    展开全文
  • python操作office办公软件(doc)。前提条件是电脑已经安装了office办公软件,并且下载安装了pywin32-217.win32-py2.7库。安装python库的方法,可以参考 Python库的安装与卸载然后就可以使用python编程操作doc软件了...

    全栈工程师开发手册 (作者:栾鹏)

    python教程全解

    python操作office办公软件(doc)。

    前提条件是电脑已经安装了office办公软件,并且下载安装了pywin32-217.win32-py2.7库

    安装python库的方法,可以参考 Python库的安装与卸载

    然后就可以使用python编程操作word软件了。word软件的启动有时较慢,所以可能需要等待几秒中才能启动成功。

    python2.7下代码如下

    #coding:utf-8
    #python操作word
    from Tkinter import Tk
    from time import sleep
    from tkMessageBox import showwarning
    import win32com.client as win32
    
    warn = lambda app: showwarning(app, 'Exit?') #弹出提示框
    
    def word():
        app = 'Word'
        word = win32.gencache.EnsureDispatch('%s.Application' % app) #创建word对象 
        doc = word.Documents.Add() #添加一个文档
        word.Visible = True  #设置为桌面显示可见
        sleep(1)  #暂停一下,让用户看清演示的每一步
    
        rng = doc.Range(0,0)  #定位光标位置
        rng.InsertAfter('first line\r\n\r\n')  #在光标后加入内容
        sleep(1)  #暂停一下,让用户看清演示的每一步
        for i in range(3, 8):
            rng.InsertAfter('Line %d\r\n' % i)  #在光标后加入内容
            sleep(1)  #暂停一下,让用户看清演示的每一步
        rng.InsertAfter("\r\nlast line\r\n") #在光标后加入内容
    
        warn(app)   #弹出警告消息
    #     doc.Save("test.doc")  #保存
        doc.Close(False)  #文档关闭
        word.Application.Quit()   #word应用退出
    
    if __name__=='__main__':
        Tk().withdraw()  #不让tk顶级窗口出现,因为默认tk会自动创建一个顶级窗口,而且不会将其隐藏
        word()
    

    python3.6中代码如下

    #coding:utf-8
    #python操作word
    from tkinter import Tk
    from time import sleep
    from tkinter.messagebox import showwarning
    import win32com.client as win32
    
    warn = lambda app: showwarning(app, 'Exit?') #弹出提示框
    
    def word():
        app = 'Word'
        word = win32.gencache.EnsureDispatch('%s.Application' % app) #创建word对象 
        doc = word.Documents.Add() #添加一个文档
        word.Visible = True  #设置为桌面显示可见
        sleep(1)  #暂停一下,让用户看清演示的每一步
    
        rng = doc.Range(0,0)  #定位光标位置
        rng.InsertAfter('first line\r\n\r\n')  #在光标后加入内容
        sleep(1)  #暂停一下,让用户看清演示的每一步
        for i in range(3, 8):
            rng.InsertAfter('Line %d\r\n' % i)  #在光标后加入内容
            sleep(1)  #暂停一下,让用户看清演示的每一步
        rng.InsertAfter("\r\nlast line\r\n") #在光标后加入内容
    
        warn(app)   #弹出警告消息
    #     doc.Save("test.doc")  #保存
        doc.Close(False)  #文档关闭
        word.Application.Quit()   #word应用退出
    
    if __name__=='__main__':
        Tk().withdraw()  #不让tk顶级窗口出现,因为默认tk会自动创建一个顶级窗口,而且不会将其隐藏
        word()
    
    展开全文
  • 参照《Python核心编程》练习遇到问题3个。1、增加#coding:utf-82、一直提示没有Cell对象。查看报错源文件,搜索Cell发现只有Cells,确定代码少敲了s.低级错误。sh.Cells(1,1).Value = 'Python-to-%s Demo'%app3、...

    参照《Python核心编程》练习遇到问题3个。

    1、增加#coding:utf-8

    2、一直提示没有Cell对象。查看报错源文件,搜索Cell发现只有Cells,确定代码少敲了s.低级错误。

    sh.Cells(1,1).Value = 'Python-to-%s Demo'%app

    3、showwarning时,提示框未显示在屏幕最前端。(未解决)

    #coding:utf-8
    #!/usr/bin/env python
    
    from Tkinter import Tk
    from time import sleep
    from tkMessageBox import showwarning
    #from Tkinter import messagebox
    import win32com.client as win32
    
    warn = lambda app:showwarning(app,'Exit?')
    #warn = lambda app:messagebox.askokcancel(app,'Exit?')
    RANGE = range(3,8)
    
    def excel():
    	app ='Excel'
    	x1 = win32.gencache.EnsureDispatch('%s.Application'%app) 
    	ss = x1.Workbooks.Add()
    	sh = ss.ActiveSheet
    	x1.Visible = True
    	sleep(1)
    
    	sh.Cells(1,1).Value = 'Python-to-%s Demo'%app
    	sleep(1)
    	for i in RANGE:
    		sh.Cells(i,1).Value = 'line %d' %i
    		sleep(1)
    	sh.Cells(i+2,1).Value="Th-th-th-that's all folks!"
    
    	warn(app)
    #    print "warning",showwarning("Excel","exit?")
    	ss.Close(False)
    	x1.Application.Quit()
    
    if __name__=='__main__':
    	Tk().withdraw()
    	excel()
    
    

    展开全文
  • 应用背景 工作中,由于需要出定期的报告,需要用到office,主要是要用到excel
  • python调用office API的相关应用批量合并word文档 批量合并word文档 参考链接 https://zhuanlan.zhihu.com/p/100588511?utm_source=qq. 主要内容 import win32com.client as win32 import os word = win32.gencache...
  • 首先介绍下office win32 com接口,这个是MS为自动化提供的操作接口,比如我们打开一个EXCEL文档,就可以在里面编辑VB脚本,实现我们自己的效果。对于这种一本万利的买卖,Python怎么能放过,它内置了对于win32 com...
  • Python 使用office365邮箱

    2020-06-09 07:40:10
    最近遇到一个需求,需要使用office365邮箱发送邮件,使用SSL发送会失败,必须使用TLS加密协议才能发送成功。 二、完整代码 使用类封装了一下,功能如下: 1. 支持附件 2. 支持多个发件人&...
  • python对于office的操作

    2018-07-23 19:27:49
    xlrd 是对Excel读操作的库; xlwt 是对Excel写操作的库; import xlrd import xlwt from datetime import date,datetime ...def read_excel(): ... workbook = xlrd.open_workbook(r'F:\demo.xlsx') ...
  • 朋友的家人做生意,每日从各地...对比老牌的Perl,看似Python不是那么的精通 —— 对比Perl超快的文本处理速度和广泛应用于Cgi程序的编写历史,以及目前大红大紫的Ruby在Web开发上的病毒式蔓延,而比起静态语言比...
  • /usr/bin/python2.6 # -*- coding: utf-8 -*- # pip install timeout-decorator import os import win32com.client # wps使用的是wps2016版本 # 转换 Word文件档到pdf def ConvertDocToPdf(src, dst): ...
  • 1. os.system(cmdtext) system 函数可以将字符串转化成命令在服务器上运行;返回执行程序的退出状态码。其原理是每一条 system 函数执行时,其会创建一个子进程在系统上执行命令行,子进程的执行结果无法影响主进程...
  • Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码。为了更好地控制运行的进程,可以使用win32process模块中的函数...
  • 那么两者结合的话,如何用Python调用VBA呢? 代码如下: ''' @Author: Liang @LastEditors: Liang @Date: 2020-06-30 14:27:25 @LastEditTime: 2020-07-26 19:59:47 @Email: str-liang@outlook.com @FilePath: /...
  • Python 通过 pywin32 可以方便地调用各组件。如果下载和安装 pywin32 有困难,可以到 Sourceforge 的镜像网摘查找合适的版本。 import win32com.client as win32 def send_mail(): outlook = win32.Dispatch('...
  • Python with Excel 有几个很好的Python模块能够方便地操作Excel的数据,包括读与写,不要求本地安装Excel。例如pandas,openpyxl,xlrd,xlutils和 pyexcel. 详情可以参考下面的介绍: ...
  • python通过win32api调用oulook接口,进行邮件发送(带附件)。需要系统对应的包 https://sourceforge.net/projects/pywin32/files/pywin32/
  •   要使用Python控制MS Word,您需要先安装win32com套件,这个套件可以到 http://sourceforge.net/projects/pywin32/ 找到。您需要先import win32com模块才能进行Word的控制。   from win...
  • # This Python file uses the following encoding: utf-8 import sys, win32com.client import copy def unichr_supplemental(scalar): try: return unichr(scalar) except ValueError: ...
  • Python 通过 pywin32 可以方便地调用各组件。如果下载和安装 pywin32 有困难,可以到 Sourceforge 的镜像网摘查找合适的版本。 单一账号 ‘’’ import win32com.client as win32 def send_mail(): outlook = win32....
1 2 3 4 5 ... 20
收藏数 6,572
精华内容 2,628
关键字:

python 调用office