本篇内容来自原创小册子《python高阶教程》,点击查看目录。

背景

在处理一些作业时,经常会碰到统计未交人数、分数等需求,虽然我们在数据库中有了对应的数据,

但是数据库只是面向开发者的,仍然需要将其转换为专业的可阅读格式-excel表格。

目前常用的操作xlsx表格的是openpyxl, 官网地址

编程模型

读取from openpyxl import Workbook

from openpyxl.utils import get_column_letter

# 在内存中创建一个workbook对象,而且会至少创建一个 worksheet

wb = Workbook()

#获取当前活跃的worksheet,默认就是第一个worksheet

ws = wb.active

#设置单元格的值,A1等于6(测试可知openpyxl的行和列编号从1开始计算),B1等于7

ws.cell(row=1, column=1).value = 6

ws.cell("B1").value = 7

#从第2行开始,写入9行10列数据,值为对应的列序号A、B、C、D...

for row in range(2,11):

for col in range (1,11):

ws.cell(row=row, column=col).value = get_column_letter(col)

#可以使用append插入一行数据

ws.append(["我","你","她"])

#保存

wb.save(filename="/Users/budong/Desktop/a.xlsx")

写入from openpyxl import load_workbook

#打开一个workbook

wb = load_workbook(filename="/Users/budong/Desktop/a.xlsx")

#获取当前活跃的worksheet,默认就是第一个worksheet

#ws = wb.active

#当然也可以使用下面的方法

#获取所有表格(worksheet)的名字

sheets = wb.get_sheet_names()

#第一个表格的名称

sheet_first = sheets[0]

#获取特定的worksheet

ws = wb.get_sheet_by_name(sheet_first)

#获取表格所有行和列,两者都是可迭代的

rows = ws.rows

columns = ws.columns

#迭代所有的行

for row in rows:

line = [col.value for col in row]

print(line)

#通过坐标读取值

print(ws.cell('A1').value) # A表示列,1表示行

print(ws.cell(row=1, column=1).value)

处理包含学生学号和学生姓名的表格

在该例子中,xlsx表格中只有两列,第一列是学生学号,第二列是学生姓名,

使用get_stu可以获取xlsx文件中的学号与姓名供使用,使用write_xlsx

可以向xlsx文件中写入数据,其中data为二维列表。from openpyxl import Workbook, load_workbook

src_name = 'students.xlsx'

def get_stu(file_name, type='code'):

wb = load_workbook(file_name)

ws = wb.active

stu_code = []

rows = ws.rows

for row in rows:

if type=='code':

# stu code

col = row[1]

elif type=='name':

col = row[2]

else:

col = row[1]

stu_code.append(str(col.value))

return stu_code

def write_xlsx(file_name, data):

wb = Workbook()

ws = wb.active

for row in range(1,len(data) + 1):

for column in range(1, len(data[row-1]) + 1):

ws.cell(row=row, column=column).value = data[row-1][column-1]

wb.save(filename=file_name)

参考:

python openpyxl读写xlsx_python高阶教程-python操作xlsx文件(openpyxl)相关推荐

  1. python的openpyxl模块下载_python解析.xls/.xlsx文件–openpyxl模块(第三方)

    围观人数: 7 标签:book   set   tle   命令行   文件中   不能   charm   读取   pen 第一part:Excel文件的介绍 Microsoft Excel是Mi ...

  2. python函数式编程、高阶函数

    1.map() python内置的高阶函数,接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并返回. def f(x):return x * xprin ...

  3. Python中常用的高阶函数

    Python 中常用的高阶函数 ① filter(function,iterable)filter(function, iterable)filter(function,iterable)   过滤器 ...

  4. Python学习日志10 - 高阶函数和高级应用

    Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 前言 进入正题 Python学习日志10课 - 高阶函数 ...

  5. python学习——函数式编程——高阶函数

    python学习--函数式编程--高阶函数 函数式编程(高阶函数):1:map && reduce; 2 : filter; 3: sorted; ------------------ ...

  6. keil obj 文件 结构_【Python】数据分析前的入门教程 Python For Everybody P2:数据结构...

    这是密歇根大学课程Python For Everybody总结的P2部分.课程总结P1部分的地址如下: P1: 零基础程序设计(Python 入门) carolinezhq:[Python]数据分析前 ...

  7. hexo高阶教程:想让你的博客被更多的人在搜索引擎中搜到吗?

    本文首发在我的个人博客:http://cherryblog.site/,欢迎大家前去参观,顺便求fork,么么哒~ 上一次在掘金上发表的hexo高阶教程:hexo高阶教程next主题优化之加入网易云音 ...

  8. functools 可调用对象上的高阶函数和操作

    functools-可调用对象上的高阶函数和操作 functools 该模块用于高阶函数:作用于或返回其他函数的函数.通常,就此模块而言,任何可调用对象都可以视为函数. 该模块定义了以下功能:func ...

  9. python装饰器带参数函数二阶导数公式_SICP Python 描述 1.6 高阶函数

    1.6 高阶函数 我们已经看到,函数实际上是描述复合操作的抽象,这些操作不依赖于它们的参数值.在square中, >>> def square(x): return x * x 我们 ...

最新文章

  1. Android之打造属于自己的侧边栏(SlidingMenu)
  2. Java数据结构与算法——插入排序
  3. 1.11 超过人的表现-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  4. 读书印记 - 《技术元素》
  5. bzoj 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐(暴力DFS)
  6. NSString的retainCount
  7. GPS模块坐标偏差很大?
  8. Android自定义View【实战教程】1⃣️----attrs.xml详解
  9. 转iOS深拷贝与浅拷贝 附NSSet讲解
  10. Activiti工作流Day18-Crystalball流程仿真
  11. idea全局搜索快捷键总结
  12. 关于28379D的X-BAR
  13. 译: 进化的系统需要进化的系统工程
  14. 编译安装nginx实现反向代理、负载均衡、缓存功能
  15. Java面经:小米暑期实习+秋招真题分享
  16. 《国富论》笔记——货币
  17. 登录微信支付商户平台-产品中心,开通企业付款的方法
  18. unity2022打开项目时报Fatal error显示无权访问d3dcompiler_47.dll, 解决方法很简单-还有ucrtbase.dll问题
  19. Word 2016 撰写论文(4): 批量修改MathType公式字体大小
  20. 解决vim E492 Not an editor command M

热门文章

  1. Android之BroadcastReceiver的使用
  2. Opengl_20 _复习变换矩阵+复习光源+两个模型使用不同的shader
  3. cocoapod卡在了analyzing dependencies
  4. WannaCry勒索比特币蠕虫病毒解决方案
  5. node.js介绍及Win7环境安装测试(转)
  6. 学习总结初篇:发现问题
  7. recovery v1跟recovery v2的区别
  8. 一只快乐的野指针_野酸枣
  9. python版本升级和系统更新下载安装_Python环境安装与升级
  10. 拆分文件_领导让把工作表拆分每个文件,我花半个小时,同事1分钟搞定了