python对Excel进行操作

python对excel读写主要有xlrd、xlwt 、xlutils、openpyxl、xlsxwriter这几个模块

一 xlrd主要用来读取excel文件


DESCRIPTION
    # Copyright (c) 2005-2012 Stephen John Machin, Lingfo Pty Ltd
    # This module is part of the xlrd package, which is released under a
    # BSD-style licence.

PACKAGE CONTENTS
    biffh
    book
    compdoc
    formatting
    formula
    info
    sheet
    timemachine
    xldate
    xlsx

1.常用单元格中的数据类型

0 empty,1 string,2 number,3 date,4 boolean,5 error,6 blank

2.导入模块

import xlrd

3.打开excel文件读取数据

workbook=xlrd.open_workbook('test.xlsx')

4.常用函数

1)获取book中的一个工作表

table1=workbook.sheets()[0]#通过索引顺序获取
table2=workbook.sheet_by_index(0)#通过索引顺序获取
table3=workbook.sheet_by_name('Sheet1')#通过名称获取
names=workbook.sheet_names()#返回book中所有工作表的名称
workbook.sheet_loaded(sheet_name or index)#检查某个sheet是否导入完毕

2)行的操作

nrows=table1.nrows#获取改sheet中的有效行数
list_row=table.row(1)#获得该行中所有单元格对象组成的列表
table.row_slice(rowx)#返回由该列所有单元格对象组成的列表
table.row_types(rowx, start_colx=0, end_colx=None)    #返回由该行中所有单元格的数据类型组成的列表
table.row_values(rowx, start_colx=0, end_colx=None)   #返回由该行中所有单元格的数据组成的列表
table.row_len(rowx) #返回该列的有效单元格长度

3)列的操作

ncols = table.ncols   #获取列表的有效列数
table.col(colx, start_rowx=0, end_rowx=None)  #返回由该列中所有的单元格对象组成的列表
table.col_slice(colx, start_rowx=0, end_rowx=None)  #返回由该列中所有的单元格对象组成的列表

table.col_types(colx, start_rowx=0, end_rowx=None)    #返回由该列中所有单元格的数据类型组成的列表
table.col_values(colx, start_rowx=0, end_rowx=None)   #返回由该列中所有单元格的数据组成的列表

 4)单元格的操作

table.cell(rowx,colx)   #返回单元格对象
table.cell_type(rowx,colx)    #返回单元格中的数据类型
table.cell_value(rowx,colx)   #返回单元格中的数据
table.cell_xf_index(rowx, colx)   # 暂时还没有搞懂

5.问题

 

  ♦1、使用open()函数、xlrd.open_workbook()函数打开文件,文件名若包含中文,会报错找不到这个文件或目录。 

  ♦2、获取sheet时若包含中文,也会报错。

#打开文件
file = open(filename,'rb')

#打开excel文件
workbook = xlrd.open_workbook(filename)

#获取sheet
sheet = workbook.sheet_by_name(sheetname)

解决方案:

♦对参数进行转码即可。如:

filename = filename.decode('utf-8')

6.示列:

import xlrd

workbook = xlrd.open_workbook(u'test.xls')

sheet_names= workbook.sheet_names()

for sheet_name in sheet_names:

   sheet2 = workbook.sheet_by_name(sheet_name)

   print sheet_name rows = sheet2.row_values(3) # 获取第四行内容

   cols = sheet2.col_values(1) # 获取第二列内容

   print rows

   print cols

二 xlwt主要是用来写excel文件

PACKAGE CONTENTS
    BIFFRecords
    Bitmap
    Cell
    Column
    CompoundDoc
    ExcelFormula
    ExcelFormulaLexer
    ExcelFormulaParser
    ExcelMagic
    Formatting
    Row
    Style
    UnicodeUtils
    Utils
    Workbook
    Worksheet
    antlr
    compat

1.导入xlwt模块

import xlwt

2.新建

file=xlwt.Workbook()#新建一个excel文件
table=file.add_sheet('sheet1')#新建一个sheet
table.write(0,0,'test')#写入数据table.write(行,列,value)

3.保存

file.save('new.xlsx')#保存文件

 4.表格样式

style=xlwt.XFStyle()#创建初始化样式
font=xlwt.Font()#为样式创建字体
font.name='Times New Roman'
font.bold=True
style.font=font#为样式设置字体
table.write(0,0,'some bold Times text',style)#使用样式

5.实例

import xlwt

workbook = xlwt.Workbook(encoding = 'ascii')
worksheet = workbook.add_sheet('My Worksheet')
style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = 'Times New Roman' 
font.bold = True # 黑体
font.underline = True # 下划线
font.italic = True # 斜体字
style.font = font # 设定样式
worksheet.write(0, 0, 'Unformatted value') # 不带样式的写入

worksheet.write(1, 0, 'Formatted value', style) # 带样式的写入

workbook.save('D://formatting.xls') # 保存文件

 

设置单元格宽 

import xlwt

workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0,'My Cell Contents')

# 设置单元格宽度
worksheet.col(0).width = 3333
workbook.save('cell_width.xls')

 

 输入一个日期到单元格:

import xlwt
import datetime
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
style = xlwt.XFStyle()
style.num_format_str = 'M/D/YY' # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
worksheet.write(0, 0, datetime.datetime.now(), style)
workbook.save('Excel_Workbook.xls')

 向单元格添加一个公式:

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0, 5) # Outputs 5
worksheet.write(0, 1, 2) # Outputs 2
worksheet.write(1, 0, xlwt.Formula('A1*B1')) # Should output "10" (A1[5] * A2[2])
worksheet.write(1, 1, xlwt.Formula('SUM(A1,B1)')) # Should output "7" (A1[5] + A2[2])
workbook.save('Excel_Workbook.xls')

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值