python excel 操作

news2024/11/23 20:38:33

excel文件内容如下:

一、xlrd 读Excel 操作

1、打开Excel文件读取数据

file=xlrd.open_workbook(filename)#文件名以及路径,如果路径或者文件名有中文给前面加一个 r

2、常用函数

(1)获取一个sheet工作表

table = file.sheets()[0]             #通过索引顺序获取
table = file.sheet_by_index(sheet_indx)  #通过索引顺序获取
table = file.sheet_by_name(sheet_name)  #通过名称获取
 
# 以上三个函数都会返回一个xlrd.sheet.Sheet()对象
 
names = file.sheet_names()        #返回book中所有工作表的名字
file.sheet_loaded(sheet_name or indx)    # 检查某个sheet是否导入完毕

 (2)行操作函数

nrows = table.nrows   # 获取该sheet中的行数,注,这里table.nrows后面不带().

table.row(rowx)       # 返回由该行中所有的单元格对象组成的列表,这与tabel.raw()方法并没有区别。

table.row_slice(rowx, start_colx=0, end_colx=None)   # 返回由该行中所有的单元格对象组成的列表

table.row_types(rowx, start_colx=0, end_colx=None)  # 返回由该行中所有单元格的数据类型组成的列表;返回值为逻辑值列表,若类型为empy则为0,否则为1

table.row_values(rowx, start_colx=0, end_colx=None)    # 返回由该行中所有单元格的数据组成的列表

table.row_len(rowx)     # 返回该行的有效单元格长度,即这一行有多少个数据

(3)列操作函数

ncols = table.ncols     # 获取列表的有效列数

table.col(colx, start_rowx=0, end_rowx=None)  # 返回由该列中所有的单元格对象组成的列表

table.col_slice(colx, start_rowx=0, end_rowx=None) # 返回由该列中所有的单元格对象组成的列表

table.col_types(colx, start_rowx=0, end_rowx=None)  # 返回由该列中所有单元格的数据类型组成的列表

table.col_values(colx, start_rowx=0, end_rowx=None)  # 返回由该列中所有单元格的数据组成的列表

(4)单元格操作


table.cell(rowx,colx)    # 返回单元格对象

table.cell_type(rowx,colx)   # 返回对应位置单元格中的数据类型

table.cell_value(rowx,colx)    # 返回对应位置单元格中的数据

3、代码演示

(1) 基本函数用法演示

import os
import xlrd

current_path = os.getcwd()
path = os.path.join(current_path, 'test.xlsx')

file = xlrd.open_workbook(path)

# excel中最重要的方法就是book和sheet的操作
'''(1) 获取book(excel文件)中一个工作表 '''
sheet1 = file.sheets()[0]  # 通过索引获取sheet页
sheet1 = file.sheet_by_index(0)  # 通过索引获取sheet页
sheet1 = file.sheet_by_name('Sheet1')  # 通过名称获取sheet页
print(sheet1, sheet1, sheet1)  # 以上三个函数都会返回一个xlrd.sheet.Sheet()对象

names = file.sheet_names()  # #返回文件中所有工作表的名字
print(names)  # ['Sheet1', 'Sheet2']

'''(2)行的操作'''
print('-----------行操作----------------')
nrows = sheet1.nrows  # 获取该sheet中的行数,注,sheet1.nrows后面不带()
print(nrows)  # 3
# 返回由该行中所有的单元格对象组成的列表
print(sheet1.row(2))  # [text:'李四', number:10.0, text:'男', text:'二']
# 返回由该行中切片单元格对象组成的列表(rowx, start_colx=0, end_colx=None)
print(sheet1.row_slice(2, 1, 3))  # [number:10.0, text:'男']
# 返回由该行中所有单元格的数据类型组成的列表,支持开始结束列选择: table.row_types(rowx, start_colx=0, end_colx=None)
print(sheet1.row_types(2))  # array('B', [1, 2, 1, 1])

# 返回由该行中所有单元格的数据组成的列表,支持开始结束列选择  table.row_values(rowx, start_colx=0, end_colx=None)
print(sheet1.row_values(2))  # ['李四', 10.0, '男', '二']

# 返回该行的有效单元格长度,即这一行有多少个数据
print(sheet1.row_len(2))  # 4

'''(3)列操作'''
print('-----------列操作----------------')
ncols = sheet1.ncols  # 获取列表的有效列数
print(ncols)  # 4

