Python自动化办公——xlrd、xlwt读写Excel

一、xlrd、xlwt读写Excel

1、读操作

import xlrd# 1、打开工作本workbook
xlsx = xlrd.open_workbook(r'.\7月下旬入库表.xlsx')# 2、打开需要操作的表sheet
table = xlsx.sheet_by_index(0)
# table = xlsx.sheet_by_name('7月下旬入库表')# 3、读取指定单元格的数据
print(table.cell_value(1,1))
print(table.cell(1,1).value)
print(table.row(1)[1].value)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、写操作

import xlwt# 1、新建一个工作本
new_workbook = xlwt.Workbook()# 2、为这个工作本中添加一个工作表
worksheet = new_workbook.add_sheet('new_test')# 3、向指定单元格写入内容
worksheet.write(0,0,'test')# 4、保存
new_workbook.save('./test.xls')

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、带文字格式的写入操作

from xlutils.copy import copy
import xlrd
import xlwt# 1、打开需要进行操作的工作本,并将其进行复制操作
# 注意:使用读取xls文件的时候都是使用的xlrd库,但是这个库只能操作 .xls格式,对于后来的 .xlsx的版本支持不算太好
# formatting_info 该参数默认为False,这可以节省内存;当取值为True时,会读取各种格式的信息
tem_excel = xlrd.open_workbook(r'.\日统计.xls',formatting_info=True)# 2、选择需要操作的工作表
tem_sheet = tem_excel.sheet_by_index(0)# 3、新建一个工作本,通过复制模板工作本的方式
new_excel = copy(tem_excel)# 4、选择新的工作本中需要操作的工作表
new_sheet = new_excel.get_sheet(0)# 初始化样式
style = xlwt.XFStyle()# 初始化字体
font = xlwt.Font()
font.name = '微软雅黑'
font.bold = True
font.height = 18 * 20
style.font = font# 初始化边框,细边框
borders = xlwt.Borders()
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
style.borders = borders# 初始化对齐方式
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER
alignment.vert = xlwt.Alignment.VERT_CENTER
style.alignment = alignment# 5、向已选择的工作表中写入数据
new_sheet.write(2,1,12,style)
new_sheet.write(3,1,18,style)
new_sheet.write(4,1,19,style)
new_sheet.write(5,1,15,style)# 6、保存文件
new_excel.save('./填写.xls')

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4、综合案例:

import xlrd
import xlwt
from xlutils.copy import copyxlsx = xlrd.open_workbook(r'.\7月下旬入库表.xlsx')
table = xlsx.sheet_by_index(0)all_data = []# 循环读取每一行的中的数据
for n in range(1,table.nrows):company = table.cell(n,1).value # 销售商price = table.cell(n,3).value # 单价weight = table.cell(n,4).value # 入库量data = {'company':company,'weight':weight,'price':price}all_data.append(data)# 以下内容可以用pandas的groupby轻易实现,这里用了一个笨方法
a_weight = []
a_total_price = []b_weight = []
b_total_price = []c_weight = []
c_total_price = []d_weight = []
d_total_price = []# 计算每个销售商的总入库量 和 总价
for i in all_data:if i['company'] == '张三粮配':a_weight.append(i['weight'])a_total_price.append(i['weight'] * i['price'])if i['company'] == '李四粮食':b_weight.append(i['weight'])b_total_price.append(i['weight'] * i['price'])if i['company'] == '王五小麦':c_weight.append(i['weight'])c_total_price.append(i['weight'] * i['price'])if i['company'] == '赵六麦子专营':d_weight.append(i['weight'])d_total_price.append(i['weight'] * i['price'])tem_excel = xlrd.open_workbook(r'.\7月下旬统计表.xls',formatting_info=True)
tem_sheet = tem_excel.sheet_by_index(0)new_excel = copy(tem_excel)
new_sheet = new_excel.get_sheet(0)style = xlwt.XFStyle()# 初始化字体
font = xlwt.Font()
font.name = '微软雅黑'
font.bold = True
font.height = 18 * 20
style.font = font# 初始化边框,细边框
borders = xlwt.Borders()
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
style.borders = borders# 初始化对齐方式
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER
alignment.vert = xlwt.Alignment.VERT_CENTER
style.alignment = alignmentnew_sheet.write(2,1,len(a_weight),style)
new_sheet.write(2,2,round(sum(a_weight)),style)
new_sheet.write(2,3,round(sum(a_total_price),2),style)new_sheet.write(3,1,len(b_weight),style)
new_sheet.write(3,2,round(sum(b_weight)),style)
new_sheet.write(3,3,round(sum(b_total_price),2),style)new_sheet.write(4,1,len(c_weight),style)
new_sheet.write(4,2,round(sum(c_weight)),style)
new_sheet.write(4,3,round(sum(c_total_price),2),style)new_sheet.write(5,1,len(d_weight),style)
new_sheet.write(5,2,round(sum(d_weight)),style)
new_sheet.write(5,3,round(sum(d_total_price),2),style)new_excel.save('./7月下旬统计表.xls')

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 2288. 价格减免

