用Python主动美化表格

一给  金牌会员 | 2024-12-27 21:57:23 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 809|帖子 809|积分 2427

用Python爬虫爬取了天下20多个图书馆的热门借阅图书信息,并按照肯定的规则做了统计汇总,得到了这一份大学生各领域必读TOP150书单,这份书单分领域保存在Excel的50多个sheet页中,每个sheet页的文件是如许子的:

原始excel

固然内容非常优质,但是这些挤在一块的内容,根本没有人会有兴趣看下去,起码得调整一下格式,做个简单的美化,让excel更易读吧。
而50多个shee页如果分别去调格式的话,也是个不小的工作量,这个时候,Python的用武之地就来了!我可以用Python批量美化这些excel的格式,节流大量的时间。
Python对excel的操作我用到了xlwings这个包。
xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改,还可以和matplotlib、numpy、pandas无缝连接,支持读写numpy、pandas数据类型,并将matplotlib可视化图表导入到excel中,更重要的是,在操作excel的时候,你可以及时看到效果,可以说这是我最喜欢的处置惩罚excel的Python包了。
xlwings的使用方式也非常简单,只需要:
import xlwings as xw
这里我们主要使用其修改单元格格式的功能。
用python美化excel分为三步:

第1步,先自己用excel制作一个格式模板,调整行高、列宽等,并定名为sample.xlsx。
由于行高和列宽都是一些数值,用代码的方式调整不太直观,所以接纳在模板excel上调整好,然后应用到目标excel的方式。制作好的格式模板如下:

格式模板
第2步,让程序读取这个模板里的格式,告诉程序接下来所有的shee页都按照这个格式来美化。
  1. #获取样例表格的列宽数据
  2. def get_sample_format(col):##因为无需读取整个excel所有列的列宽,所以这里传入一个读取的列宽范围参数
  3.     wb = xw.Book("sample.xlsx")  # 建立于sample.xlsx文件的连接
  4.     sheet = wb.sheets["sheet1"] #打开sample.xlsx文件的sheet1
  5.     format = []
  6.     for i in range(col):
  7.         format.append(sheet[0,i].column_width)
  8.     print('列宽:'+str(format))  #'行高:'+sheet.range('A1').column_width+
  9.     wb.close()
  10.     return format
复制代码
第3步,让程序批量操作这50个shee页,按照模板的列宽进行设置,同时修改一些字体、单元格背景等。
  1. ## 美化表格  todo:还需要一个异常退出  https://blog.csdn.net/qq_37289115/article/details/107322332
  2. def beautiful_sheet(table_name,raw,col,format):
  3.      #设置颜色
  4.     wb2 = xw.Book(table_name)  # 建立excel表连接
  5.     sheets_name= [st.name for st in wb2.sheets]
  6.     for st in  sheets_name:
  7.         sheet2 = wb2.sheets[st]
  8.         # sheet2[0,0] =
  9.         sheet2.range('a1').value= ['序号','书名(@知乎 东写西读整理)','总浏览次数','霸榜高校数','霸榜率','在高校榜单排名中位数','豆瓣评分','豆瓣链接(@知乎 东写西读整理)'] #更改标题行
  10.         sheet2[0:raw,0:col+1].api.Borders(12).LineStyle = 0 #设置单元格横边框为细框线
  11.         sheet2[0:raw, 0:col+1].api.Borders(11).LineStyle = 0 #设置单元格竖边框为细框线
  12.         sheet2[0:raw,0:col].api.Font.Name = '微软雅黑'# 设置字体格式为微软雅黑
  13.         sheet2[0:raw, 0:col].api.HorizontalAlignment = -4108  #设置字体居中
  14.         sheet2[:,4].api.NumberFormat = "0%"    #“霸榜率”这一列单元格设置为百分比格式显示
  15.         for i in range(raw): ##行遍历
  16.                 if i==0:
  17.                     sheet2[i, 0:col].color = [217, 217, 217] #设置标题背景颜色格式
  18.                 elif i%2 ==0:
  19.                     sheet2[i,0:col].color = [183, 222, 232]    #设置偶数行背景颜色格式为浅蓝色
  20.         for i,item in enumerate(format): #列遍历,根据sample.xlsx中的列宽进行调整
  21.             sheet2[0,i].column_width = item
  22.     wb2.save()#保存excel
  23.     wb2.close()#关闭excel
  24.     return None
