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

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

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


叮铃铃~~~~ 叮铃铃 ~~~~,人生苦短,我用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 pprint
import openpyxl
wb = 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)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值