文章目录1. 题目2. 解题1. 题目 句子 是由若干个单词组成的字符串,单词之间用单个空格分隔,其中每个单词可以包含数字、小写字母、和美元符号 $ 。 如果单词的形式为美元符号后跟着一个非负实数,那么这个单词就表示一个价格。 例如 "$…

UWP滑动后退

经过近些年智能手机App的不断发展,用户已经不仅仅满足于功能上的需求。UI、设计等非功能点逐渐在App体验中占了大多数的分数。不知从何时起,滑动手势就成为了App的一个标配。他不仅仅是一个功能,更是一个UI设计。其有以下几个优点&#xff1a…

PyQt5 高级界面控制(表格、树、tab、dock、scrollbar、多文档界面)

文章目录1. 表格与树1.1 QTableView1.2 QListView1.3 QListWidget1.4 QTableWidget表根据界面宽度自动伸缩禁止编辑单击某单元,使之默认选中整行设置宽高度与内容相匹配是否显示表头单元格中放置控件输入行号,快速定位行设置颜色加粗字体排序文本对齐合并…

使用pymysql进行数据库的增删改查

使用pymysql进行数据库的增删改查: import pymysqldatabase pymysql.connect(127.0.0.1,root,root,jxgl,charsetutf8)# 初始化指针 cursor database.cursor()# 增 # sql "insert into students(s_no,s_name,sex,birthday,D_NO,address,phone) VALUES (1230…

PyQt5 高级界面控制(多线程、网页交互、调用JavaScript)

文章目录1. 多线程1.1 QTimer1.2 QThread界面卡住例子分离UI和工作线程1.3 事件处理2. 网页交互显示本地 html显示 html 代码调用 JavaScriptJavaScript 调用 PyQt代码learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcom…

读写Excel 用 xlsxwriter,openpyxl 更灵活

一、xlsxwriter的使用: # import xlwt # # workbook xlwt.Workbook() # sheet0 workbook.add_sheet(sheet0) # for i in range(0,300): # sheet0.write(0,i,i) # workbook.save(number.xls)# 以上代码运行会报错,因为xlwt不支持超过256列的表格im…

LeetCode 2293. 极大极小游戏

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。 对 nums 执行下述算法: 设 n 等于 nums 的长度,如果 n 1 ,终止 算法过程。否则,创建 一个新的整数数组 newNums &#x…

LeetCode 2294. 划分数组使最大差为 K

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums 和一个整数 k 。你可以将 nums 划分成一个或多个 子序列 ,使 nums 中的每个元素都 恰好 出现在一个子序列中。 在满足每个子序列中最大值和最小值之间的差值最多为 k 的前提下,返回需要划分的 最…

LeetCode 2295. 替换数组中的元素

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的数组 nums ,它包含 n 个 互不相同 的正整数。请你对这个数组执行 m 个操作,在第 i 个操作中,你需要将数字 operations[i][0] 替换成 operations[i][1] 。 题目保证在第 i 个操作中&a…

