python脚本——Excel处理
python脚本第一弹——Excel处理
本文旨在为不熟悉python的开发人员提供excel便捷处理工具,以方便日常工作。
一、python安装
进入https://www.python.org/downloads/,根据操作系统版本选择对应安装包。建议安装3.x版本。
安装过程注意勾选 Add to path,将python路径信息添加到系统环境变量PATH中。
IDE工具建议安装jetbrains提供的pycharm社区版。
二、Excel介绍
电子表格工具,后缀为 .xlsx。
一个Excel文档为一个工作簿,工作簿可以包含多个sheet,一个sheet为一个工作表。
三、安装openpyxl模块
在DOS命令窗口执行: pip install openpyxl==2.6.2
四、Excel处理
本模块代码及实验文件均已上传Github。
仓库地址: github.com/WWindmill/p…
4.1 读取操作
import openpyxl
from openpyxl.utils import get_column_letter, column_index_from_string# 工作簿对象
workbook = openpyxl.load_workbook("C:\projects\Python\9.源代码文件\automate_online-materials\example.xlsx")
print('type of result: ', type(workbook))
print("all sheet names: ", workbook.sheetnames)
# 获取工作表
sheet = workbook['Sheet1']
print("sheet obj: ", sheet, " sheet title:", sheet.title)
# 获取工作簿的活动表
anotherSheet = workbook.active
print("active sheet: ", anotherSheet)
# 获取单元格
print("cell A1: ", sheet['A1'])
print("cell A1 val: ", sheet['A1'].value)
c = sheet['B1']
print('Row %s, Column %s is %s' % (c.row, c.column, c.value))
print('Cell %s is %s' % (c.coordinate, c.value))
print("cell[B1]: ", sheet.cell(row=1, column=2))
# 步长为2
for i in range(1, 8, 2):print('row:%s,column:2, value:%s' % (i, sheet.cell(row=i, column=2).value))
# 获取工作表大小
print("max row: ", sheet.max_row)
print("max column: ", sheet.max_column)
# 列字母与数字转换
print("1 mean letter: ", get_column_letter(1))
print(sheet.max_column, "mean letter: ", get_column_letter(sheet.max_column))
print("column A point at num: ", column_index_from_string('A'))
# 按行遍历 method1
print(tuple(sheet['A1':'C3']))
for rowCell in sheet['A1':'C3']:for eachCell in rowCell:print(eachCell.coordinate, eachCell.value)print('--- END OF ROW ---')
# 按行遍历 method2
print(list(sheet.rows)[0])
for cellObj in list(sheet.rows)[0]:print(cellObj.value)
print('--- END OF ROW ---')
# 按列遍历
print(list(sheet.columns)[0])
for cellObj in list(sheet.columns)[0]:print(cellObj.value)
print('--- END OF column ---')
4.2 写操作
import openpyxl# 工作簿对象
workbook = openpyxl.load_workbook(".\source\example.xlsx")
print('type of result: ', type(workbook))
print("all sheet names: ", workbook.sheetnames)
# 获取工作表
sheet = workbook['Sheet1']
print("sheet obj: ", sheet, " sheet title:", sheet.title)
# 修改sheet名称 并转储为另一个文件
sheet.title = 'Spam Spam Spam'
workbook.save('.\source\example_copy.xlsx')
# 创建和删除工作表
workbook.create_sheet(index=3, title="the fourth sheet")
print('sheet names: ', workbook.sheetnames)
del workbook['the fourth sheet']
print('sheet names: ', workbook.sheetnames)
workbook.save('.\source\example_copy.xlsx')
# 修改单元格属性值
sheet['B1'] = 'Hello, world!'
print('B1 modified value: ', sheet['B1'].value)
workbook.save('.\source\example_copy.xlsx')
4.3 其他操作
import openpyxl# 公式
workbookCal = openpyxl.Workbook()
sheet = workbookCal.active
sheet['A1'] = 200
sheet['A2'] = 300
# 设置公式.
sheet['A3'] = '=SUM(A1:A2)'
workbookCal.save('.\source\writeFormula.xlsx')# 行、列操作
workbookOpt = openpyxl.Workbook()
sheetOpt = workbookOpt.active
sheetOpt['A1'] = 'Tall row'
sheetOpt['B2'] = 'Wide column'
# 设置宽高
sheetOpt.row_dimensions[1].height = 70
sheetOpt.column_dimensions['B'].width = 20
# 合并单元格
sheetOpt.merge_cells('A1:D3')
sheetOpt['A1'] = 'Twelve cells merged together.'
sheetOpt.merge_cells('C5:D5')
sheetOpt['C5'] = 'Two merged cells.'
workbookOpt.save('.\source\dimensions.xlsx')
# 分拆单元格
sheetOpt.unmerge_cells('C5:D5')
workbookOpt.save('.\source\dimensions.xlsx')
# 冻结窗口
sheetOpt.freeze_panes = 'C5'
workbookOpt.save('.\source\dimensions.xlsx')#图表
workbookDraw = openpyxl.Workbook()
sheetDraw = workbookDraw.active
for i in range(1, 11):sheetDraw['A' + str(i)] = i
refObj = openpyxl.chart.Reference(sheet, min_col=1, min_row=1,max_col=1, max_row=10)
seriesObj = openpyxl.chart.Series(refObj, title='First series')
chartObj = openpyxl.chart.BarChart()
chartObj.title = 'My Chart'
chartObj.append(seriesObj)
sheetDraw.add_chart(chartObj, 'C5')
workbookDraw.save(‘.\source\sampleChart.xlsx’)
五、综合实践
根据如下表结构统计各县人口总数以及普查区数,并输出为Json文件。
CensusTract State County POP
… … … …
其中:
- CensusTract表示普查区编号
- State表示州简称
- County表示县名称
- POP表示普查区人口数
实现代码如下:
import openpyxl, pprintprint('Opening workbook...')
workbook = openpyxl.load_workbook('.\source\censuspopdata.xlsx')
sheet = workbook['Population by Census Tract']
countyData = {}
print('Reading rows...')
for row in range(2, sheet.max_row + 1):# Each row in the spreadsheet has data for one census tract.state = sheet['B' + str(row)].valuecounty = sheet['C' + str(row)].valuepop = sheet['D' + str(row)].value# Make sure the key for this state exists.if already exist, execute nothing.countyData.setdefault(state, {})# Make sure the key for this county in this state exists.if already exist, execute nothing.countyData[state].setdefault(county, {'tracts': 0, 'pop': 0})# Each row represents one census tract, so increment by one.countyData[state][county]['tracts'] += 1# Increase the county pop by the pop in this census tract.countyData[state][county]['pop'] += int(pop)
# Open a new text file and write the contents of countyData to it.
print('Writing results...')
resultFile = open('.\source\census.json', 'w')
resultFile.write('allData = ' + pprint.pformat(countyData))
resultFile.close()
print(pprint.pformat(countyData))
# print Anchorage population
# print(countyData['AK']['Anchorage']['pop'])
print('Done.')
返回如下:{"AK": {"Aleutians East": {"pop": 3141,"tracts": 1},"Aleutians West": {"pop": 5561,"tracts": 2},"Anchorage": {"pop": 291826,"tracts": 55},"Bethel": {"pop": 17013,"tracts": 3},"Bristol Bay": {"pop": 997,"tracts": 1},"Denali": {"pop": 1826,"tracts": 1},"Dillingham": {"pop": 4847,"tracts": 2},...
六、参考资料
《Python编程快速上手 让繁琐工作自动化 第2版》
python脚本——Excel处理相关推荐
- 微软考虑将 Python 作为 Excel 官方脚本语言
微软正考虑将 Python 作为 Excel 官方脚本语言之一,在 Excel 用户反馈平台中,「Python 作为 Excel 的脚本语言」成为了最热议的话题,是排名第二的提议的两倍多 目前为止,超 ...
- gis属性表怎么导成excel_使用Python脚本将Excel表批量赋值到ArcGIS属性表
现需要将Excel表信息批量赋值(不是挂接)到Shp文件的属性表,两张表的字段.记录数一模一样,至于为什么会出现这样的问题,咱也不敢问,只有想个法子把它搞定! 原始的Excel信息表共57列,总共3万 ...
- python能在excel运行吗-使用PyXLL在Excel中执行Python脚本
PyXLL是一款能够使得在Excel中能够执行Python脚本的插件,不过它是使用Excel扩展库(XLL)的方式,这跟平常加载一些常用的宏方式是一样的. 使用pyXLL,首先你必须安装Python, ...
- excel调用python编程-如何在excel中调用python脚本
如何在excel中调用python脚本 发布时间:2020-07-03 14:15:28 来源:亿速云 阅读:155 如何在excel中调用python脚本?针对这个问题,这篇文章详细介绍了相对应的分 ...
- python读取excel指定列-Python读取excel指定列生成指定sql脚本的方法
需求 最近公司干活,收到一个需求,说是让手动将数据库查出来的信息复制粘贴到excel中,在用excel中写好的公式将指定的两列数据用update这样的语句替换掉. 例如: 有个A库,其中有两个A.01 ...
- 【Python】如何在Excel中调用Python脚本,实现数据自动化处理
这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作. 说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球仍有7.5 ...
- python csv转excel_将Excel文件转为csv文件的python脚本
将Excel文件转为csv文件的python脚本 #!/usr/bin/env python __author__ = "lrtao2010" ''' Excel文件转csv文件脚 ...
- excel运行python_使用PyXLL在Excel中执行Python脚本
PyXLL是一款能够使得在Excel中能够执行Python脚本的插件,不过它是使用Excel扩展库(XLL)的方式,这跟平常加载一些常用的宏方式是一样的. 使用pyXLL,首先你必须安装Python, ...
- Python脚本可在Microsoft Excel中格式化数据
In this article, we will use Python scripts for data formatting in Microsoft Excel sheet with variou ...
- 利用Python脚本来使用Google自动翻译Excel表格文件
使用谷歌翻译Excel表格的Python自动脚本 最近闲来无事写了份保姆级别的翻译Excel文件的python脚本. 最后在参考各位大佬的教程后写出的脚本,需要的可以自取. github源码 食用方法 ...
最新文章
- Vivado IP核的综合模式:Global以及Out of context的区别理解
- 记录一下HALCON调用相机自带驱动加速采集速率
- canvas 中的元素拖拽
- 零售商的“基因改造”浪潮
- 【✅windows奇怪的知识增加了✅】windows系统下快速删除海量小文件方法
- (推荐)为什么要走嵌入式?
- python导入包相当于什么_Python中使用语句导入模块或包的机制研究
- PostreSQL崩溃试验全记录
- 从还珠格格到街头霸王!80后的怀旧神器 三星GalaxyFold另类体验
- rest get map参数_Spring 5.2.2 集成技术—REST
- Amlogic_t962x_android7.1红外遥控驱动浅析
- shell基础之for循环语句
- android学习资料免费下载
- 虚拟税务ukey托管服务器,税务Ukey托管来啦,给它一个家!企业开票更方便
- 修改Postman安装路径
- 用AI打电话骗走22万,Python编写的软件,克隆你的语音只需5秒!
- 计算机cpu执行时间 指令条数的单位,计算机原理2015年10月真题(02384)
- ectouch手机版去除微信登录
- 关于 SwiperJS 的初次使用
- 电脑“应用程序无法启动,因为应用程序的并行配置不正确......“问题的解决方法