Python:Excel模块:读取 / 写入 Excel数据

需要用到的库:

  1. 操作xls格式的表格文件:

    读取:xlrd

    写入:xlwt

    修改(追加写入):xlutils 操作 Excel 文件的实用工具,如复制、分割、筛选等

  2. 操作xlsx格式的表格文件:

    读取/写入:openpyxl

新建,写入内容,保存。

#coding=utf-8  
import xlwt  
import xlrd  
try:  
    # 创建excel文件  
    filename=xlwt.Workbook()  
    
    # 给工作表命名,test  
    sheet=filename.add_sheet("test")  
    
    # 写入内容,第4行第3列写入‘张三丰’  
    hello=u'张三丰'  
    sheet.write(3,2,hello)  
    
    # 指定存储路径,如果当前路径存在同名文件,会覆盖掉同名文件  
    filename.save("D:/test1.xls")  
except Exception,e:  
    print(str(e))

简单的读取

#coding=utf-8  
import xlwt  
import xlrd  
try:  
    # 创建excel文件  
    filename=xlwt.Workbook()  
    # 给工作表命名,test  
    sheet=filename.add_sheet("test")  
    # 写入内容,第4行第3列写入‘张三丰’  
    hello=u'张三丰'  
    sheet.write(3,2,hello)  
    # 指定存储路径,如果当前路径存在同名文件,会覆盖掉同名文件  
    filename.save("D:/test1.xls")  
except Exception,e:  
    print(str(e))  
#     找到读取文件  
filename='D:/test1.xls'  
# 打开excel文件  
date=xlrd.open_workbook(filename)  
# 根据工作表名称,找到指定工作表  by_index(0)找到第N个工作表  
sheet=date.sheet_by_name('test')  
# 读取第四行第三列内容,cell_value读取单元格内容,指定编码  
value=sheet.cell_value(3,2).encode('utf-8')  
print(value)  

字典格式

import  xlwt

file=xlwt.Workbook(encoding="utf8")
table=file.add_sheet("data")

#字典数据
data = {
        "1":["张三",150,120,100],
        "2":["李四",90,99,95],
        "3":["王五",60,66,68]
        }

ldata=[]

# 对字典的遍历,其实是对‘键’的遍历
num=[a for  a in data]

#for循环将data字典中的键和值分批的保存在ldata中
for x in num:
    t=[int(x)]
    for a in data[x]:
        t.append(a)

    ldata.append(t)

#将数据写入文件,i是enumerate()函数返回的序号数
for i,p in enumerate(ldata):
    for j ,q in enumerate(p):
        table.write(i,j,q)

file.save("test.xls")

在这里插入图片描述

xlwt的缺陷

xlwt只能创建一个全新的excel文件,然后对这个文件进行写入内容以及保存。但是大多数情况下我们希望的是读入一个excel文件,然后进行修改或追加,这个时候就需要xlutils了。

xlutils的简单使用

import  xlrd
import xlutils.copy
# from xlutils.copy import copy

rexcel=xlrd.open_workbook('./hu.xls')   # 用xlrd提供的方法读取一个excel文件
rows=rexcel.sheet_by_index(0).nrows     # 用xlrd提供的方法获得现在已有的行数
excel=xlutils.copy.copy(rexcel)         # 用xlutils提供的copy方法将xlrd的对象转化为xlwt的对象
table=excel.get_sheet(0)                # 用xlwt对象的方法获得要操作的sheet
values=['a','b','v']

row=rows
for i in values:                        # xlwt对象的写方法,参数分别是行、列、值
    table.write(row,0,i)
    table.write(row,1,'haha')
    table.write(row,2,'lala')
    row +=1

excel.save('./huhuhu.xls')               # xlwt对象的保存方法,这时便覆盖掉了原来的excel
打开excel文件读取数据

data = xlrd.open_workbook("excelFile.xls")

读取工作表

data.sheet_names()#获取所有表格名字
table = data.sheets()[0] # 通过索引顺序获取

table = data.sheet_by_index(0) # 通过索引顺序获取

table = data.sheet_by_name(u'Sheet1') # 通过名称获取

获取整行和整列的值(数组)

table.row_values(i) #获取整行值

table.col_values(i) #获取整列的值

获取行数和列数

nrows = table.nrows #获取行数

ncols = table.ncols #获取列数

###单元格

cell_A1 = table.cell(0,0).value

cell_C4 = table.cell(2,3).value

使用行列索引

cell_A1 = table.row(0)[0].value

cell_A2 = table.row(1)[0].value

# -*- coding: utf-8 -*-

import xlrd


def excel_data(file='test.xls'):
    try:
        # 打开Excel文件读取数据
        data = xlrd.open_workbook(file)
        # 获取第一个工作表
        table = data.sheet_by_index(0)
        # 获取行数
        nrows = table.nrows
        # 获取列数
        ncols = table.ncols
        # 定义excel_list
        excel_list = []
        for row in range(0, nrows):
            for col in range(ncols):
                # 获取单元格数据
                cell_value = table.cell(row, col).value
                # 把数据追加到excel_list中
                excel_list.append(cell_value)
        return excel_list
    except Exception as e:
        print(str(e))


if __name__ == "__main__":
    list = excel_data()
    for i in list:
        print(i)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值