python操作Excel画图总结

openpyxl中定义了多种数据格式,其中最重要的三种:
NULL:空值,对应于python中的None,表示这个cell里面没有数据。
numberic:数字型,统一按照浮点数来进行处理。对应于python中的float
string:字符串型,对应于python中的unicode

每一个Excel数据文件从上至下分为三个层级的对象:
workbook: 每一个Excel文件就是一个workbook。
sheet: 每一个workbook中可以包含多个sheet,具体就对应Excel中我们在左下脚所看到的“sheet1”,“sheet2”等。
cell: 每一个sheet就是我们通常所看到的一个表格,可以含有m行,n列,每个确定的行号,列号所对应的一个格子就是一个cell。

Excel中读取数据
xlsx文件中读取数据,按照Excel文件的三个层级,分别做以下三个步骤

1. 打开workbook

from openpyxl import load_workbook
wb = load_workbook('file_name.xlsx') 2.

2.打开所需的sheet:这样打开workbook中的第一个sheet

ws = wb.get_active_sheet()变量_active_sheet_index用来确定获取哪一个sheet,而默认情况下它被置为0。也可以通过sheet的名称来获取sheet

ws = wb.get_sheet_by_name("sheet_name")openpyxl似乎没有提供按索引来读取sheet,不过我们总是能很容易地通过sheet_name来实现:

sheet_names = wb.get_sheet_names()
ws = wb.get_sheet_by_name(sheet_names[index])

3. 获取对应cell的值:
openpyxl提供可两种方式来读取cell,一是按照Excel的习惯用字母来代表列号,例如:

c = ws.cell('A4').value也可以按照行号列号来读取:

d = ws.cell(row = 3, column = 0)

将数据写入Excel
同读取类似,写入一个Excel文件,要经历一下四个步骤:

1. 新建workbook
直接新建一个workbook对象即可:

wb = Workbook()2. 新建sheet
默认情况下,新创建的sheet是排在最后的,若想要创建一个排在最前的sheet,可以传入参数0

ws1 = wb.create_sheet()  # insert at the end
ws2 = wb.create_sheet(0)  # insert at the first position

3. 写入数据

直接将要写入的数据赋值给相应的cell即可,若仅仅是修改一个表。可以跳过前两个步骤,不过要注意不要覆盖掉其它数据:

ws.cell('B5') = value1
ws.cell(row = 3, column = 7) = value24.
保存数据

最后写入将数据写入即可,注意若保存路径下有同名的文件的话,之前的文件会被覆盖:

wb.save('file_name.xlsx')

 

 

其他方法汇总:

wb = load_workbook(filename = r'empty_book.xlsx') 

#显示有多少张表 

print "Worksheet range(s):", wb.get_named_ranges() 

print "Worksheet name(s):", wb.get_sheet_names() 

#显示表名,表行数,表列数 

print "Work Sheet Titile:",ws.title 

print "Work Sheet Rows:",ws.get_highest_row() 

print "Work Sheet Cols:",ws.get_highest_column() 

 #把数据存到字典中 

 # 建立存储数据的字典 

data_dic = {} 

for rx in range(ws.get_highest_row()): 

temp_list = [] 

pid = ws.cell(row = rx,column = 0).value 

w1 = ws.cell(row = rx,column = 1).value 

w2 = ws.cell(row = rx,column = 2).value 

w3 = ws.cell(row = rx,column = 3).value 

w4 = ws.cell(row = rx,column = 4).value 

temp_list = [w1,w2,w3,w4] 

data_dic[pid] = temp_list 

注意的是ws.cell()方法,支持的参数有两种,cellcoordinate=None, row=None,column=None

coordinate坐标,eg ws.cell("B1") 

row  column 是行和列 ,都是从0开始

还有,如果想取得格里的值,得用ws.cell("A1").value 取到

网上推荐的一个实例

#!/usr/bin/python

 

import random

from openpyxl.workbook import Workbook

from openpyxl.writer.excel import save_workbook

from openpyxl.chart import ScatterChart, Serie, Reference

def test_scatterchart_write():

 

    wb = Workbook() ##打开workbook

 

    ws = wb.get_active_sheet()##用来确定获取哪一个sheet而默认情况下它被置为0

 

    ws.title = u'scatterdata'  ###名称为scatterdatasheet

 

    ws.cell(row=0, column=1).value = 'Scatter 1' ##01列为Scatter 1

 

    ws.cell(row=0, column=2).value = 'Scatter 2' ##02列为Scatter 2

 

    for i in range(1,12):  ##循环对表格赋值

 

        ws.cell(row=i, column=0).value = (i-1) / 10.

 

        ws.cell(row=i, column=1).value = random.random()

 

        ws.cell(row=i, column=2).value = random.random()

       

    #Excel使用SERIES()函数绘制曲线

    #Reference对一个或多个单元格区域的引用。如果为 reference 输入一个不连续的区域,必须将 reference 其用括号括起来。

 

    xyserie1 = Serie( Reference(ws, (1,1), (11,1)),  ##11列到111

 

                      xvalues=Reference(ws, (1,0), (11,0)),#10列到第110

 

                       legend=Reference(ws, (0,1)))  ##01列的数据)

   

    xyserie2 = Serie( Reference(ws, (2,1), (11,1)),

 

                      xvalues=Reference(ws, (1,0), (11,0)),

 

                       legend=Reference(ws, (0,2)))

   

    scatterchart = ScatterChart()

    scatterchart.add_serie(xyserie1)

    scatterchart.add_serie(xyserie2)

 

    ##坐标的x轴即使横轴

    scatterchart.x_axis.min = 0

    scatterchart.x_axis.max = 1

    scatterchart.x_axis.unit = 0.2

 

 

    scatterchart.y_axis.min = 0

    scatterchart.y_axis.max = 1

    scatterchart.y_axis.unit = 0.2

 

    # 图片区域的位置,大小

    scatterchart.drawing.left = 200

    scatterchart.drawing.top = 200

    scatterchart.drawing.height = 200

    scatterchart.drawing.width = 500

 

    #在容器中的百分比(如何控制)

    scatterchart.width = .9

    scatterchart.height = .9

    scatterchart.margin_top = .1

    ws.add_chart(scatterchart)

    wb.save(r'chart.xlsx')

test_scatterchart_write()

print ("完成")

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值