print(sheet1.col(0))  # [text:'姓名', text:'张三', text:'李四']
print(sheet1.col_slice(0, 0, 1))  # [text:'姓名']
print(sheet1.col_types(0))  # [1, 1, 1]
print(sheet1.col_values(0))  # ['姓名', '张三', '李四']

'''(4)单元格操作'''
print('-----------单元格操作----------------')
print(sheet1.cell(1, 1))  # number:8.0
print(sheet1.cell_type(1, 1))  # 2
print(sheet1.cell_value(1, 1))  # 8.0

输出内容:

<xlrd.sheet.Sheet object at 0x10b7b77c0> <xlrd.sheet.Sheet object at 0x10b7b77c0> <xlrd.sheet.Sheet object at 0x10b7b77c0>
['Sheet1', 'Sheet2']
-----------行操作----------------
3
[text:'李四', number:10.0, text:'男', text:'二']
[number:10.0, text:'男']
array('B', [1, 2, 1, 1])
['李四', 10.0, '男', '二']
4
-----------列操作----------------
4
[text:'姓名', text:'张三', text:'李四']
[text:'姓名']
[1, 1, 1]
['姓名', '张三', '李四']
-----------单元格操作----------------
number:8.0
2
8.0

(2)案例演示

import os
import xlrd

current_path = os.getcwd()
path = os.path.join(current_path, 'test.xlsx')

xlsx = xlrd.open_workbook(path)

# 通过sheet名查找:xlsx.sheet_by_name("sheet1")
# 通过索引查找:xlsx.sheet_by_index(3)
table = xlsx.sheet_by_index(0)

# 获取单个表格值 (2,1)表示获取第3行第2列单元格的值
value = table.cell_value(2, 1)
print("第3行2列值为", value)

# 获取表格行数
nrows = table.nrows
print("表格一共有", nrows, "行")

# 获取第3列所有值(列表生成式)
name_list = [str(table.cell_value(i, 2)) for i in range(1, nrows)]
print("第3列所有的值:", name_list)

输出:

第3行2列值为 10.0
表格一共有 3 行
第3列所有的值: ['女', '男']

二、xlwt 写Excel操作

1、使用xlwt创建新表格并写入

import xlwt


def fun1():
    '''
    创建新的Excel,并写入内容
    '''
    # 创建新的workbook(其实就是创建新的excel)
    workbook = xlwt.Workbook(encoding='ascii')

    # 创建新的sheet表
    worksheet = workbook.add_sheet("MyNewSheet")

    # 往表格写入内容 (1行1列写入'内容1',3行2列写入'内容2')
    worksheet.write(0, 0, '内容1')
    worksheet.write(2, 1, '内容2')

    # 保存
    workbook.save("NewExcel.xls")
NewExcel.xls 内容:

 2、xlwt设置字体

import xlwt

def fun2():
    '''xlwt 设置字体格式'''

    # 创建新的workbook(其实就是创建新的excel)
    workbook = xlwt.Workbook(encoding='ascii')

    # 创建新的sheet表
    worksheet = workbook.add_sheet("NewSheet2")

    # 初始化样式
    style = xlwt.XFStyle()

    # 为样式创建字体
    font = xlwt.Font()
    font.name = 'Times New Roman'  # 字体
    font.bold = True  # 加粗
    font.underline = True  # 下划线
    font.italic = True  # 斜体

    # 设置样式
    style.font = font

    # 往表格写入内容
    worksheet.write(0, 0, "内容1")
    worksheet.write(2, 1, '内容2', style)

    # 保存
    workbook.save("NewExcel2.xls")

结果:

 3、xlwt 设置列宽

    xlwt中列宽的值表示方法:默认字体0的1/256为衡量单位。xlwt创建时使用的默认宽度为2960,既11个字符0的宽度。
    所以我们在设置列宽时可以用如下方法:width = 256 * 20    256为衡量单位,20表示20个字符宽度。

import xlwt

def fun3():
    '''xlwt 设置列宽
     xlwt中列宽的值表示方法:默认字体0的1/256为衡量单位。xlwt创建时使用的默认宽度为2960,既11个字符0的宽度
     所以我们在设置列宽时可以用如下方法:
        width = 256 * 20    256为衡量单位,20表示20个字符宽度
    '''

    # 创建新的workbook(其实就是创建新的excel)
    workbook = xlwt.Workbook(encoding='ascii')

    # 创建新的sheet表
    worksheet = workbook.add_sheet("NewSheet3")

    # 往表格写入内容
    worksheet.write(0, 0, "内容1")
    worksheet.write(2, 1, '内容2')

    # 设置列宽
    worksheet.col(0).width = 256 * 20

    # 保存
    workbook.save("NewExcel.xls")

