python 读取Excel(二)之xlwt

  今天由于在接口测试报告中感觉自己写的接口测试报告特别low,Excel的连个颜色都不加,就想着怎么去想办法给整整,自己根据API一次次调试,感觉很慢,于是乎,百度,可惜没有找到,去官网,官网给的也特别的简单,

import xlwt
from datetime import datetime

style0 = xlwt.easyxf(‘font: name Times New Roman, color-index red, bold on‘,
    num_format_str=‘#,##0.00‘)
style1 = xlwt.easyxf(num_format_str=‘D-MMM-YY‘)

wb = xlwt.Workbook()
ws = wb.add_sheet(‘A Test Sheet‘)

ws.write(0, 0, 1234.56, style0)
ws.write(1, 0, datetime.now(), style1)
ws.write(2, 0, 1)
ws.write(2, 1, 1)
ws.write(2, 2, xlwt.Formula("A3+B3"))

wb.save(‘example.xls‘)

我们来看官网给的例子给我们展示什么样的效果,如图

我们可以看到创建一个A Test Sheet的表。

首先我们先引入这个模块

import xlwt接着呢,我们看到引入了
xlwt.easyxf,然后在style.py有这个函数,我们可以去看看这个函数,其实在这里给我们定义了很多的样式,我们只需要调用我们相拥的相应的函数传入相应的参数就可以,下面是我截取的一部分,
‘align‘: ‘alignment‘, # synonym
    ‘alignment‘: {
        ‘dire‘: {
            ‘general‘: 0,
            ‘lr‘: 1,
            ‘rl‘: 2,
            },
        ‘direction‘: ‘dire‘,
        ‘horiz‘: ‘horz‘,
        ‘horizontal‘: ‘horz‘,
        ‘horz‘: {
            ‘general‘: 0,
            ‘left‘: 1,
            ‘center‘: 2,
            ‘centre‘: 2, # "align: horiz centre" means xf.alignment.horz is set to 2
            ‘right‘: 3,
            ‘filled‘: 4,
            ‘justified‘: 5,
            ‘center_across_selection‘: 6,
            ‘centre_across_selection‘: 6,
            ‘distributed‘: 7,
            },
        ‘inde‘: IntULim(15), # restriction: 0 <= value <= 15
        ‘indent‘: ‘inde‘,
        ‘rota‘: [{‘stacked‘: 255, ‘none‘: 0, }, rotation_func],
        ‘rotation‘: ‘rota‘,
        ‘shri‘: bool_map,
        ‘shrink‘: ‘shri‘,
        ‘shrink_to_fit‘: ‘shri‘,
        ‘vert‘: {
            ‘top‘: 0,
            ‘center‘: 1,
            ‘centre‘: 1,
            ‘bottom‘: 2,
            ‘justified‘: 3,
            ‘distributed‘: 4,
            },
         ‘vertical‘: ‘vert‘,
         ‘wrap‘: bool_map,
         },
    ‘border‘: ‘borders‘,
    ‘borders‘: {
        ‘left‘:     [border_line_map, IntULim(0x0d)],
        ‘right‘:    [border_line_map, IntULim(0x0d)],
        ‘top‘:      [border_line_map, IntULim(0x0d)],
        ‘bottom‘:   [border_line_map, IntULim(0x0d)],
        ‘diag‘:     [border_line_map, IntULim(0x0d)],
        ‘top_colour‘:       [colour_map, colour_index_func_7],
        ‘bottom_colour‘:    [colour_map, colour_index_func_7],
        ‘left_colour‘:      [colour_map, colour_index_func_7],
        ‘right_colour‘:     [colour_map, colour_index_func_7],
        ‘diag_colour‘:      [colour_map, colour_index_func_7],
        ‘top_color‘:        ‘top_colour‘,
        ‘bottom_color‘:     ‘bottom_colour‘,
        ‘left_color‘:       ‘left_colour‘,
        ‘right_color‘:      ‘right_colour‘,
        ‘diag_color‘:       ‘diag_colour‘,
        ‘need_diag1‘:  bool_map,
        ‘need_diag2‘:  bool_map,
        },
    ‘font‘: {
        ‘bold‘: bool_map,
        ‘charset‘: charset_map,
        ‘color‘:  ‘colour_index‘,
        ‘color_index‘:  ‘colour_index‘,
        ‘colour‘:  ‘colour_index‘,
        ‘colour_index‘: [colour_map, colour_index_func_15],
        ‘escapement‘: {‘none‘: 0, ‘superscript‘: 1, ‘subscript‘: 2},
        ‘family‘: {‘none‘: 0, ‘roman‘: 1, ‘swiss‘: 2, ‘modern‘: 3, ‘script‘: 4, ‘decorative‘: 5, },
        ‘height‘: IntULim(0xFFFF), # practical limits are much narrower e.g. 160 to 1440 (8pt to 72pt)
        ‘italic‘: bool_map,
        ‘name‘: any_str_func,
        ‘outline‘: bool_map,
        ‘shadow‘: bool_map,
        ‘struck_out‘: bool_map,
        ‘underline‘: [bool_map, {‘none‘: 0, ‘single‘: 1, ‘single_acc‘: 0x21, ‘double‘: 2, ‘double_acc‘: 0x22, }],
        },
    ‘pattern‘: {
        ‘back_color‘:   ‘pattern_back_colour‘,
        ‘back_colour‘:  ‘pattern_back_colour‘,
        ‘fore_color‘:   ‘pattern_fore_colour‘,
        ‘fore_colour‘:  ‘pattern_fore_colour‘,
        ‘pattern‘: [pattern_map, IntULim(16)],
        ‘pattern_back_color‘:   ‘pattern_back_colour‘,
        ‘pattern_back_colour‘:  [colour_map, colour_index_func_7],
        ‘pattern_fore_color‘:   ‘pattern_fore_colour‘,
        ‘pattern_fore_colour‘:  [colour_map, colour_index_func_7],
        },
    ‘protection‘: {
        ‘cell_locked‘ :   bool_map,
        ‘formula_hidden‘: bool_map,
        },
    }

