社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python操作Excel的5种方式

Python极客专栏 • 4 年前 • 515 次点击  

PyCharm操作手册,点击获取


大家好 我是阿亮~  

周五啦,提前预祝大家周末快乐。

用Python操作Excel也算常用的功能,比如爬取数据时,需要对数据进行格式化存储;自动化操作时也可能会操作到Excel。

今天就给大家分享5中常用的用Python操作Excel的方式

Python对Excel的读写主要有xlrd、xlwt、xlutils、openpyxl、xlsxwriter几种。

1.xlrd主要是用来读取excel文件

import xlrd
data = xlrd.open_workbook('abcd.xls'# 打开xls文件
table = data.sheets()[0# 打开第一张表
nrows = table.nrows # 获取表的行数
for i in range(nrows): # 循环逐行打印
    if i == 0:# 跳过第一行
        continue
    print (table.row_values(i)[:13]) # 取前十三列

示例:

#coding=utf-8
#######################################################
#filename:test_xlrd.py
#author:defias
#date:xxxx-xx-xx
#function:读excel文件中的数据
#######################################################
import xlrd
#打开一个workbook
workbook = xlrd.open_workbook('E:\\Code\\Python\\testdata.xls')
#抓取所有sheet页的名称
worksheets = workbook.sheet_names()
print('worksheets is %s' %worksheets)
#定位到sheet1
worksheet1 = workbook.sheet_by_name(u'Sheet1')
"""
#通过索引顺序获取
worksheet1 = workbook.sheets()[0]
#或
worksheet1 = workbook.sheet_by_index(0)
"""

"""
#遍历所有sheet对象
for worksheet_name in worksheets:
worksheet = workbook.sheet_by_name(worksheet_name)
"""

#遍历sheet1中所有行row
num_rows = worksheet1.nrows
for curr_row in range(num_rows):
row = worksheet1.row_values(curr_row)
print('row%s is %s' %(curr_row,row))
#遍历sheet1中所有列col
num_cols = worksheet1.ncols
for curr_col in range(num_cols):
col = worksheet1.col_values(curr_col)
print('col%s is %s' %(curr_col,col))
#遍历sheet1中所有单元格cell
for rown in range(num_rows):
for coln in range(num_cols):
cell = worksheet1.cell_value(rown,coln)
print cell
"""
#其他写法:
cell = worksheet1.cell(rown,coln).value
print cell
#或
cell = worksheet1.row(rown)[coln].value
print cell
#或
cell = worksheet1.col(coln)[rown].value
print cell
#获取单元格中值的类型,类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
cell_type = worksheet1.cell_type(rown,coln)
print cell_type
"""

2.xlwt主要是用来写excel文件

#Python学习交流群:778463939

import xlwt
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('sheet 1')
sheet.write(0,1,'test text')#第0行第一列写入内容
wbk.save('test.xls')

3.xlutils结合xlrd可以达到修改excel文件目的

import xlrd
from xlutils.copy import copy
workbook = xlrd.open_workbook(u'有趣装逼每日数据及趋势.xls')
workbooknew = copy(workbook)
ws = workbooknew.get_sheet(0)
ws.write(30'changed!')
workbooknew.save(u'有趣装逼每日数据及趋势copy.xls')

4.openpyxl可以对excel文件进行读写操作

from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.writer.excel import ExcelWriter 

workbook_ = load_workbook(u"新歌检索失败1477881109469.xlsx")
sheetnames =workbook_.get_sheet_names() #获得表单名字
print sheetnames
sheet = workbook_.get_sheet_by_name(sheetnames[0])
print sheet.cell(row=3,column=3).value
sheet['A1'] = '47'
workbook_.save(u"新歌检索失败1477881109469_new.xlsx"
wb = Workbook()
ws = wb.active
ws['A1'] = 4
wb.save("新歌检索失败.xlsx"

示例:

import openpyxl
# 新建文件
workbook = openpyxl.Workbook()
# 写入文件
sheet = workbook.activesheet['A1']='A1'
# 保存文件
workbook.save('test.xlsx')

5.xlsxwriter可以写excel文件并加上图表

import xlsxwriter

def get_chart(series):
    chart = workbook.add_chart({'type''line'})
    for ses in series:
        name = ses["name"]
        values = ses["values"]
        chart.add_series({
            'name': name,
            'categories''A2:A10',
            'values':values
        })
    chart.set_size({'width'700'height'350})
    return chart

if __name__ == '__main__':
    workbook = xlsxwriter.Workbook(u'H5应用中心关键数据及趋势.xlsx')
    worksheet = workbook.add_worksheet(u"每日PV,UV")
    headings = ['日期''平均值']
    worksheet.write_row('A1', headings)
    index=0
    for row in range(1,10):
        for com in [0,1]:
            worksheet.write(row,com,index)
            index+=1
    series = [{"name":"平均值","values" :"B2:B10"}]
    chart = get_chart(series)
    chart.set_title ({'name''每日页面分享数据'}) 
    worksheet.insert_chart('H7', chart)
    workbook.close()

openpyxl 

示例:

import xlsxwriter as xw
#新建excel
workbook  = xw.Workbook('myexcel.xlsx')
#新建工作薄
worksheet = workbook.add_worksheet()
#写入数据
worksheet.wirte('A1',1)
#关闭保存
workbook.close()

合并表格实例:

#coding:utf-8
import xlsxwriter
import xlrd
#新建excel
workbook  = xlsxwriter.Workbook('广东.xlsx')
#新建工作薄
worksheet = workbook.add_worksheet()

count = 1
worksheet.write("A%s"%count,"公司名称")
worksheet.write("B%s"%count,"法人")
worksheet.write("C%s"%count,"电话")
worksheet.write("D%s"%count,"注册资金")
worksheet.write("E%s"%count,"注册时间")
count+=1
for i in range(1,153):
    data = xlrd.open_workbook('ah (%s).xls'%i) # 打开xls文件
    table = data.sheets()[0# 打开第一张表
    nrows = table.nrows # 获取表的行数
    for i in range(nrows): # 循环逐行打印
        if i == 0:# 跳过第一行
            continue
        # print (table.row_values(i)[:5]) # 取前十三列
        print(count,table.row_values(i)[:5][0])

        #写入数据
        #设定第一列(A)宽度为20像素 A:E表示从A到E
        worksheet.set_column('A:A',30)
        worksheet.set_column('B:E',20)
        worksheet.write("A%s"%count,table.row_values(i)[:5][0])
        worksheet.write("B%s"%count,table.row_values(i)[:5][1])
        worksheet.write("C%s"%count,table.row_values(i)[:5][2])
        worksheet.write("D%s"%count,table.row_values(i)[:5][3])
        worksheet.write("E%s"%count,table.row_values(i)[:5][4])
        count+=1

#关闭保存
workbook.close()



如有文章对你有帮助,

在看”和转发是对我最大的支持!


关注Python极客专栏


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/111286
 
515 次点击