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处理相关推荐

  1. 微软考虑将 Python 作为 Excel 官方脚本语言

    微软正考虑将 Python 作为 Excel 官方脚本语言之一,在 Excel 用户反馈平台中,「Python 作为 Excel 的脚本语言」成为了最热议的话题,是排名第二的提议的两倍多 目前为止,超 ...

  2. gis属性表怎么导成excel_使用Python脚本将Excel表批量赋值到ArcGIS属性表

    现需要将Excel表信息批量赋值(不是挂接)到Shp文件的属性表,两张表的字段.记录数一模一样,至于为什么会出现这样的问题,咱也不敢问,只有想个法子把它搞定! 原始的Excel信息表共57列,总共3万 ...

  3. python能在excel运行吗-使用PyXLL在Excel中执行Python脚本

    PyXLL是一款能够使得在Excel中能够执行Python脚本的插件,不过它是使用Excel扩展库(XLL)的方式,这跟平常加载一些常用的宏方式是一样的. 使用pyXLL,首先你必须安装Python, ...

  4. excel调用python编程-如何在excel中调用python脚本

    如何在excel中调用python脚本 发布时间:2020-07-03 14:15:28 来源:亿速云 阅读:155 如何在excel中调用python脚本?针对这个问题,这篇文章详细介绍了相对应的分 ...

  5. python读取excel指定列-Python读取excel指定列生成指定sql脚本的方法

    需求 最近公司干活,收到一个需求,说是让手动将数据库查出来的信息复制粘贴到excel中,在用excel中写好的公式将指定的两列数据用update这样的语句替换掉. 例如: 有个A库,其中有两个A.01 ...

  6. 【Python】如何在Excel中调用Python脚本,实现数据自动化处理

    这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作. 说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球仍有7.5 ...

  7. python csv转excel_将Excel文件转为csv文件的python脚本

    将Excel文件转为csv文件的python脚本 #!/usr/bin/env python __author__ = "lrtao2010" ''' Excel文件转csv文件脚 ...

  8. excel运行python_使用PyXLL在Excel中执行Python脚本

    PyXLL是一款能够使得在Excel中能够执行Python脚本的插件,不过它是使用Excel扩展库(XLL)的方式,这跟平常加载一些常用的宏方式是一样的. 使用pyXLL,首先你必须安装Python, ...

  9. Python脚本可在Microsoft Excel中格式化数据

    In this article, we will use Python scripts for data formatting in Microsoft Excel sheet with variou ...

  10. 利用Python脚本来使用Google自动翻译Excel表格文件

    使用谷歌翻译Excel表格的Python自动脚本 最近闲来无事写了份保姆级别的翻译Excel文件的python脚本. 最后在参考各位大佬的教程后写出的脚本,需要的可以自取. github源码 食用方法 ...

最新文章

  1. Vivado IP核的综合模式:Global以及Out of context的区别理解
  2. 记录一下HALCON调用相机自带驱动加速采集速率
  3. canvas 中的元素拖拽
  4. 零售商的“基因改造”浪潮
  5. 【✅windows奇怪的知识增加了✅】windows系统下快速删除海量小文件方法
  6. (推荐)为什么要走嵌入式?
  7. python导入包相当于什么_Python中使用语句导入模块或包的机制研究
  8. PostreSQL崩溃试验全记录
  9. 从还珠格格到街头霸王!80后的怀旧神器 三星GalaxyFold另类体验
  10. rest get map参数_Spring 5.2.2 集成技术—REST
  11. Amlogic_t962x_android7.1红外遥控驱动浅析
  12. shell基础之for循环语句
  13. android学习资料免费下载
  14. 虚拟税务ukey托管服务器,税务Ukey托管来啦,给它一个家!企业开票更方便
  15. 修改Postman安装路径
  16. 用AI打电话骗走22万,Python编写的软件,克隆你的语音只需5秒!
  17. 计算机cpu执行时间 指令条数的单位,计算机原理2015年10月真题(02384)
  18. ectouch手机版去除微信登录
  19. 关于 SwiperJS 的初次使用
  20. 电脑“应用程序无法启动,因为应用程序的并行配置不正确......“问题的解决方法

热门文章

  1. 八十九、Java内置函数(常用函数)
  2. java quartz配置
  3. Android机顶盒烧录方法
  4. 零基础考公务员,备考多长时间最合适?
  5. html视频播放器兼容处理
  6. GNS3使用Docker
  7. LinkedIn应用开发系列(三) --认证Request token
  8. 2021创新创业基础(李家华)100分期末考试答案
  9. 大学生职业发展与就业指导 中国大学mooc 福州大学 测验题目和答案
  10. c语言素数环实验报告,c语言素数环问题实例讲解