这里面给我们定义了很多样式,这些包括是很多文档都没有介绍的,API 文档,官网 github 也都没有给你做出来解释,在stackoverflow,上有了一些介绍,其实也是根据源码来介绍的,在学习python当中我们更多的是要学会去读源码,找到源码的实现逻辑,那么你学起来就是很简单的,下面我们来看看我修改后的代码,

import xlwt
from datetime import datetime
from xlwt import  *  #引入相应的库
style0 = xlwt.easyxf(‘font: name Times New Roman‘,
    num_format_str=‘#,##0.00‘,) #字体的颜色
styleOK = easyxf(‘pattern: fore_colour light_blue;‘
                          ‘font: colour green, bold True;‘)
pattern = xlwt.Pattern()#一个实例化的样式类
pattern.pattern = xlwt.Pattern.SOLID_PATTERN#固定的样式
pattern.pattern_fore_colour = xlwt.Style.colour_map[‘red‘]#背景颜色
styleOK.pattern = pattern
style1 = xlwt.easyxf(num_format_str=‘D-MMM-YY‘)#显示时间定义时间的样式
wb = xlwt.Workbook()
ws = wb.add_sheet(‘测试用‘)
ws.write(0, 0, 1234.56, style0)
ws.write(1, 0, datetime.now(), style1 )
ws.write(2, 0, 1,style=styleOK)
ws.write(2, 1, 1)
ws.write(2, 2, xlwt.Formula("A3+B3"))
wb.save(‘res.xls‘)

  

那么我们来看看生成的Excel表格

感觉到可以规定的样式多了。是不是瞬间能够给你的Excel增加逼格,



import xlwt
from datetime import datetime
from xlwt import  *  #引入相应的库
style0 = xlwt.easyxf(‘font: name Times New Roman‘,
    num_format_str=‘#,##0.00‘,) #字体的颜色
styleOK = easyxf(‘pattern: fore_colour light_blue;‘
                          ‘font: colour green, bold True;‘)
alignment = xlwt.Alignment()#设置居中
alignment.horz = xlwt.Alignment.HORZ_CENTER
alignment.vert = xlwt.Alignment.VERT_CENTER
style0.font.height = 280
style3 = XFStyle()
style3.alignment = alignment  # 给样式添加文字居中属性
style3.font.height = 330  # 设置字体大小
pattern = xlwt.Pattern()#一个实例化的样式类
pattern.pattern = xlwt.Pattern.SOLID_PATTERN#固定的样式
pattern.pattern_fore_colour = xlwt.Style.colour_map[‘red‘]#背景颜色
styleOK.pattern = pattern
style1 = xlwt.easyxf(num_format_str=‘DD-MM-YY‘)#显示时间定义时间的样式
wb = xlwt.Workbook()
ws = wb.add_sheet(‘测试用‘)
for i in  range(6):#定义列宽
    ws.col(i).width = 200*30
ws.write_merge(0, 0,0,5,‘测试报告‘, style3)
ws.write(1, 0,‘测试时间‘, style0 )
ws.write(1, 1, datetime.now(),style1)
ws.write(1, 2,‘测试人‘, style0 )
ws.write(1, 3,‘雷子‘, styleOK)
wb.save(‘res.xls‘)

时间: 2024-12-21 19:22:47

python 读取Excel(二)之xlwt的相关文章

python读取excel文件(xrld模块)

Python读取excel文件 一.python  xlrd模块 安装 mac 下安装python  xlrd模块 http://www.crifan.com/python_read_excel_xls_file_xlrd/comment-page-1/ python setup.py install 在mac 下出现的错误是 http://stackoverflow.com/questions/18199853/error-could-not-create-library-python-2-7

python 读取 excel文件

python读取excel文件的链接都是从这里获取的: http://blog.csdn.net/longshen747/article/details/17194259 http://www.cnblogs.com/yanzhi123/archive/2012/04/16/2452214.html 上个示例的代码: import xml.etree.ElementTree as ETimport xlwtimport os path = "D:/Cai_Bishe/xml/"prin

【转】python操作excel表格(xlrd/xlwt)

[转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究"(用此一词让我觉得颇有成就感)之后,基本解决了日常所需.主要记录使用过程的常见问题及解决. python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库.可从这里下载https://pyp

python读取excel表格生成sql语句 第一版

由于单位设计数据库表·,都用sql.不知道什么原因不用 powerdesign或者ermaster工具,建表很痛苦  作为程序猿当然要想办法解决,用Python写一个程序解决 需要用到 xlrd linux下 sudo pip install xlrd 主要是适用于db2数据库 excel 表结构 其中 number是不正确的字段类型 不知道同事为啥这么设置.这里程序里有纠错,这个程序就是将sql语句拼好. __author__ = 'c3t' # coding:utf-8 import xlr

Python读取excel中的图片

Python读取excel中的图片文件,并转成base64 import sys import os import xlrd import zipfile import base64 class ExcelImgRead(object): def change_file_name(self, file_path, old_name, new_type = '.zip'): """ 修改指定目录下的文件类型名 :param file_path: :param old: :par

利用xlrd模块实现Python读取Excel文档

# -*- coding: cp936 -*- #python读取excel import xlrd def main(): xls=xlrd.open_workbook("d:\\11.xls") try: mysheet=xls.sheet_by_name("Sheet1")#找到名为Sheet1的工作表.区分大小写 except: print("没有此工作表") return print("共有 %d 行, %d 列."

Python 读取 excel 文件

现在大部分数据都是存储在excel中或直接调取数据库,作为刚刚自学Python的小白来说怎么读取文件还是比较懵的,现在对Python读取excel文件进行了一些整理: #coding=utf-8 #cmd中进行安装xlrd库 pip install xlrd import xlrd #文件路径,要用/而不是\ file_path = r'C:/Users/mingli.zhao/Desktop/七天.xlsx' #中文转码 #file_path = file_path.decode('utf-8

Python:读取Excel表格时出现的u&#39;\u51c6’ 无法正确显示汉字

读取Excel后,想显示其中一行的元素,结果读出来是这样[u'\u51c6\u8003\u8bc1\u53f7', u'\u8003\u751f\u59d3\u540d'],始终不显示正常的汉字 依照网上的方法直接print()即可输出,试验后发现确实可以,不过一次只能输出一个元素,多余一个元素则依旧 后查找得知解决方法:需要用到json库 1 import json 2 #……文件的读取略去 3 #json.dumps(A).decode("unicode-escape") 4 #这

Python读取Excel,日期列读出来是数字的处理

Python读取Excel,里面如果是日期,直接读出来是float类型,无法直接使用. 通过判断读取表格的数据类型ctype,进一步处理. 返回的单元格内容的类型有5种: ctype: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error ctype =sheet1.cell(iRow,iCol).ctype 参考示例如下: 1.准备一个Excel文件,文件名Book1.xlsx 从第2行的第1列开始向右,分别是2019年的7月的1.2.3

通过python中xlrd读取excel表格(xlwt写入excel),xlsxwriter写入excel表格并绘制图形

1 import xlrd, xlwt 2 3 #读取excel文件 4 def read_excel(url):#传入源文件读取路径 5 # 获取数据 6 data = xlrd.open_workbook(url) 7 # 获取sheet 8 # table = data.sheet_by_name(sheet_name) #通过sheet名称获取sheet数据 9 table = data.sheet_by_index(0) #通过sheet索引获取sheet数据 10 # 获取总行数 1