Python玩转Excel的读写改实例
作者:lk7688535 发布时间:2022-01-27 19:59:47
标签:python,读取,写入,修改,excel
摘要:
利用xlrd读取excel
利用xlwt写excel
利用xlutils修改excel
利用xlrd读取excel
先需要在命令行中pip install xlrd;读取xls文件的流程为:
加载文件->选中第几个表格->按先行后列的顺序读
通用demo
import xlrd
filename = "test.xls" #文件路径
wb = xlrd.open_workbook(filename) #加载这个xls文件
sh = wb.sheet_by_index(0) #选中第1个表格
rows = sh.nrows #rows为该表格的行数
for i in range(1,rows): #从第二行开始按行读取
title = sh.cell(i,0).value #取第i+1行,第1列的数据
diy功能
根据列名获取内容的函数
def get_col_index(name,workbook,sheet):
for i in range(sheet.ncols):
name2 = sheet.cell(0,i).value
print(name2)
if name2 == name:
return i
return -1
sheet.cell(1,get_col_index("创建时间")).value
再拓展一点:
sh = wb.sheet_by_name(sheetname) #通过表格名称选中表格
print(wb.sheet_names()) #打印该xls文件的所有表格名称
sh.row(i) #获得第i+1行的所有数据组成的list
ncols = sh.ncols #获得该表格的所有列数
sh.row_values(rowx, start_colx=0, end_colx=None) #获取第rowx+1行的某几列的数据并组成的list
sh.col(colx, start_rowx=0, end_rowx=None) #获取第colx+1列的某几行的数据并组成的list
sh.cell(i,j).value #获取第i+1行第j+1列的数据
sh.cell(i,j).ctype #获取第i+1行第j+1列的数据类型
注意date类型
说起数据类型,补充一点,xlrd读取xls文件单元格的数据类型有五种,数字与类型的对应关系为:
ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
当单元格某个值为date类型时,不加处理输出的是一个浮点数,此时需要判断ctype并进行一次转换:
from xlrd import xldate_as_tuple
cell = sh.cell(i,10).ctype
if cell.ctype == 3:
date = datetime(*xldate_as_tuple(cell.value, 0))
利用xlwt写exce
先需要在命令行中pip install xlwt;写xls文件的流程为:
加载文件->选中第几个表格->按先行后列的顺序读
通用demo
import xlwt
file = xlwt.Workbook() #新建个文件
sheet = file.add_sheet('test_sheet0',cell_overwrite_ok=True) #新建个表格,指定表名以及是否可覆盖写
sheet.write(i,j,value) #在第i+1行和第j+1列写value(i、j从0开始)
file.save("test_xls.xls") #保存成xls文件并指定文件名
更多功能
#设置某列的宽度
sheet.col(0).width = 200
#写日期
style = xlwt.XFStyle()
style.num_format_str = 'D-MMM-YY'
worksheet.write(0, 0, datetime.datetime.now(), style)
#写公式
sheet.write(1, 1, xlwt.Formula('SUM(A1,B1)'))
#合并单元格的写
sheet.write_merge(0, 0, 0, 3, 'First Merge')
#ps:
#write_merge(x, x + h, y, w + y, value, sytle) x和y表示当前行列,h和w为要合并的行数和列数
更炫酷一点
既然是写,何不来点style:
style = xlwt.XFStyle()
#修改字体:
font = xlwt.Font() #为样式创建字体
font.name = 'Times New Roman' #字体名称
font.bold = True #黑体
font.colour_index = 2 #修改字的颜色
font.underline = True #下划线
style.font = font #使用到样式中
sheet.write(0,1,"编号",style)
#修改单元格背景色
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 5 #色号,可以在源代码中看到色号和颜色的对应关系
style = xlwt.XFStyle()
style.pattern = pattern
sheet.write(0,2,"编号",style)
利用xlutils修改excel
修改excel文件的流程为:
将xlrd加载的xls文件(xlrd对象)复制为xlwt对象,然后用xlwt对象操作excel
demo
import xlrd
import pymysql
from xlrd import open_workbook
from xlutils.copy import copy
import xlwt
file_name = "test_update.xls"
workbook = xlrd.open_workbook(file_name)
sheet = wb.sheet_by_index(0)
workbook_update = copy(workbook)
sheet_update = workbook_update.get_sheet(0)
sheet_update.write(i,j,value)
workbook_update.save(file_name)
来源:https://blog.csdn.net/lk7688535/article/details/80986890


猜你喜欢
- 说明:复制表(只复制结构,源表名:a 新表名:b) select * into b from a where 1<>1说明:拷贝
- 大家好,我是只谈技术不剪发的 Tony 老师。这次我们来介绍一个 MySQL 8.0 增加的新功能:检查约束(CHECK )。SQL 中的检
- 如下所示:# -*- coding: utf-8 -*-# @Time : 2018/1/17 16:37# @Author :
- loss函数如何接受输入值keras封装的比较厉害,官网给的例子写的云里雾里,在stackoverflow找到了答案You can wrap
- 开门见山,直接使用 skimage 库为图像添加高斯噪声是很简单的:import skimageorigin = skimage.io.im
- js function定义函数的4种方法1.最基本的作为一个本本分分的函数声明使用。 复制代码代码如下: function func(){}
- 申明:资料来源于网络及书本,通过理解、实践、整理成学习笔记。Pythion的Selenium自动化测试之获取哔哩哔哩主播的头像以昵称命名保存
- 目录MySQL 主备的基本原理binlog 的三种格式对比为什么会有 mixed 格式的 binlog?循环复制问题总结:抛出问题:大家知道
- 二级域名的解析指向ASP源代码,懂程序的人一看就明白怎么实现了。呵呵!真简单<%@ LANGUAGE =&nb
- 前面说到最近在写python的一些东西,然后和另外一位小伙伴定义了协议,然后昨天我有一部分东西没理解对,昨天上午我自己重写了一遍接收和发送的
- 项目需要在electron的项目中新打开一个窗口,利用webpack作为静态资源打包器,发现在webpack中可以设置多页面的入口,今天来讲
- 回想自己从事Web方面的开发已经有6-7年,对于各种Web技术都已经非常熟悉.可是,身为程序员的我对于制作Web表单界面的事着实心痛。心痛1
- 阅读上一篇:W3C优质网页小贴士(二) 注意字体大小网页设计者中有这么一种倾向:他们认为小字体能让网页看起来更漂亮,并能提供更多空间给每个网
- 在这里给出是的WindowsXP操作系统下的安装过程一、下载安装文件到MySQL官方网站找到ZIP文件提示:有些是安装文件,安装时会有提示,
- OpenCV简介OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Ma
- 如下所示:#encoding=utf-8import xlrdfrom xlwt import *#------------------读数
- Allure除了具有Pytest基本状态外,其他几乎所有功能也都支持。1、严重性如果你想对测试用例进行严重等级划分,可以使用@allure.
- 一 概念1. 原理2. 好处不同项目可能用到的环境不同,运用虚拟环境能将不同环境分隔开二 virtualenvvirtual 虚拟的1. 安
- 在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。我们最常
- 用v-model绑定单选框能带来很多便捷的开发体验。基础用法<template> <div id="app&qu