结果:

 4、xlwt 设置行高

import xlwt

def fun4():
    '''
    xlwt 设置行高
    行高是在单元格的样式中设置的,你可以通过自动换行通过输入文字的多少来确定行高
    '''
    # 创建新的workbook(其实就是创建新的excel)
    workbook = xlwt.Workbook(encoding='ascii')

    # 创建新的sheet表
    worksheet = workbook.add_sheet("NewSheet3")

    # 往表格写入内容
    worksheet.write(0, 0, "内容1")
    worksheet.write(2, 1, '内容2')

    # 设置行高
    style = xlwt.easyxf('font:height 720;')  # 36pt,类型小初的字号
    row = worksheet.row(0)
    row.set_style(style)

    # 保存
    workbook.save("NewExcel.xls")

结果:

 

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

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

相关文章

LeetCode 热题 100 JavaScript--234. 回文链表

function ListNode(val, next) {this.val val undefined ? 0 : val;this.next next undefined ? null : next; }var isPalindrome function (head) {if (!head || !head.next) {return true; }// 使用快慢指针法找到链表的中间节点let slow head;let fast head;while …

在win10上安装Docker desktop,并在docker中安装mysql

操作步骤: 安装docker 去 官网 下载安装软件;选择windows 2. 依次点击安装; 安装完成后无需登录,直接启动即可; 如果有提示需要更新wsl,执行以下命令更新: wsl --update wsl --status 查看状态 验证一下 适用命令:docker run hello-world 设置国内镜像 docker安装mysql…

Dockerfile部署golang,docker-compose

使用go镜像打包&#xff0c;运行在容器内 redis和mysql用外部的 项目目录结构 w1go项目&#xff1a; Dockerfile # 这种方式是docker项目加上 本地的mysql和redis环境 # go打包的容器 FROM golang:alpine AS builder# 为我们镜像设置一些必要的环境变量 ENV GO111MODULEon …

Apollo配置覆盖引发懒加载配置失效问题

背景 出现问题版本过低&#xff0c;最新版本可能已经做出调整&#xff0c;此文章只是记录 apollo-client.version 1.2.0 因为本地开发&#xff0c;想用测试环境的apollo&#xff0c;所以经常会出现本地覆盖测试环境的配置&#xff1b;一般我会新建一个local.properties来覆盖 …

Debian安装和使用Elasticsearch 8.9

命令行通过 .deb 包安装 Elasticsearch 创建一个新用户 adduser elastic --> rust # 添加sudo权限 # https://phoenixnap.com/kb/how-to-create-sudo-user-on-ubuntu usermod -aG sudo elastic groups elastic下载Elasticsearch v8.9.0 Debian 包 https://www.elastic.co/…

GATK BaseRecalibratorSpark 过程中因Too many open files终止

Error&#xff1a; GATK BaseRecalibratorSpark 过程中因Too many open files终止 执行命令&#xff1a; nohup time ./gatk --java-options "-Xmx16G" BaseRecalibratorSpark -R ../../alignment/hg38/hg38.fa -I ../../alignment/bam/P368T.sorted.markdup.bam …

【C++】C++文件操作-文本文件/二进制文件

0.前言 一、文本文件 1.写文件 代码 #include <iostream> using namespace std; #include <fstream> //头文件包含//************************************** //文本文件 写文件 void test01() {//1.包含文件 fstream//2.创建流对象ofstream ofs;//3.指导打开方式…

芒格之道——查理·芒格股东会讲话1987-2022

你越是认真生活&#xff0c;你的生活就会越美好&#xff01; 这里将读书过程划线的内容摘抄在这里&#xff0c;方便自己回顾。 书分为两部分&#xff0c;我先读了后半部分&#xff0c;而且是从后往前读&#xff0c;到了前半部分&#xff0c;我是从前往后读。书还挺贵&#xff…

使用反汇编工具IDA查看发生异常的汇编代码的上下文去辅助分析C++软件异常

目录 1、概述 2、如何使用IDA打开并查看二进制文件的汇编代码 3、在IDA中找到发生崩溃的那条汇编指令的位置 3.1、如何在IDA中找到发生异常的那条汇编指令 3.2、示例 4、阅读汇编代码上下文需要掌握一定的基础汇编知识 5、最后 VC常用功能开发汇总&#xff08;专栏文章列…

备战秋招011(20230807)

文章目录 前言一、今天学习了什么&#xff1f;二、算法----》单调栈1、介绍2、题目 总结 前言 提示&#xff1a;这里为每天自己的学习内容心情总结&#xff1b; Learn By Doing&#xff0c;Now or Never&#xff0c;Writing is organized thinking. 今天拿到了上周面试的结果…

选读SQL经典实例笔记19_Any和All

1. Any 1.1. 任意一个 1.2. 选修了任意一门课程的学生 1.2.1. 找出选修了至少一门课程的学生 1.3. 比任何火车都快的飞机 1.3.1. 找出比所有火车都快的飞机 2. All 2.1. 全部 2.2. 吃所有蔬菜的人 2.2.1. 没有任何一种蔬菜他们不吃 3. 问题12 3.1. 选修了全部课程的…

scikit-plot 使用笔记

scikit-plot是基于sklearn和Matplotlib的库&#xff0c;主要的功能是对训练好的模型进行可视化。 安装&#xff1a; pip install scikit-plot 功能1&#xff1a;评估指标可视化 scikitplot.metrics.plot_confusion_matrix快速展示模型预测结果和标签计算得到的混淆矩阵。 im…

ForkJoinPool详解

一、归并排序 1、简介 先把一个庞大的数组进行递归分解&#xff0c;把拆分的数组排好序&#xff0c;之后把拆分排好序的数组进行有序的合并&#xff0c;必须住的问题就是&#xff0c;递归拆分的阈值&#xff0c;比如当数组长度拆分到10000时候就不拆了&#xff0c;不能无限制…

TPU编程竞赛系列 | 创客北京2023·算能AI+边缘计算专项赛开始啦!

为助力北京市高精尖产业发展&#xff0c;构建大中小企业相互依存、相互促进的企业发展生态&#xff0c;打造北京市有影响力的双创服务品牌赛事&#xff0c;“创客北京”大赛组委会联合算能举办AI边缘计算方向专项赛。 1.赛题任务 本赛题基于“AI边缘计算”方向&#xff0c;针对…

21、springboot的宽松绑定及属性处理类的构造注入

springboot的宽松绑定及属性处理类的构造注入 ★ 如何使用属性处理类所读取的属性 属性处理类最终变成了Spring容器中的一个Bean组件&#xff0c;因此接下来Spring即可将该Bean组件注入任意其他组件。 这种做法的好处是&#xff1a;可以将大量的配置信息封装一个对象——所以…

利用openTCS实现车辆调度系统(三)车辆适配器解读,封装自己的适配器

适配器的官方解释&#xff1a;openTCS 支持自定义车辆驱动程序的集成&#xff0c;这些驱动程序实现特定于车辆的通信协议&#xff0c;从而在内核和车辆之间进行调解。 由于其功能&#xff0c;车辆驾驶员也称为通信适配器。 openTCS适配器。欢迎随时沟通 1、源码下载 github下…

arcgis宗地或者地块四至权利人信息提取教程

ARCGIS怎样将图斑四邻的名称及方位加入其属性表 以前曾发表过一篇《 如何把相邻图斑的属性添加在某个字段中》的个人心得,有些会员提出了进一步的要求,不但要相邻图斑的名称,还要求有方位,下面讲一下自己的做法。 基本思路是:连接相邻图斑质心,根据连线的角度确定相邻图斑…

动态规划(二)

一、线性DP 1.1数字三角形 #include<iostream> #include<algorithm>using namespace std;const int N 510,INF 1e9;int n; int a[N][N]; int f[N][N];int main() {scanf("%d",&n);for(int i 1;i < n;i ){for(int j 1;j < i; j )scanf(&qu…

【2.3】Java微服务:sentinel服务哨兵

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f49e;当前专栏&#xff1a; Java微服务 ✨特色专栏&#xff1a; 知识分享 &am…

Spring 事务失效的八种场景

1. 抛出检查异常导致事务不能正确回滚 Service public class Service1 {Autowiredprivate AccountMapper accountMapper;Transactionalpublic void transfer(int from, int to, int amount) throws FileNotFoundException {int fromBalance accountMapper.findBalanceBy(from…