python操作EXCEL文档

今天看到群里有人在讨论python操作python操作excel,自己也想弄清楚这方面的内容,借机学习一下。

大概查询了一些python操作excel的库还是挺多的。

有xlrd、xlwt、xlutils等,但是大多数都比较旧,甚至是不支持07之后的版本,现在的office已经出到了15,而且非常好用,所以建议大家使用较新的库。

找到一个openpyxl库是支持07的,查看了一下最近更新是2015.5.26,一直有人在维护。

官网地址http://openpyxl.readthedocs.org/en/latest/

但是很坑的是只有下载点了没反应,所以还是到这里去找了一下https://pypi.python.org/simple/openpyxl/

里面也有最新的稳定版2.2.3。

由于我使用的是eclipse+pydev的开发环境,本来已经安装了xlrd,在python shell下 import xlrd是没有问题的,但是在eclipse上报错,不想浪费时间,所以换成了openpyxl。


安装、校验成功就不多说了,各种库的方法都是一样的。

下面直接贴上代码,包括三个部分:1.读取已有文件,2.创建并修改文件,3.修改已有文件。

#coding=utf-8
'''
Created on 2015年6月17日

@author: frozen cloud
@python_version: 2.7.8
'''
from openpyxl import Workbook
from openpyxl.compat import range
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
from random import randint, random
from datetime import datetime
'''
#Workbook是一个基本类,用于在内存里创建文件写入磁盘
#load_workbook就是把文件导入内存
'''

#读取一个xlsx文件格式的excel文件,得到一个Workbook对象
wb = load_workbook("E://test.xlsx")
#获取sheet的名称,返回sheet列表
sheetnames = wb.get_sheet_names()
#print wb.get_sheet_names()

#如果是获去第N个sheet只需要把sheet换成sheetnames[N-1]即可
sheet = wb.get_sheet_by_name(u'测试1')
#获取A1坐标单元格中的值
sheet.cell("A1").value
#print ws.cell('B1').value

#打印每一个列的值
for cell in sheet.get_cell_collection():
    print cell.value



"""
新建并写入Excel
"""

workbook = Workbook()
#设置路径和名称
dir_filename = r"E://test1.xlsx"
#第一个sheet,新建的excel必然已经存在一个sheet了
ws = workbook.active
ws.title = r"test1"
#从第一行到第四十行添加从零到五百九十九的数字
for row in range(1,40):
    ws.append(range(600))
#在第二个sheet的坐标F5添加3.14
ws2 = workbook.create_sheet(title="Pi")
ws2['F5'] = 3.14
#在第三个sheet,从第十行到第十九行,写入每一列的列坐标
ws3 = workbook.create_sheet(title="Data")
for row in range(10,20):
    for col in range(27,54):
        _ = ws3.cell(column=col,row = row ,value ="%s"% get_column_letter(col))
#print (ws3["AA10"].value)
#保存
workbook.save(dir_filename);


"""
修改现有文件
"""
wb1 = load_workbook("E://test.xlsx")
ws1 = wb1.active

for row in range(1,100):
    age = randint(14,35)
    year_of_birthday = 2015 - age
    num1 = random()*100
    num2 = random()*100
    #第一列设置名字
    _ = ws1.cell(column = 1, row = row ,value = r"张三"+str(row) )
    #第二列设置性别
    _ = ws1.cell(column = 2, row = row ,value = (row%2==0 and r"男" or r"女"))
    #年龄
    _ = ws1.cell(column = 3, row = row ,value = age)
    #生日
    _ = ws1.cell(column = 4, row = row ,value = datetime(year_of_birthday,06,17))
    #计算公式
    _ = ws1.cell(column = 5, row = row ,value = ("=SUM(%d,%d)"%(num1,num2)))
    

wb1.save("E://test.xlsx")
这里给出的都是一些基本的操作,EXCEL还有复杂的内容,例如设置文字大小、字体,插入图片等,这些都需要进一步研究。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值