python文件读写(三)-Excel表格三剑客xlwt,xlrd,xlutils

1.写xlwt

import xlwt
f = xlwt.Workbook()
sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)
style = xlwt.XFStyle()#创建格式style1

def font(Name="Times New Roman",Bold=True,Colour=0,Height=0x190,Italic=False,Struck=False):#设置字体格式
   doc='''
     clolour_index: 0 = Black, 1 = White, 2 = Red, 3 = Green,
     4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan
     underline:UNDERLINE_DOUBLE 代表双下划线,另外还有 UNDERLINE_NONE,
     UNDERLINE_SINGLE,
     UNDERLINE_SINGLE_ACC, UNDERLINE_DOUBLE, UNDERLINE_DOUBLE_ACC
     height: #0x190是16进制,换成10进制为400,然后除以20,就得到字体的大小为20  
   '''
   font = xlwt.Font()   #创建font1
   font.name = Name  #字体为'Times New Roman',字体为'Algerian'
   font.bold = Bold   #加粗
   font.colour_index = Colour
   font.underline = xlwt.Font.UNDERLINE_NONE
   font.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT   #设置上标
   font.family = xlwt.Font.FAMILY_ROMAN
   font.height = Height
   font.italic = Italic  #斜体
   font.struck_out = Struck   #删除线
   return font


def aligment():#设置单元格对齐方式
   doc='''#设置水平对齐为居中,May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER,
            HORZ_RIGHT,HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL,
            HORZ_DISTRIBUTED
            #设置垂直对齐为居中,May be: VERT_TOP,
            VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED'''
   alignment = xlwt.Alignment()    #创建alignment
   alignment.horz = xlwt.Alignment.HORZ_CENTER
   alignment.vert = xlwt.Alignment.VERT_CENTER
   return alignment


#设置单元格背景颜色
def pattern():
   pattern= xlwt.Pattern()  #创建pattern_yellow
   pattern.pattern = xlwt.Pattern.SOLID_PATTERN  #设置填充模式为全部填充
   pattern.pattern_fore_colour = 5    #设置填充颜色为yellow黄色
   return pattern


#设置单元格边框
def border(leftcolour=0x10 ,rightcolour=0x20,topcolour=0x30,bottomcolour=0x40):
   doc='''设置左边框的类型为虚线 May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED,
   THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED,
   MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED,
   MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED,
   or 0x00 through 0x0D.'''
   border = xlwt.Borders()   #创建borders
   border.left = xlwt.Borders.NO_LINE
   border.right = xlwt.Borders.NO_LINE  #设置右边框的类型为细线
   border.top = xlwt.Borders.NO_LINE   #设置上边框的类型为打点的
   border.bottom = xlwt.Borders.NO_LINE  #设置底部边框类型为粗线
   border.left_colour = leftcolour  #设置左边框线条颜色
   border.right_colour = rightcolour
   border.top_colour = topcolour
   border.bottom_colour = bottomcolour
   return border

style.font = font()  #将创建的font字体格式应用到style上
style.alignment = aligment()   #应用alignment到style上
style.pattern = pattern() #把设置的pattern应用到style上
style.borders = border()
sheet1.write(0,0,'some text',style)
sheet1.write_merge(1,1+2,3,3+2,"sum",style)
f.save('test1.xls')

#write_merge(x, x + h, y, w + y, string, sytle)
#x表示行,y表示列,
# w表示跨列个数,h表示跨行个数,
# string表示要写入的单元格内容,style表示单元格样式。
#注意,x,y,w,h,都是以0开始计算的。

# insert_bitmap(img, x, y, x1, y1, scale_x=0.8, scale_y=1)
# img表示要插入的图像地址,
# x表示行
# y表示列
# x1表示相对原来位置向下偏移的像素
# y1表示相对原来位置向右偏移的像素
# scale_x表示相对原图宽的比例
# scale_y表示相对原图高的比例
#xlwt文档说们了只支持24bit的bmp, XlsxWriter支持多点png,jpeg
#sheet1.insert_bitmap(r"E:\python_sample\libs\dsp.bmp", 5, 6, 5, 5, scale_x=0.8, scale_y=1)

2.读xlrd

import xlrd
excel = xlrd.open_workbook("C:\Users\wang\Desktop\wang.xls") 
#打开文件并将对象存储到excel中
sheet = excel.sheet_by_index(0) #通过索引读取sheet对象,第一个sheet的索引为"0"
sheet=excel.sheet_by_name(u"sheet1")

row_3 = sheet.row_values(2) #读取第3行的所有数据,并以列表的形式存储到row_3中
col_3 = sheet.col_values(2) #读取第3列的所有数据,并以列表list的形式存储到col_3中
cell_12_7 = sheet.cell_value(11,6)   #读取第12行第7列的数据,并存储到cell_12_7中
cell_11_11 = sheet.cell(10,10).value #读取第11行第11列的数据,并存储到cell_11_11中

num_rows = sheet.nrows             #读取sheet的总行数
num_cols = sheet.ncols               #读取sheet的总列数    


print row_3
print col_3
print cell_12_7
print num_rows
print num_cols

3.改xlutils

#-*- coding:utf-8 -*-     #设置当前编码格式为utf-8
import xlwt       #导入xlwt模块
import xlrd       #导入xlrd模块
from xlutils.copy import copy
#导入import模块的copy函数,接下来就可以直接使用函数copy了。

fileName = r"C:\Users\wang\Desktop\36.xls"
sheetName = "sheet1"

styleBoldRed = xlwt.easyxf('font: color-index red, bold on')
#设置字体,颜色为红色,加粗
oldWb = xlrd.open_workbook(fileName, formatting_info=True)
#使用xlrd.open_workbook函数打开文件,formatting_info=True表示保留该文件的格式
newWb = copy(oldWb)
#通过copy函数把oldWb copy到newWb,然后通过编辑newWb来实现编辑已经存在的文件。
newWs = newWb.get_sheet(0)
#读取第一个sheet
newWs.write(4, 0, "value1",styleBoldRed)
#第5行第1列写入值“value1”,格式采用styleBoldRed。
newWs.write(4, 1, "value2",styleBoldRed)
#第5行第2列写入值“value2”
newWs.write(4, 2, "value3",styleBoldRed)
#第5行第3列写入值“value3”
newWb.save(fileName)   #文件保存为"E:\\4.xls"
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容