百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

python操作excel大全

liuian 2025-02-08 11:50 27 浏览

一、常用python操作excel模块

  • xlrd
  • csv
  • openpyxl

二、各个模块操作

1、xlrd操作

安装

pip install xlrd

例如excel内容如下,对该excel进行操作

# -*- coding: utf-8 -*-
import xlrd

def read_excel():
# 打开文件
workbook = xlrd.open_workbook('banwod.xls')
# 获取所有sheet
print workbook.sheet_names() # [u'sheet1', u'sheet2']
sheet2_name = workbook.sheet_names()[1]

# 根据sheet索引或者名称获取sheet内容
sheet2 = workbook.sheet_by_index(0) # sheet索引从0开始,或者根据sheet名称来获得,如下
# sheet2 = workbook.sheet_by_name('Sheet1')#同上

  # sheet的名称,行数,列数
print "sheet的名称,行数,列数",sheet2.name,sheet2.nrows,sheet2.ncols

# 获取整行和整列的值(数组)
rows = sheet2.row_values(2) # 获取第四行内容
cols = sheet2.col_values(2) # 获取第三列内容
print "行"
for i in rows:
    print i,
    print "列"
for i in cols:
    print i,

# 获取单元格内容的几种方式
print sheet2.cell(1,0).value.encode('utf-8')
print sheet2.cell_value(1,0).encode('utf-8')
print sheet2.row(1)[0].value.encode('utf-8')

# 获取单元格内容的数据类型
# print sheet2.cell(1,0).ctype

if __name__ == '__main__':
    read_excel()

输出:


2、csv模块

自带模块,无需安装

import csv
with open('egg2.csv', 'wb') as csvfile:
    spamwriter = csv.writer(csvfile,dialect='excel')
    spamwriter.writerow(['a', '1', '1', '2', '2'])
    spamwriter.writerow(['b', '3', '3', '6', '4'])
    spamwriter.writerow(['c', '7', '7', '10', '4'])
    spamwriter.writerow(['d', '11','11','11', '1'])
    spamwriter.writerow(['e', '12','12','14', '3'])

输出:


3、openpyxl模块

pip install openpyxl

多sheet操作,新建sheet、对指定sheet进行操作

import openpyxl


def writeExcel(path, value, sheet):
    '''
    :param sheet:sheet的名称
    :param path:文件的名字和路径
    :param value1: 写入的数据
    :return:
    '''
    book = openpyxl.Workbook()
    sheet1 = book.active
    sheet1.title = sheet

    for i in range(0, len(value)):
        for j in range(0, len(value[i])):
            sheet1.cell(row=i + 1, column=j + 1, value=str(value[i][j]))

    book.save(path)
    print("写入数据成功!")


def addExcel(path, value, sheet):
    '''
   :param sheet:sheet的名称
    :param path:写入excel的路径
    :param value: 追加的数据
    :return:
    '''
    wb = openpyxl.load_workbook(path)
    wb.create_sheet(sheet)
    ws = wb[sheet] #该功能可以直接获取指定的sheet表,需要屏蔽掉上一步create_sheet

    for ss in value:
        ws.append(ss)#不覆盖原数据
        ws.cell() #覆盖原数据
    wb.save(path)
    print("写入成功")


def main():
    value1 = [["标题1", "标题2", "标题3"],
              ["a", "b", "c"],
              ["1", "2", "3"]]
    writeExcel("sss.xlsx", value1,sheet="sheet1")
    path = "sss.xlsx"
    value2 = [["a", "b", "v"], ["ss", "bbb", "vvv"]]

    addExcel(path, value2, sheet="sheet2")


#打开文件:
from openpyxl import load_workbook
excel=load_workbook('E:/test.xlsx')
#获取sheet:
table = excel.get_sheet_by_name('Sheet1')   #通过表名获取  
#获取行数和列数:
rows=table.max_row   #获取行数
cols=table.max_column    #获取列数
#获取单元格值:
Data=table.cell(row=row,column=col).value  #获取表格内容,是从第一行第一列是从1开始的,注意不要丢掉 .value
#通过名字
    ws = wb["frequency"] 
    #等同于 ws2 = wb.get_sheet_by_name('frequency')
    #不知道名字用index
    sheet_names = wb.get_sheet_names()
    ws = wb.get_sheet_by_name(sheet_names[index])# index为0为第一张表 
