Python实现Office自动化办公(实现Python对word基本操作、对excel基本操作、在word中插入表格、word中插入网站爬虫取图)

一、 Pycharm 2018(Mac版)的下载

PyCharm图标

  1. PyCharm简介
    如果您初次使用 Pycharm ,首先要知道PyCharm是一种Python IDE(IDE,全称Integrated Development Environment ,集成开发环境,是用于提供程序开发环境的应用程序)。Pycharm是一个跨平台的IDE,可在Windows,macOS和Linux操作系统上提供一致的体验。PyCharm带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。
  2. PyCharm的下载安装
    Pycharm安装包推荐选择在官方网站下载,其他网址下载方式可能相对繁琐而且有限速(通常是网盘下载,速度非常慢,至少花费1h),所以推荐官网下载;
    Pycharm官网首页
    点击[DOWNOAD],选择合适自己电脑的Pycharm版本,再点击Other versions,选择2018年的版本;在这里插入图片描述
    选择“2018.2.8 - macOS (dmg)”进行下载,我们首选专业版。在专业版中,可以开发Django,Flask和Pyramid应用程序。此外,它完全支持HTML(包括HTML5),CSS,JavaScript和XML:这些语言通过插件捆绑在IDE中,并且默认情况下会为您打开。
    在这里插入图片描述
    大约几分钟的时间可以下载完成,得到下载好的“pycharm-professional-2018.2.8.dmg”文件。
    下载完成后,点击dmg文件,再将左侧的Pycharm图标拖入右侧Applications文件夹里实现安装。

二、Welcome to PyCharm

在这里插入图片描述

  1. 什么是Virtualenv
    点击“Create New Project”,选择“Pure Python”,会出现“New environment using”默认“Virtualenv”。Pycharm可以指定解释器。什么是“Virtualenv”,在操作系统下,我们会安装很多版本的Python解释器。同样,我们也有可能因为各种原因,需要不同版本的模块。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。在Python3.4之前,virtualenv需要独立手动安装后,方可执行。之后的版本中,Python自带了一个venv库,执行Python –m venv就可以达到与virtalenv同样的效果。更多的用户习惯上还是使用virtualenv的方式。
    virtualenv可以指定虚拟的Python解释器版本,只要你本地操作系统下安装了这个版本。
  2. 选择项目解释器
    点击“Project Interpreter”(项目解释器),在“Base interpreter”处选择python的要使用的虚拟环境。选择python的版本。再然后点击“Create”进行创建。在这里插入图片描述
    如何选择Python的版本(如果您已经安装了Python3)。首先打开终端,输入whereis python3,得到如下地址/usr/bin/python3
    在这里插入图片描述

PS:Mac终端快捷键大全:
Ctrl+c:中断终端中正在执行的任务。
Esc键:连续按3次显示所有的支持的终端命令。
Ctrl+p:上一个使用的历史命令。 (p:previous)
Ctrl+n:下一个使用的历史命令。(n:next)
Ctrl + d:相信这个快捷键在很多交换式情景下都能退出交换式模式。

随即进入Pycharm的开发界面。
在这里插入图片描述

  1. 新建python代码
    点击File–New…–Python File
    在这里插入图片描述
    在这里插入图片描述
    输入python文件名,点击OK。
    在这里插入图片描述
    打开pycharm,新建python项目时,提示“no python interpreter configured for the project”,理解为没有找到解释器,可手动设置添加解释器。1. 点击Configure Python interpreter,进入project interpreter设置页面。
    在这里插入图片描述
    点击“Show All”
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
会出现很多的包,例如:Django、Jinja2等
在这里插入图片描述
如果有需要的python包可以添加下载。本项目需要用到的有:docxtpl、math、openpyxl、docx、os、jinja2、selenium、time、re、pandas等等(这是代码里面的名称)
导入库

from docxtpl import DocxTemplate
import os

