1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python自动化办公:excel篇 从此做表不加班。

python自动化办公:excel篇 从此做表不加班。

时间:2021-05-21 12:05:04

相关推荐

python自动化办公:excel篇 从此做表不加班。

表格讲解

表格格式

表格分为:工作簿,工作表,单元格

如图:整个文件就是一个工作簿,下面的 zhengjiang_power 和sheet1为工作表。

xlrd +xlwt读写表格

因为电脑右键新建的表格都是xls 和xlsx格式。

所以讲解xls 和xlsx的操作。

csv python 里有专门的包。csv或者pandas

pandas常用函数,个人常用的

xlrd 读表格

参数大全

import xlrd

data = xlrd.open_workbook(filename)#文件名以及路径,如果路径或者文件名有中文给前面加一个r。

table = data.sheets()[0] #通过索引顺序获取

table = data.sheet_by_index(sheet_indx)) #通过索引顺序获取

table = data.sheet_by_name(sheet_name)#通过名称获取

以上三个函数都会返回一个xlrd.sheet.Sheet()对象

names = data.sheet_names() #返回book中所有工作表的名字

data.sheet_loaded(sheet_name or indx) # 检查某个sheet是否导入完毕

行的操作

nrows = table.nrows #获取该sheet中的有效行数

table.row(rowx) #返回由该行中所有的单元格对象组成的列表

table.row_slice(rowx) #返回由该列中所有的单元格对象组成的列表

table.row_types(rowx, start_colx=0, end_colx=None) #返回由该行中所有单元格的数据类型组成的列表

table.row_values(rowx, start_colx=0, end_colx=None) #返回由该行中所有单元格的数据组成的列表

table.row_len(rowx) #返回该列的有效单元格长度

列的操作

ncols = table.ncols #获取列表的有效列数

table.col(colx, start_rowx=0, end_rowx=None) #返回由该列中所有的单元格对象组成的列表

table.col_slice(colx, start_rowx=0, end_rowx=None) #返回由该列中所有的单元格对象组成的列表

table.col_types(colx, start_rowx=0, end_rowx=None) #返回由该列中所有单元格的数据类型组成的列表

table.col_values(colx, start_rowx=0, end_rowx=None) #返回由该列中所有单元格的数据组成的列表

单元格操作

table.cell(rowx,colx) #返回单元格对象

table.cell_type(rowx,colx) #返回单元格中的数据类型

table.cell_value(rowx,colx) #返回单元格中的数据

table.cell_xf_index(rowx, colx) # 暂时还没有搞懂

import xlrd#打开工作簿xlsx=xlrd.open_workbook("zhenjiang_power.xlsx")#使用索引打开工作表table=xlsx.sheet_by_index(0)#使用名称打开工作表#table=xlsx.sheet_by_name('zhenjiang_power')#查看单元格值print(table.cell_value(0,0))#第一个单元格值print(table.cell(0,0).value)print(table.row(0)[0].value)

大文件读取有些慢。

遍历全部数据

#遍历全部数据row =table.nrows#总行数for i in range(row):rowdate =table.row_values(i)#i行的listfor a,b in enumerate(rowdate):print(i,a,b)#第i行,a列,数据b

xlwt 写表格

import xlwt#新建一个工作薄new_workbook=xlwt.Workbook()#新建一个工作表worksheet=new_workbook.add_sheet('new_sheet')#写入内容worksheet.write(0,0,'你好美')#保存new_workbook.save(r"C:\Users\Shineion\Desktop\test.xls")

打开写的文件

用神奇的 xlutils 套用 Excel 格式

首先下载xlutils

准备好一个Excel模板

模板必须为xls格式。xlsx不兼容

# -*- coding: utf-8 -*-from xlutils.copy import copy #把Excel中的模板复制过来import xlrdimport xlwttem_excel=xlrd.open_workbook(r"C:\Users\Shineion\Desktop\样例.xls",formatting_info=True)#formatting_info=True保留格式打开文件,formatting_info读取xlsx报错,错误信息NotImplementedError: formatting_info=True not yet implementedtem_sheet=tem_excel.sheet_by_index(0)new_excel=copy(tem_excel)#复制表格new_sheet=new_excel.get_sheet(0)new_sheet.write(2,1,12)new_sheet.write(3,1,13)new_sheet.write(4,1,14)new_excel.save(r'C:\Users\Shineion\Desktop\样例测试.xls')

绝对路径前面要加一个r

结果:

可以发现写入的12,13,14和原始表格样式一样。