LeetCode 2296. 设计一个文本编辑器(双栈)

文章目录1. 题目2. 解题1. 题目 请你设计一个带光标的文本编辑器,它可以实现以下功能: 添加:在光标所在处添加文本。删除:在光标所在处删除文本(模拟键盘的删除键)。移动:将光标往左或者往右移…

五、scrapy爬虫框架——logging 模块的使用

logging 模块的使用 1、scrapy settings中设置LOG_LEVEL“WARNING”settings中设置LOG_FILE"./a.log"#设置日志保存的位置,设置会后终端不会显示日志内容import logging,实例化logger的方式在任何文件中使用logger输出内容 2、普通项目中 import logg…

PyQt5 布局管理(水平、垂直、网格、表单、嵌套、QSplitter)

文章目录1. 布局管理2. 使用绝对位置布局3. QBoxLayoutaddStretch() 添加可伸缩控件4. QGridLayout5. QFormLayout6. 嵌套布局7. QSplitter 布局learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcomputing.com/static/Doc…

一、Java 面向对象高级——Object类、常用API

day01【Object类、常用API】 主要内容 Object类Date类DateFormat类Calendar类System类StringBuilder类包装类 教学目标 -[ ] 能够说出Object类的特点 -[ ] 能够重写Object类的toString方法 -[ ] 能够重写Object类的equals方法 -[ ] 能够使用日期类输出当前日期 -[ ] 能够使…

FineUI(专业版)v3.0.0 发布,手机、平板和桌面全支持!

FineUI(专业版)v3.0.0 已经正式发布,全面支持手机、平板和桌面!自 2008 年 4 月发布第一个版本,我们持续更新了 126 个版本,拥有 16000 多位注册用户,1300 多位捐赠会员,200 多位网友…

二、Java 面向对象高级——Collection、泛型

day02【Collection、泛型】 主要内容 Collection集合迭代器增强for泛型 教学目标 能够说出集合与数组的区别 说出Collection集合的常用功能 能够使用迭代器对集合进行取元素 能够说出集合的使用细节 能够使用集合存储自定义类型 能够使用foreach循环遍历集合 能够使用泛型定…

LeetCode 2299. 强密码检验器 II

文章目录1. 题目2. 解题1. 题目 如果一个密码满足以下所有条件,我们称它是一个 强 密码: 它有至少 8 个字符。至少包含 一个小写英文 字母。至少包含 一个大写英文 字母。至少包含 一个数字 。至少包含 一个特殊字符 。特殊字符为:"!#…

LeetCode 2300. 咒语和药水的成功对数(二分查找)

文章目录1. 题目2. 解题1. 题目 给你两个正整数数组 spells 和 potions ,长度分别为 n 和 m ,其中 spells[i] 表示第 i 个咒语的能量强度,potions[j] 表示第 j 瓶药水的能量强度。 同时给你一个整数 success 。一个咒语和药水的能量强度 相…

三、Java 面向对象高级——数据结构、List、Set、Collection

day03 【List、Set、数据结构、Collections】 主要内容 数据结构List集合Set集合Collections 教学目标 能够说出List集合特点 能够说出常见的数据结构 能够说出数组结构特点 能够说出栈结构特点 能够说出队列结构特点 能够说出单向链表结构特点 能够说出Set集合的特点 能够说…

Centos Cacti 0.8.8g

Centos Cacti 0.8.8g 一、Cacti简介1. cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此snmp和rrdtool是cacti的关键。Snmp关系着…

LeetCode 2301. 替换字符后匹配(字典)

文章目录1. 题目2. 解题1. 题目 给你两个字符串 s 和 sub 。同时给你一个二维字符数组 mappings ,其中 mappings[i] [oldi, newi] 表示你可以替换 sub 中任意数目的 oldi 字符,替换成 newi 。sub 中每个字符 不能 被替换超过一次。 如果使用 mappings…