Python字符串与变量(出于商业隐私,相关信息暂时删去,可以参考代码修改成自己所需)

Equipment_prices=0#设备部分限价
Service_prices=0 #服务部分限价
Total_prices=Equipment_prices+Service_prices #项目总价
Ne=0#设备数量
Ns=0 #服务数量(除了集成服务费、安全生产费两个之外的数量,一般可为0)

Branch=""#某某支局
Address="" #地址
Company_name= "" #公司名称
Legal_representative="" #法人
time_limit_for_a_project=""  #工期
warranty_period=""   #维保期
type_of_payment= ""#付款条件
Account_Bank= "" #开户行
Bank_account=""#银行帐户
Tax_identification_number=""#纳税人识别号#
Equipment_and_related_integration_services=""#设备材料服务等等
Amount_of_performance="" #业绩金额(万元)
Time="2020年 月 日" # 询价文件发布时间
Qua23=""  #  2.3资质条件,例如安全生产许可证等等
Qua24=""#电工证等等
Application_materials=""#报名所需材料
T31="2020 年 月日17:30:00(北京时间,下同)至 2020 年 月日17:00:00 。" #询价文件获取时间
Tax_included= ""#含税税率
Cost_item="" #合同主体

三、使用DocxTemplate功能模块,实现python对Office Word文档进行基本操作,批量修改模板。

首先要安装docxtpl:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择使用清华镜像,速度会很快(https://pypi.tuna.tsinghua.edu.cn/simple
在这里插入图片描述
在这里插入图片描述
python里面DocxTemplate模块的使用:

doc = DocxTemplate("【询价文件】模板.docx")  # 对要操作的docx文档进行初始化
context = {
   
   'Address': Address,
           'Company_name': Company_name,
           'Legal_representative': Legal_representative,
           'time_limit_for_a_project': time_limit_for_a_project,
           'warranty_period':warranty_period,
           'type_of_payment':type_of_payment,
           'Account_Bank':Account_Bank,
           'Bank_account': Bank_account,
           'Tax_identification_number': Tax_identification_number,
           'Project_name':Project_name,
           'Equipment_and_related_integration_services':Equipment_and_related_integration_services,
           'Amount_of_performance':Amount_of_performance,
           'Equipment_prices':str(Equipment_prices),
           'Service_prices':str(Service_prices),
           'Total_prices':str(Total_prices),
           'Time':Time,
           'Qua23':Qua23,
           'Qua24':Qua24,
           'Application_materials':Application_materials,
           'T31':T31
          }  # company_name 是存在于1.docx文档里面的变量,就像这样{
   
   {**********}},直接放在1.docx文件的明确位置就行
doc.render(context)  # 这里是有jinjia2的模板语言进行变量的替换,然后便可以在1.docx文档里面看到{
   
   {*********}}变成了World company

以下是Word里面的模板形式:
在这里插入图片描述
以“Project_name”为例,在python里下图的形式书写,与word模板进行对应。调整python里面字符串的内容,word里对于位置也随之变化。实现一个模板快速调整的功能。
在这里插入图片描述
4、最后输出新的生成文件:


pwd = os.getcwd()
filename = pwd +'/'+str(Project_name)+"---询价文件"
print(filename)
if not os.path.exists(filename):               #判断文件夹是否存在
    os.makedirs(filename)                       #新建文件夹
else:
    print('文件夹已存在')

doc.save(str(filename)+"/"+str(Project_name+"【询价文件】.docx"))  # 保存

在这里插入图片描述

四、实现Python对Office Excel表格文档进行自动化操作(添加行或列、增加内容、合并单元格等等):

在这里插入图片描述

#coding=utf-8
import math
import Inquiry_Document
import docx
import openpyxl  # 导包读取
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.shared import Pt, RGBColor
from openpyxl import load_workbook
from openpyxl.styles import Font, Border, Side, PatternFill, Alignment

