专业的编程技术博客社区

网站首页 > 博客文章 正文

python操作excel大全(python-excel)

baijin 2024-09-29 08:56:51 博客文章 6 ℃ 0 评论

一、常用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()

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表