接下来,我们新建自己的样式

# -*- coding: utf-8 -*-from xlutils.copy import copy #把Excel中的模板复制过来import xlrdimport xlwttem_excel=xlrd.open_workbook(r"C:\Users\Shineion\Desktop\样例.xls",formatting_info=True)#formatting_info=True保留格式打开文件,formatting_info读取xlsx报错,错误信息NotImplementedError: formatting_info=True not yet implementedtem_sheet=tem_excel.sheet_by_index(0)new_excel=copy(tem_excel)#复制表格new_sheet=new_excel.get_sheet(0)#新建一个样式style=xlwt.XFStyle()#初始化样式#字体设置font=xlwt.Font()#初始化字体font.name="微软雅黑"#字体font.bold=True# 加粗font.height=360 #计算公式=几号字体*20 如18号字体的height=360style.font=font #把font添加进样式#边框设置borders=xlwt.Borders()#初始化边框borders.top=xlwt.Borders.THIN#上边框 THIN细线框,还有其他线框borders.bottom=xlwt.Borders.THINborders.left=xlwt.Borders.THINborders.right=xlwt.Borders.THINstyle.borders=borders#把边框添加进样式#对齐aligment=xlwt.Alignment()#对齐aligment.horz=xlwt.Alignment.HORZ_CENTER#horz水平对齐方式 ,HORZ_CENTER 中心对齐通过改HORZ_CENTER中的center部分设置其他对齐方式aligment.vert=xlwt.Alignment.VERT_CENTER#vert垂直对齐,VERT_CENTER垂直中心对齐,通过修改center部分设置其他对齐方式style.alignment=aligmentnew_sheet.write(2,1,12,style)#style带格式写入new_sheet.write(3,1,13,style)new_sheet.write(4,1,14,style)new_excel.save(r'C:\Users\Shineion\Desktop\样例测试.xls')

报表生成

关于报表相关的,还是学习用pandas 。比xlwt,xlrd好用

英文官网:pandas

个人资源:

pandas常用函数,个人常用的

个人资源链接介绍很全的。

用 xlsxwriter ,openpyxl 更灵活操作 Excel

新的写入方式xlsxwriter

# -*- coding: utf-8 -*-import xlwtworkbook=xlwt.Workbook()sheet0=workbook.add_sheet('sheet0')for i in range(300):sheet0.write(0,i,i)workbook.save('测试.xls')

显示错误信息:

ValueError: column index (256) not an int in range(256)

xlwt不支持超过256列

为了避免这个问题,使用xlsxwriter。

# -*- coding: utf-8 -*-import xlsxwriter as xwworkbook=xw.Workbook(r'C:\Users\Shineion\Desktop\样例1.xls')#指定存的位置,新建工作薄sheet0=workbook.add_worksheet('sheet0')#新建一个工作表for i in range(300):sheet0.write(0,i,i)workbook.close()

运行成功

和xlwt还是有些区别的。

一个打开工作薄是否需要指定路径,

一个add_worksheet,和add_sheet

一个最后需要保持,一个直接close

新的追加写入方式openpyxl

# -*- coding: utf-8 -*-import openpyxlworkbook=openpyxl.load_workbook(r'C:\Users\Shineion\Desktop\测试.xlsx')#打开已有工作薄,openpyxl不支持旧版本的xls,会报错sheet0=workbook['Sheet1']#写入数据sheet0['B4']='总裁余' #B列第4行sheet0['B5']=6workbook.save(r'C:\Users\Shineion\Desktop\测试1.xlsx')

结果:

openpyxl,xlsxwriter 和前面xlwt.xlrd区别不支持带格式写入。

应用案例:把某个文件夹下的所有文件名写入表格,用于查找文件

# -*- coding: utf-8 -*-import osimport xlwtfile_dir="d:/"#查找d盘workbook=xlwt.Workbook()sheet0=workbook.add_sheet('sheet0')n=0for i in os.listdir(file_dir):sheet0.write(n,0,i)n+=1workbook.save(r'C:\Users\Shineion\Desktop\测试1.xlsx')

excel篇 介绍完啦。

pandas 和xlwt,xlrd 要联合使用。

word篇链接: 值得一看

python自动化办公:word篇。职场高手不是梦。

邮件篇链接:

python自动化办公:邮件篇 (定时邮件问候女票so easy)

电气专业的计算机萌新,写博文不容易。如果你觉得本文对你有用,请点个赞再走。谢谢。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。