Project_name=Inquiry_Document. Project_name#项目名称
Equipment_prices=Inquiry_Document.Equipment_prices#设备部分限价
Ne=Inquiry_Document.Ne #设备数量
Service_prices=Inquiry_Document.Service_prices#服务部分限价
Ns=Inquiry_Document.Ns #服务数量(除了集成服务费、安全生产费两个之外的数量,一般可为0)
Total_prices=Inquiry_Document.Total_prices #项目总价

wb = openpyxl.load_workbook("【明细报价表】模板.xlsx") #加载表格模板文件
sheet1 = wb["报价汇总单"] #获取sheet1对象,修改单元格内容
sheet1["A1"] = Project_name+"--报价汇总单" #修改内容
sheet1["F4"] = Equipment_prices
sheet1["F5"] = Service_prices
sheet1["F6"] = Total_prices
sheet2 = wb["明细报价表"] #获取sheet2对象,修改单元格内容
sheet2["A1"] = Project_name+"--报价明细表"
sheet2.insert_rows(4,Ne-1) #添加设备行
A1="A3:"
A2="A"
A3=str(Ne+3)
A=A1+A2+A3
for i in range(Ne):
    B='B'+str(3+i)
    J='J'+str(3+i)
    sheet2[B]=i+1  #添加设备序号
    sheet2[J]="13%"  #添加设备税率
sheet2.merge_cells(A) #合并单元格

B="B"+str(Ne+3)+":I"+str(Ne+3)
sheet2["B"+str(Ne+3)] ="合计(最高限价"+str(Equipment_prices)+"元)"
sheet2.merge_cells(B) #合并单元格
def set_cells(cells,type,color=None):
  aligncenter=Alignment(horizontal='center',vertical='center')  #居中
  sidestyle=Side(border_style='thin')
  border=Border(left=sidestyle,right=sidestyle,top=sidestyle,bottom=sidestyle)
  for i in cells:
    for j in i:
      if(type=='percent'):
        j.number_format='0.00%'
      elif(type=='bold'):
        j.style='Pandas'
      elif(type=='center'):
        j.alignment=aligncenter
      elif(type=='border'):
        j.border=border
      elif(type=='color'):
      	j.fill = PatternFill("solid", fgColor=color)


sheet2.insert_rows(Ne+5,Ns) #添加设备行
for j in range(Ns+2):
    B1='B'+str(Ne+4+j)
    J='J'+str(Ne+4+j)
    sheet2[B1]=j+Ne+1  #添加设备序号
    sheet2[J] = "6%"


A4="A"+str(Ne+4)+":A"+str(Ne+Ns+6)
A5="B"+str(Ne+Ns+6)+":I"+str(Ne+Ns+6)
A6="A"+str(Ne+Ns+7)+":J"+str(Ne+Ns+7)
sheet2.merge_cells(A4) #合并单元格
sheet2.merge_cells(A5) #合并单元格
sheet2.merge_cells(A6) #合并单元格
sheet2["N"+str(Ne+3)]=Equipment_prices
sheet2["N"+str(Ne+Ns+6)]=Service_prices


sheet2["B"+str(Ne+3)]="合计(最高限价"+str(Equipment_prices)+"元)"
sheet2["B"+str(Ne+Ns+6)]="合计(最高限价"+str(Service_prices)+"元)"
sheet2["A"+str(Ne+Ns+7)]="含增值税总计(最高限价"+str(Total_prices)+"元)"
sheet2["M"+str(Ne+Ns+5)]=math.ceil(Service_prices*0.015)
sheet2["L"+str(Ne+Ns+5)]=round(((math.ceil(Service_prices*0.015))/1.06),2)
sheet2["K"+str(Ne+Ns+5)]=math.ceil(Service_prices*0.015)
sheet2["I"+str(Ne+Ns+5)]=round(((math.ceil(Service_prices*0.015))/1.06),2)
All='A1:N'+str(Ne+Ns+10)

A7="A"+str(Ne+Ns+8<
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傅佑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值