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…

人工智能第一次作业

1、 你认为什么是人工智能? 人工智能(Artificial Intelligence)简称AI,主要研究如何用人工的方法和技术,使用各种自动化机器或智能机器(主要指计算机)模仿、延伸和扩展人的智能,实…

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…

[转]html超链接打开的窗口大小

<a href"#" onclick"javascript:window.open(http://www.baidu.com,,height20,width20,top0,left0,toolbarno,menubarno,scrollbarsno, resizableno,locationno, statusno)">aaaaaaaaaaaaaaa</a> 各项参数 其中yes/no也可使用1/0&#xff1b;p…

读写Excel 用 xlsxwriter,openpyxl 更灵活

一、xlsxwriter的使用&#xff1a; # 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)# 以上代码运行会报错&#xff0c;因为xlwt不支持超过256列的表格im…

LeetCode 2293. 极大极小游戏

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

devexpress gridcontrol 内置导航栏,双击后才修改数据

4、 使用Grid内置导航栏 gridControl1.UseEmbeddedNativgatorTrue 设定内置导航栏按钮其他属性 gridControl1.EmbeddedNavigator 5、 GridView内置方式编辑数据 禁止编辑数据 gridView1.OptionsBehavior.Editable False&#xff0c;默认是True 可编辑。 Gridview内置数据编辑器…

Python自动发送微信消息

一、用Python自动发送微信消息 import itchat# enableCmdQRTrue&#xff0c;允许在cmd命令行显示二维码 # hotReloadTrue&#xff0c;允许短期内可以不需要重复登陆 itchat.auto_login(enableCmdQRTrue,hotReloadTrue)# to_name itchat.search_friends(name"微信好友备注…

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

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

工作中用到的安卓日志相关命令(logcat)

1. 打印安卓日志&#xff0c;在cmd中使用adb shell logcat&#xff1b;在adb shell下直接打logcat2. 如果不想打印占用终端&#xff0c;则加个&号&#xff0c;即logcat &3. 如果想把前面的打印清掉&#xff0c;开始现在的打印&#xff0c;则用logcat -c;logcat4. 如果想…

三、scrapy爬虫框架——scrapy模拟登陆

scrapy模拟登陆 学习目标&#xff1a; 应用 请求对象cookies参数的使用了解 start_requests函数的作用应用 构造并发送post请求 1. 回顾之前的模拟登陆的方法 1.1 requests模块是如何实现模拟登陆的&#xff1f; 直接携带cookies请求页面找url地址&#xff0c;发送post请求…

LeetCode 2295. 替换数组中的元素

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

ssh对等性配置

目的: 让通过ssh在目标机器上执行命令和scp, 不必每次输入密码. 做法: 假设有机器A, 机器B 在A上执行, ssh-keygen, 一路使用默认值, 成功生成: 私钥id_rsa, 公钥id_rsa.pub 把A上生成的公钥id_rsa.pub的内容, 写入机器B的.ssh/authorized_keys文件中, 文件不存在则创建. cat i…

四、scrapy爬虫框架——scrapy管道的使用

scrapy管道的使用 学习目标&#xff1a; 掌握 scrapy管道(pipelines.py)的使用 之前我们在scrapy入门使用一节中学习了管道的基本使用&#xff0c;接下来我们深入的学习scrapy管道的使用 1. pipeline中常用的方法&#xff1a; process_item(self,item,spider): 管道类中必须…

SPOJ COT Count on a tree 主席树

题意&#xff1a; 给\(n(1 \leq n \leq 10^5)\)一棵树&#xff0c;每个点有个权值。 还有\(m(1 \leq m \leq 10^5)\)个询问&#xff1a;\(u \, v \, k\)&#xff0c;查询路径\(u \to v\)上权值第\(k\)小的权值。 分析&#xff1a; 和普通的区间一样&#xff0c;对于树维护到根节…

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

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

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

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