#或者
    ws =wb.active
   # 等同于  ws = wb.get_active_sheet() #通过_active_sheet_index设定读取的表,默认0读第一个表
    #活动表表名
   wb.get_active_sheet().title

if __name__ == '__main__':
    main()

相关推荐

python入门到脱坑函数—定义函数_如何定义函数python

Python函数定义:从入门到精通一、函数的基本概念函数是组织好的、可重复使用的代码块,用于执行特定任务。在Python中,函数可以提高代码的模块性和重复利用率。二、定义函数的基本语法def函数名(...

javascript函数的call、apply和bind的原理及作用详解

javascript函数的call、apply和bind本质是用来实现继承的,专业点说法就是改变函数体内部this的指向,当一个对象没有某个功能时,就可以用这3个来从有相关功能的对象里借用过来...

JS中 call()、apply()、bind() 的用法

其实是一个很简单的东西,认真看十分钟就从一脸懵B到完全理解!先看明白下面:例1obj.objAge;//17obj.myFun()//小张年龄undefined例2shows(...

Pandas每日函数学习之apply函数_apply函数python

apply函数是Pandas中的一个非常强大的工具,它允许你对DataFrame或Series中的数据应用一个函数,可以是自定义的函数,也可以是内置的函数。apply可以作用于DataF...

Win10搜索不习惯 换个设定就好了_window10搜索用不了怎么办

Windows10的搜索功能是真的方便,这点用惯了Windows10的小伙伴应该都知道,不过它有个小问题,就是Windows10虽然会自动联网搜索,但默认使用微软自家的Bing搜索引擎和Edge...

面试秘籍:call、bind、apply的区别,面试官为什么总爱问这三位?

引言你有没有发现,每次JavaScript面试,面试官总爱问你call、bind和apply的区别?好像这三个方法成了通关密码,掌握了它们,就能顺利过关。其实不难理解,面试官问这些问题,不...

记住这8招,帮你掌握“追拍“摄影技法—摄影早自习第422日

杨海英同学提问:请问叶梓老师,我练习追拍时,总也不能把运动的人物拍清晰,速度一般掌握在1/40-1/60,请问您如何把追拍拍的清晰?这跟不同的运动形式有关系吗?请您给讲讲要点,谢谢您!摄影:Damia...

[Sony] 有点残酷的测试A7RII PK FS7

都是好机!手中利器!主要是最近天天研究fs5,想知道fs5与a7rii后期匹配问题,苦等朋友的fs5月底到货,于是先拿手里现有的fs7小测一下,十九八九也能看到fs5的影子,另外也了解一下fs5k标配...

AndroidStudio_Android使用OkHttp发起Http请求

这个okHttp的使用,其实网络上有很多的案例的,但是,如果以前没用过,copy别人的直接用的话,可以发现要么导包导不进来,要么,人家给的代码也不完整,这里自己整理一下.1.引入OkHttp的jar...

ESL-通过事件控制FreeSWITCH_es事务控制

通过事件提供的最底层控制机制,允许我们有效地利用工具箱,适时选择使用其中的单个工具。FreeSWITCH是一个核心交换与混合矩阵,它周围有几十个模块提供各种功能特性。我们完全控制了所有的即时信息,这些...

【调试】perf和火焰图_perf生成火焰图

简介perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu、进程id、运行栈等),利用这些...

文本检索控件也玩安卓?dtSearch Engine发布Android测试版

dtSearchEngineforLinux(原生64-bit/32-bitC++和JavaAPIs)和dtSearchEngineforWin&.NET(原生64-bi...

网站后台莫名增加N个管理员,记一次SQL注入攻击

网站没流量,但却经常被SQL注入光顾。最近,网站真的很奇怪,网站后台不光莫名多了很多“管理员”,所有的Wordpres插件还会被自动暂停,导致一些插件支持的页面,如WooCommerce无法正常访问、...

多元回归树分析Multivariate Regression Trees,MRT

多元回归树(MultivariateRegressionTrees,MRT)是单元回归树的拓展,是一种对一系列连续型变量递归划分成多个类群的聚类方法,是在决策树(decision-trees)基础...

JMETER性能测试_JMETER性能测试指标

jmeter为性能测试提供了一下特色:jmeter可以对测试静态资源(例如js、html等)以及动态资源(例如php、jsp、ajax等等)进行性能测试jmeter可以挖掘出系统最大能处...