一、关于第三方库

可以理解为易语言的模块感念,就是别人已经做好的模块。
也就是说,别人讲某些功能,编好了程序,进行了库封装,供我们调用。我们不需要一切从头开始,自己去做了。

1)第三方库的安装:

A 在cmd安装

在 WINDOWS 的CMD下进行安装,不是python的IDe编辑器里安装。
在windos,我们按键盘上的:win键+R键
在出现的运行,输入:cmd
在命令行里,输入:
pip3 install
后面的
就是库的名字.
如果让其连接国内的镜像库安装,在后面加入 -i参数 和镜像库地址
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/***

上面是连接库地址进行的安装,但有时候,我们下载了库包,自己手动安装,安装方法根据下载库的格式不同,略有不同:

  • 下载的是EXE文件:直接执行,按提示进行就是。
  • 下载的是.whl类的文件:在cmd下操作,步骤如下

pip3 install wheel
cd 切换到下载文件所在的路径 如:cd c:\download
pip3 install *.whl

  • 下载的是压缩包类的文件的时候安装包,

cd 切换到下载文件所在的路径 如:cd c:\download
python3 setup.py install

B pycharm中安装第三方库方法

在pycharm中,点文件—设置—项目—PYTHON解释器
点右下角的+
image.png
在出现的右上角的搜索框中,输入要安装的库名,如:docx,选择对应的,点下面的安装包安装即可!
image.png

2)办公自动化,常用的第三方库:

numpy —科学计算库
pandas —-数据分析库,其集成了数据读写接口,可以对接excelb表格
matplotlib—-可视化绘图
xlrd/xlwt excel处理. xlrd 读取Excel内容 ,然后配合numpy 、pandas对数据进行分析处理
xlwt,新建一个excel 文件,将处理结果写到这个文件
xlutils —-在已有的excel 文件中,再追加写入数据
docx库—-word 处理库
pymysql —-数据库读写
xlsxwriter 库 —- 支持xlsx文件,支持256列, 但是不支持格式,fomatting_info
openpyxl —-也可操作excel, 操作简单,但不稳定

常见的操作组合:
xlrd 读excel 数据,用pandas,numpy 分析处理
xlwt 保存数据
xlutils—-打开已存在的exceL,进行补充处理

库的引用是用import ,如 import pandas

二、EXCEL操作的基本概念

小及技巧:将列A\BC,用数字表示,用R1C1方式:excel -选项—公式—R1C1,列就不是ABC,而是123,但python列索引是从0开始,即012。
EXCEL的构成,包括三部分:工作簿workbook—-包含的工作表sheet—旗下的表格cell
表关系概览:

构成 导入库 工作簿操作,假定变量workbook 工作表操作,假定变量sheet 单元格操作,假定变量cell 文件 说明
EXCEL   workbook workbook.sheet(1) sheet1.cell() 点保存  
 
xlrd   打开工作簿 调用那个工作表 读那个数据 读取,不用保存 读工作表
import xlrd workbook=xlrd.open_workbook(‘路径’) sheet=workbook.sheet_by_index(表索引) sheet.cell_value(行号,列号) 不同的引用方法
  sheet=workbook..sheet_by_name(‘表名’) sheet.cell(行号,列号).value 不同的引用方法
  sheet.row(行)[列].value 注意行是(),列是[]
 
xlwt import xlwt 新建工作簿 新建工作表 写数据到那个表的那个单元格 保存文件 写工作表
  workbook=xlwt.workbook() sheet=workbook.add(‘新建的表明’) sheet.write(行,列,要写入的数据) workbook.save(‘d:/test.xls’) 不支持xlsx,列最大256
 
xlutils from xlutils.copy import copy xlrd_open_workbook(‘目标表路径’) 旧工作簿变量.sheet_by_index(表索引)   workbook.save(‘d:/test.xls’) 只用库xlutils的复制功能
copy(已打开的目标工作簿) 新工作簿变量.get_sheet(索引)   from xlutils.copy import copy
复制旧工作簿 得到已打开旧工作簿对应索引的工作表    
 
xlswriter import xlswriter as xw workbook=xw.Workbook(‘保存文件路径.xlsx’) sheet=workbook.add_worksheet(‘表名’) sheet.write(行,列,要写入的数据) workbook.save(‘d:/test.xlsx’) 可超过256行,但是不支持格式格式,fomatting_info
 
openpyxl import openpyxl workbook=openpyxl.load_workbook(‘路径.xlsx’) sheet=工作簿变量[‘表名’] sheet[‘B5’]=’456’ 读取,不用保存 会不稳定,但引用单元格直接引用,可以为xlsx

image.png

1、读EXCEL: 用到库xlrd

import xlrd #1 调入xlrd库
workbook=xlrd.open_workbook(‘c:/文件路径.xls’) #2打开 excel工作簿,注意路径的反斜杠向左下斜
sheet=workbook.sheet_by_index(0) #3 打开工作簿下的工作表,这里是按索引打开,第一个索引是0
sheet=workbook.sheet_by_nane(‘测试’) # 这是另一个打开工作表的方式,是按表名
cell =sheet.cell(1,2).value #4 读其工作表中,某单元格的值,单元格读取方式有几种,见上表

2、写EXCEL:用到库xlwt

import xlwt
new_workbook=xlwt.Workbook() #1 新建工作簿,W大写
new_sheet=new_workbook.add_sheet(‘new_test’) #2 新建工作簿下工作表,用sheet,可以是表明,也可使索引
new_sheet.write(1,1,”测试”) #3 写入工作表某单元格数据
new_workbook.save(‘D:/0python/excel/00excel写.xls’) #4 保存,其对象是工作簿,不是工作表,注意路径反斜杠

3、复制工作表:用到xlutils,我们只用它copy

from xlutils.copy import copy
old_workbook=xlrd.open_workbook(‘c:/旧工作簿的路径.xls’,formatting_info=True) # 1 先打开旧工作簿,带格式
old_sheet=old_workbook.sheet_by_index(0) #2 打开其对应的工作表

new_workbook=copy(old_workbook) #3 复制工作簿
new_sheet=new_workbook.get_sheet(0) #4 建立工作表

4、写入格式数据:

import xlrd
import xlwt
old_workbook=xlrd.open_workbook(‘c:/旧工作簿的路径.xls’,,formatting_info=True) # 1 先打开旧工作簿,带格式
old_sheet=old_workbook.sheet_by_index(0) #2 打开其对应的工作表

style=xlwt.XFStyle() #3 定义样式,此命令固定

font=xlwt.Font() #4 定义字体
font.name=’微软雅黑’
font.bold=True
font.height=360
style.font=font # 5 定义的字体作为样式的字体

borders=xlwt.Borders() #6 定义边框
borders.top=xlwt.Borders.THIN
borders.bottom=xlwt.Borders.THIN
borders.left=xlwt.Borders.THIN
borders.right=xlwt.Borders.THIN
style.borders=borders #7 定义的边框 作为样式的边框

alignment=xlwt.Alignment() #8 定义对齐方式
alignment.horz=xlwt.Alignment.HORZ_CENTER
alignment.vert=xlwt.Alignment.VERT_CENTER
style.alignment=alignment #9 定义的对齐方式作为样式的对齐方式

new_sheet.write(2,1,44,style) #10 写入带样式的数据

new_excel.save(‘D:/0python/excel/复制的.xls’) #11 保存工作表

5、总结应用

  • 获取工作簿中工作表数量

sheetname=wkbk.sheet_names()
print(len(sheetname))

  • table.nrows #这个是获取行数
  • talbe.ncols # 获取列数
  • len() #返回的的是的元素个数

a=[‘ad’,’bd’,’def’,2]
print(len(a)) #结果是4

======一个读取excel ,然后按格式填到另一个表里的例子====

import xlrd #先导入这三个库
import xlwt
from xlutils.copy import copy

1 打开要读取数据的表
xlsx=xlrd.open_workbook(‘路径’) #打开簿
table=xlsx.sheet_by_index(0) #打开表

2 读取所有的数据
all_data=[] #建立一个列表
for i in range(1,talbe.nrows) #建立一个循环,以表的行数为限
列1=table.cell(i,1).value #读这个表第i行第1列的值到列1
列2=table.cell(i,3).value #读这个表第i行第3列的值到列2
列3=table.cell(i,5).value #读这个表第i行第5列的值到列3,依次类推
。。。
data={‘公司名’:列1,’重量’:列2,’价格’:列3} #建立一个字典,把每一行的元素对应一个字典,便于对应
all_data.append(data) # 把字典数据,放到列表里

3 将数据进行加减换算后,存储对应列表

weight=[] #定义几个列表,以便存储
price=[]

for m in all_data:
if m[‘公司名’]==’萝卜公司’: #萝卜公司是要存放数据表的列名
weight.append(m[‘重量’]) #将重量填到对应的公司名下的重量
price.append(m[‘重量’]m[,’价格’])
if m[‘公司名’]==’李四公司’: #填写另一个公司是要存放数据表的列名
weight.append(m[‘重量’]) #将重量填到对应的公司名下的重量
price.append(m[‘重量’]
m[,’价格’])

4 打开目标表
tem_excel=xlrd.open_workbook(‘目标表的路径.xls’,formatting_info=True)
tem_table=tem_excel.sheet_by_index(0)

5 复制目标表,以便写入数据
new_excel=copy(tem_excel)
new_sheet=new_excel.get_sheet(0)

style=xlwt.XFStyle() #定义样式
font=xlwt.Font()
#…样式略。。

6 写入数据
new_sheet.write(2,1,len(weight),style) #第2行写 ,len 是取元素个数
new_sheet.write(2,2,round(sum(weight),2),style) #sum(weight)是对列表weight求和,round(*,2)保留2位小数
new_sheet.write(2,3,round(sum(price),2),style)

new_sheet.write(3,1,len(weight),style) #第3行
new_sheet.write(3,2,round(sum(weight),2),style) #sum(weight)是对列表weight求和,round(*,2)保留2位小数
new_sheet.write(3,3,round(sum(price),2),style)
。。。
new_excel.save(‘路径’)