复制代码

运行程序,优化后的excel是这个样子的:

如许看起来就舒服多了!
末了,附上完备代码:
  1. import xlwings as xw#获取样例表格的列宽数据
  2. def get_sample_format(col):##因为无需读取整个excel所有列的列宽,所以这里传入一个读取的列宽范围参数
  3.     wb = xw.Book("sample.xlsx")  # 建立于sample.xlsx文件的连接
  4.     sheet = wb.sheets["sheet1"] #打开sample.xlsx文件的sheet1
  5.     format = []
  6.     for i in range(col):
  7.         format.append(sheet[0,i].column_width)
  8.     print('列宽:'+str(format))  #'行高:'+sheet.range('A1').column_width+
  9.     wb.close()
  10.     return format ## 美化表格  todo:还需要一个异常退出  https://blog.csdn.net/qq_37289115/article/details/107322332
  11. def beautiful_sheet(table_name,raw,col,format):
  12.      #设置颜色
  13.     wb2 = xw.Book(table_name)  # 建立excel表连接
  14.     sheets_name= [st.name for st in wb2.sheets]
  15.     for st in  sheets_name:
  16.         sheet2 = wb2.sheets[st]
  17.         # sheet2[0,0] =
  18.         sheet2.range('a1').value= ['序号','书名(@知乎 东写西读整理)','总浏览次数','霸榜高校数','霸榜率','在高校榜单排名中位数','豆瓣评分','豆瓣链接(@知乎 东写西读整理)'] #更改标题行
  19.         sheet2[0:raw,0:col+1].api.Borders(12).LineStyle = 0 #设置单元格横边框为细框线
  20.         sheet2[0:raw, 0:col+1].api.Borders(11).LineStyle = 0 #设置单元格竖边框为细框线
  21.         sheet2[0:raw,0:col].api.Font.Name = '微软雅黑'# 设置字体格式为微软雅黑
  22.         sheet2[0:raw, 0:col].api.HorizontalAlignment = -4108  #设置字体居中
  23.         sheet2[:,4].api.NumberFormat = "0%"    #“霸榜率”这一列单元格设置为百分比格式显示
  24.         for i in range(raw): ##行遍历
  25.                 if i==0:
  26.                     sheet2[i, 0:col].color = [217, 217, 217] #设置标题背景颜色格式
  27.                 elif i%2 ==0:
  28.                     sheet2[i,0:col].color = [183, 222, 232]    #设置偶数行背景颜色格式为浅蓝色
  29.         for i,item in enumerate(format): #列遍历,根据sample.xlsx中的列宽进行调整
  30.             sheet2[0,i].column_width = item
  31.     wb2.save()#保存excel
  32.     wb2.close()#关闭excel
  33.     return Noneif __name__ == '__main__':    table_name = "Top150.xlsx"#需要修改的excel名字    raw = 151 #需要修改格式的行数    col = 8  ##需要修改格式的列数    format = get_sample_format(col)    beautiful_sheet(table_name,raw,col,format)
复制代码


在这个信息化时代,Python这门语言是最适合非程序员来、解放重复劳动的,这门语言能做的非常多。
末了免费分享给大家一份Python全套学习资料,包含视频、源码,课件,希望能帮到那些不满近况,想提升自己却又没有方向的朋友。
关于Python技术储备

学好 Python 不论是就业照旧做副业赚钱都不错,但要学会 Python 照旧要有一个学习规划。末了大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点资助!
一、Python所有方向的学习蹊径

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、Python必备开发工具




三、Python视频合集

观看零底子学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从底子到深入,照旧很容易入门的。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、Python练习题

查抄学习结果。

六、口试资料

我们学习Python必然是为了找到高薪的工作,下面这些口试题是来自阿里、腾讯、字节等一线互联网大厂最新的口试资料,并且有阿里大佬给出了权势巨子的解答,刷完这一套口试资料信赖大家都能找到满足的工作。

   这份完备版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
  


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表