亲们,如果你对怎么做自动统计的表格_表格自动化怎么做不是很熟悉,那么你来对了地方。今天我将和大家分享一些关于怎么做自动统计的表格_表格自动化怎么做的知识,希望能够帮助大家更好地理解这个话题。
本文目录一览
excel怎么实现报表自动化?
python操作Excel实现自动化报表贺霆
贺霆
算法工程师
529 人赞同了该文章
Excel作为日常办公最广泛使用的工具之一,学好它可以帮助我们节约时间,提升工作效率,学会灵活高效的使用excel有着十分重要的意义。
本人觉得会使用大部分excel内置公式和以及VBA的就是高手了。
不过比这更高级的是用程序操作excel,针对相似性很高或者重复性、繁琐的excel任务用一个程序可以实现一劳永逸,夸张的说:可以节省你的生命 哈哈。
以下是python操作excel的介绍:
一、工具包
1.xlrd:从Excel电子表格中提取数据 doc地址:https://xlrd.readthedocs.io/en/latest/
2.xlwt:将数据写入Excel电子表格 doc地址:https://xlwt.readthedocs.org/en/latest/
3.xlutils:提供一组处理Excel文件的实用程序 doc地址:https://xlutils.readthedocs.io/en/latest/
二、安装
python -m pip install xlrd xlwt xlutils
三、基本用法
python操作excel的相关工具包可以具体到操作指定单元格的填充样式、数值类型、数值大小等等。然而python操作excel需要一定pandas数据处理功底,后续将补上章节:pandas数据处理技能
1.从指定文件路径读取excel表格,进行一定操作,然后保存到另一个excel文件:result.xlsx
import xlwt
import xlrd
from xlutils.copy import copy
import pandas as pd
from pandas import DataFrame,Series
import os
os.chdir('./')
# 从指定文件路径读取excel表格
df = pd.read_excel('D:/mypaper/data/data.xlsx')
# 查看df内容
# 根据age算出出生年份,增加一列
import datetime
import os
year = datetime.datetime.now().year#获取当前系统时间对应的年份
df['birth'] = year-df['age']
df.to_excel('result.xlsx')#保存到当前工作目录,可以用os.getcwd()查看
#查看下此时df的内容,可以看到已经生成了birth这一列
乍看好像只用到了pandas,还没有用到上面介绍的三个工具包,下面介绍利用python操作excel底层
2.单元格操作
# 定义方法:读取指定目录下Excel文件某个sheet单元格的值
def excel_read(file_path,table,x,y):
data = xlrd.open_workbook(file_path)
table = data.sheet_by_name(table)
return table.cell(y,x).value
# 定义方法:单元格值及样式
write_obj_list = []
def concat_obj(cols,rows,value):
write_obj_list.append({'cols':cols,'rows':rows,'value':value,\
'style':xlwt.easyxf('font: name 宋体,height 280;alignment: horiz centre')})
# 定义方法:合并单元格
def merge_unit(srows,erows,scols,ecols,value):
write_obj_list.append({'id':'merge','srows':srows,'erows':erows,'scols':scols,\
'ecols':ecols,'value':value,'style':xlwt.easyxf('font: name 宋体,height 280;alignment: horiz centre')})
# 定义方法:更新excel
excel_update(file_path,write_obj_list,new_path):
old_excel = xlrd.open_workbook(file_path, formatting_info=True)
#管道作用
new_excel = copy(old_excel)
'''
通过get_sheet()获取的sheet有write()方法
'''
sheet1 = new_excel.get_sheet(0)
'''
1代表是修改第几个工作表里,从0开始算是第一个。此处修改第一个工作表
'''
for item in write_obj_list:
if 'id' not in item.keys():
if 'style' in item.keys():
sheet1.write(item['rows'], item['cols'], item['value'],item['style'])
else:
sheet1.write(item['rows'], item['cols'], item['value'])
else:
if 'style' in item.keys():
sheet1.write_merge(item['srows'],item['erows'],item['scols'], item['ecols'], item['value'],item['style'])
else:
sheet1.write_merge(item['srows'],item['erows'],item['scols'], item['ecols'], item['value'])
'''
如果报错 dict_items has no attributes sort
把syle源码中--alist.sort() 修改为----> sorted(alist)
一共修改2次
'''
new_excel.save(file_path)
#参数详解
# srows:合并的起始行数
# erows:合并的结束行数
# scols:合并的起始列数
# ecols:合并的结束列数
# value:合并单元格后的填充值
# style:合并后填充风格:
# font: name 宋体
# height 280;
# alignment: horiz centre
# ... 与excel操作基本保持一致
注意:该方法仅仅是将需要直行的动作保存到一个list中,真正的动作还未执行,执行动作是发生在excel_update方法中
最终调用excel_update方法,传入每个单元格需要进行的操作和填充值的write_obj_list以及文件保存路径file_path
就可以在当前工作目录下生成想要的Excel结果文件。
注意:
1.write_obj_list支持用户自定义
2.write_obj_list也可以是根据excel_read方法读取现有待修改的excel文件(可以维持原有表格的格式)而生成
python操作excel还有很多其他的基本方法,因篇幅的限制不再陈述和演示,想要深入研究的可以点击上面的doc地址
如何实现Word表格自动化
快速分割表格如果要将一张Word大表要一分为二,其实一键就能完成。
可以把光标定位到需要分离的表格内容的某一行,然后按下“Ctrl+Shift+Enter”组合键,这样整个表格就会被一分为二,并且两个表格中间会自动加入一个空行,可以输入其他内容。
○
快调表格行序
Word表格中“行”的顺序弄错了,别用鼠标一个一个调整了,快捷键就行。
用“Shift+Alt+上(下)方向键”不但能够调整文档中段落的顺序,也可以调整Word表格中的行序。方法是:将插入点置于要调整行的任意一个单元格内(或行尾段落标记前),按下“Shift+Alt”键,然后按上下方向键,按向上箭头键可使该行在表格内向上移动,按向下箭头键可使该行向下移动。
○
倒序建立表格
通常大家都是先创建好表格,然后再输入内容。但是,有时创建表格事先没有规划好,所以出现输入内容时才发现行或列不够用了或者太多了的情况。怎么办?
其实,你可以改变一下顺序,即先输入表格内容,只是在输入内容时,请以空格识别“列”,以回车键识别“行”。然后,选中输入的表格内容,再单击“插入”选项卡,单击“表格”组中的“表格”下的三角箭头,单击“插入表格”,则一个表格就形成了。
○
最后添加一行
虽然用右键菜单或“插入”菜单也能完成在表格最后一行再加一行的操作,但还是显得复杂了点。简单的方法是什么?
在表格最后添加一行,只需将光标移到表格的最后一个单元格中,按Tab键即可快速插入一行。
○
巧调表格列宽
在编辑Word表格时,大家通常都是拖动表格线来调整列宽。其实,如果在拖动表格线时,配合使用3种不同的按键,可以达到不同的目的。
按住Ctrl键的同时拖动,表格线左边的列宽改变,增加或减少的列宽由其右方的列共同分享或分担,整个表格的宽度不变;按住Shift键的同时拖动,只改变表格线左方的列宽,其右方的列宽不变,整个表格的宽度将有变动;按住Alt键的同时拖动,标尺上会显示出各列的宽度,其拖动结果与普通拖动方法相同。
○
表格自动填充
Excel中表格能用右下角小方块自动填充,但Word表格中没有这个小方块,拖动无效。自动填充怎么解决?
在Word表格里选中要填入自动序列的单元格,单击“开始”选项卡中“段落”组中的“编号”下拉列表,选择“定义新编号格式”,窗口中“编号格式”栏内输入要填充的序号基数,在“编号样式”栏内选择样式,点击“确定”即可。
如果您觉得本文对您有所帮助,请在文章结尾处点击“顶一下”以表示您的支持。如果您对本文有任何意见或建议,请点击“踩一下”,以便我们改进该篇文章。如果您想了解更多相关内容,请查看文章下方的相关链接。