python编程快速上手 让繁琐工作自动化_让繁琐的工作自动化——python 处理Excle文件...

让繁琐的工作自动化——python 处理Excle文件

今天收到一个省市县区的Excle表格,想着整理一下数据,将信息整理为层级关系(省-->市-->(县/区))存到字典里,以备不时之需。打开一看,MD,3千行数据,这TM要搞到神马时候。

0aa50782258bcc212ff3ed9786784358.pnga03f168d54cc2ab0899ae91378e2b506.png


叮铃铃~~~~ 叮铃铃 ~~~~,人生苦短,我用python。开搞!!!


openpyxl的基础使用

环境

  1. pycharm2020.1

  2. python3.8

  3. openpyxl 2.1.4

openpyxl已经更新到3点多了,我这里演示的是openpyxl 2.1.4

导入openpyxl模块

import openpyxl

读取操作

打开要处理的文件,该函数需要传入一个文件路径。wb是一个Workbook对象。

wb = openpyxl.load_workbook("省市县区.xlsx")

Excel文档由多个sheet组成。

获得Excel文档所有sheet。

sheetList = wb.get_sheet_names()

根据sheet名字获取对应表。表由一个Worksheet对象表示,sheet就是一个Worksheet对象。

sheet = wb.get_sheet_by_name("sheet名字")

取得sheet表格中的值 

数值定位:row是行号,column是列号。

字符定位:Excle用字母表示列,数字表示行。

x = sheet.cell(row=1, column=1).value #第一种表示y = sheet['A1'].value #第二种表示

列字母和数字之间的转换。

openpyxl.cell.column_index_from_string()   #字母---->数字openpyxl.cell.column_letter()              #数字---->字母

获取sheet有多大。

sheet.get_highest_row()         #返回行数sheet.get_highest_column()      #返回列数

遍历sheet

for i in range(1, sheet.get_highest_row()  + 1):    for j in range(1, sheet.get_highest_column()  + 1):        print(str(sheet1.cell(row=i, column=j).value) + " ", end="")        print()

写入操作

创建新的Workbook对象。

wb = openpyxl.Workbook()

保存文件。(传入文件名)

wb.save("haha.xlsx")

创建sheet,index表示sheet的次序,title表示sheet的名字。

wb.create_sheet(index=0,title='haha')

删除sheet,需要传入Worksheet对象,如果知道sheet的名字,就可使用以下代码删除

wb.remove_sheet(wb.get_sheet_by_name("sheet名字"))

写入数据

sheet.cell(row=1, column=1) = x #第一种表示sheet['A1'] = y #第二种表示

处理表格的源码

原表格公众号回复【省市】获得

import pprintimport openpyxlwb = openpyxl.load_workbook("省市县区.xlsx")sheet = wb.get_sheet_by_name("省市县区")data = {}for i in range(2, sheet.get_highest_row() + 1):    province = sheet.cell(row=i, column=1).value    city = sheet.cell(row=i, column=2).value    county = sheet.cell(row=i, column=3).value    data.setdefault(province, {})    data[province].setdefault(city, [])    if data[province][city].count(county) == 0:        data[province][city].append(county)print("数据整理完毕,开始写入文件")with open("cityInfo.py", "w", encoding='utf-8') as file:    file.write("cityInfo = " + pprint.pformat(data))print("文件写入完毕")

作者info 

作者:DebugWuhen

原创公众号:『DebugWuhen』,专注于记录有趣的编程技术和有益的程序人生,期待你的关注。 

转载说明:务必注明来源(注明:来源于公众号:DebugWuhen, 作者:DebugWuhen)830b02612a2fbd521b8ccf5d4be9203f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值