python xlwt 写入Excel
简介:将数据写入Microsoft Excel中,可使用xlwt,其官网:https://pypi.org/project/xlwt/安装命令:pip/pip3 install xlwt简单的应用如下:#!/usr/bin/python# -*- coding: UTF-8 -*-import xlwt# 添加设置默认编码,避免:UnicodeEncodeError: '...
·
简介:
将数据写入Microsoft Excel中,可使用xlwt,其官网:xlwt · PyPI
安装命令:
pip/pip3 install xlwt
简单的应用如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import xlwt
# 添加设置默认编码,避免:UnicodeEncodeError: 'ascii' codec can't encode characters ...
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
# 样式相关
def CreateStyle(rowx, colx, value):
# 初始化样式
style = xlwt.XFStyle()
font = xlwt.Font() # 设置字体
alignment = xlwt.Alignment() # 设置排列格式
borders = xlwt.Borders() # 设置边框
pattern = xlwt.Pattern() # 设置背景颜色
if rowx == 0:
font.name = u'华文彩云'
elif rowx == 1:
if colx%2 == 0:
font.bold = True
else:
font.italic = True
elif rowx == 2:
pattern.pattern_fore_colour = colx
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
elif rowx == 3:
alignment.horz = xlwt.Alignment.HORZ_CENTER # 水平居中
alignment.vert = xlwt.Alignment.VERT_CENTER # 垂直居中
elif rowx == 4:
borders.left = colx
borders.top = colx
borders.bottom = colx
if colx%2 == 0:
borders.right = xlwt.Borders.THICK
else:
borders.right = xlwt.Borders.THIN
# 定义格式
style.font = font
style.borders = borders
style.alignment = alignment
style.pattern = pattern
return style
def CreateNewExcel():
# 创建新的excel
newbook = xlwt.Workbook(encoding='utf-8')
# 创建新的Sheet
newSheet = newbook.add_sheet('NewSheet')
# 写入内容
for rowx in range(0,10):
for colx in range(0,10):
r = rowx # 行位置
c = colx # 列位置
label = str(colx) # 内容
style = CreateStyle(r, c, label) # 样式
newSheet.write(r, c, label, style)
#保存excel,保存格式以.xls为准,若保存.xlsx的话,打开文件会报错
newbook.save('NewExcel.xls')
if __name__ == '__main__':
CreateNewExcel()
加粗部分为主体代码,其效果如下:

对于写入单元格的样式主要有如下几种:
| 样式 | 介绍 |
| font | 对字体进行操作,比如字体的类型,颜色,大小,是否为加粗等 |
| alignment | 对齐方式,比如水平居中,垂直居中等 |
| borders | 边框,是否添加实线或虚线等 |
| pattern | 背景颜色相关 |
| protection | 保护模式相关??? |
可参考:xlwt/Formatting.py
接下来我们一一说明下,为了节省篇幅仅粘贴主体代码:
font
# 样式相关
def CreateFontStyle(rowx, colx, value):
# 初始化样式
style = xlwt.XFStyle()
# 设置字体
font = xlwt.Font()
font.name = 'Airal' # 字体类型,类型参考Excel字体,若为汉字,注意添加u格式
font.bold = True # 是否加粗
font.italic = True # 是否为斜体
font.struck_out = True # 是否添加删除线
font.height = 0x00C8 # 文字高度
font.outline = False #
font.shadow = False #
font.colour_index = 0x7FF # 文字颜色,可参考下方颜色编码
font._weight = 0x0190 #
# 下划线相关,主要为:无,单下划线,双下划线
# 类型: UNDERLINE_NONE UNDERLINE_SINGLE UNDERLINE_SINGLE_ACC UNDERLINE_DOUBLE UNDERLINE_DOUBLE_ACC
font.underline = xlwt.Font.UNDERLINE_SINGLE
# 类型有:ESCAPEMENT_NONE, ESCAPEMENT_SUPERSCRIPT, ESCAPEMENT_SUBSCRIPT
font.escapement = xlwt.Font.ESCAPEMENT_NONE
# 类型有:FAMILY_NONE, FAMILY_ROMAN, FAMILY_SWISS, FAMILY_MODERN, FAMILY_SCRIPT, FAMILY_DECORATIVE
font.family = xlwt.Font.FAMILY_NONE
# 类型有:CHARSET_ANSI_LATIN, CHARSET_SYS_DEFAULT, CHARSET_SYMBOL, CHARSET_APPLE_ROMAN, CHARSET_ANSI_JAP_SHIFT_JIS,
# CHARSET_ANSI_KOR_HANGUL, CHARSET_ANSI_KOR_JOHAB, CHARSET_ANSI_CHINESE_GBK, CHARSET_ANSI_CHINESE_BIG5,
# CHARSET_ANSI_GREEK, CHARSET_ANSI_TURKISH, CHARSET_ANSI_VIETNAMESE, CHARSET_ANSI_HEBREW, CHARSET_ANSI_ARABIC,
# CHARSET_ANSI_BALTIC, CHARSET_ANSI_CYRILLIC, CHARSET_ANSI_THAI, CHARSET_ANSI_LATIN_II, CHARSET_OEM_LATIN_I
font.charset = xlwt.Font.CHARSET_SYS_DEFAULT
# 定义格式
style.font = font
return style

alignment
def CreateAlignmentStyle(rowx, colx, value):
# 初始化样式
style = xlwt.XFStyle()
# 设置排列样式
alignment = xlwt.Alignment()
alignment.inde = 0 #
alignment.merg = 0 #
# 水平相关
# 类型: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED,
# HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.horz = xlwt.Alignment.HORZ_CENTER
# 垂直相关
# 类型:VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER
# 类型: DIRECTION_GENERAL, DIRECTION_LR, DIRECTION_RL
alignment.dire = xlwt.Alignment.DIRECTION_GENERAL
# 类型: ORIENTATION_NOT_ROTATED, ORIENTATION_STACKED, ORIENTATION_90_CC, ORIENTATION_90_CW
alignment.orie = xlwt.Alignment.ORIENTATION_NOT_ROTATED
# 类型: ROTATION_0_ANGLE, ROTATION_STACKED
alignment.rota = xlwt.Alignment.ROTATION_0_ANGLE
# 类型: WRAP_AT_RIGHT, NOT_WRAP_AT_RIGHT
alignment.wrap = xlwt.Alignment.NOT_WRAP_AT_RIGHT
# 类型: SHRINK_TO_FIT, NOT_SHRINK_TO_FIT
alignment.shri = xlwt.Alignment.NOT_SHRINK_TO_FIT
style.alignment = alignment
return style

borders
def CreateBorderStype(rowx, colx, value):
# 初始化样式
style = xlwt.XFStyle()
# 设置边框
borders = xlwt.Borders()
# 样式相关
# 类型: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR
borders.left = xlwt.Borders.NO_LINE #
borders.right = xlwt.Borders.THIN #
borders.top = xlwt.Borders.MEDIUM #
borders.bottom = xlwt.Borders.DASHED #
borders.diag = xlwt.Borders.THICK #
# 颜色相关,可参考末尾的颜色相关
borders.left_colour = 0x40
borders.right_colour = 0x40
borders.top_colour = 0x40
borders.bottom_colour = 0x40
borders.diag_colour = 0x40
# 类型: NEED_DIAG1, NEED_DIAG2, NO_NEED_DIAG1, NO_NEED_DIAG2
borders.need_diag1 = xlwt.Borders.NO_NEED_DIAG1 #
borders.need_diag2 = xlwt.Borders.NO_NEED_DIAG2 #
style.borders = borders
return style

pattern
def CreatePatternStype(rowx, colx, value):
# 初始化样式
style = xlwt.XFStyle()
# 设置边框
pattern = xlwt.Pattern()
# 模式相关,类型: NO_PATTERN, SOLID_PATTERN
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 1 #
pattern.pattern_back_colour = 2 #
style.pattern = pattern
return style
protection
def CreatePatternStype(rowx, colx, value):
# 初始化样式
style = xlwt.XFStyle()
# 设置边框
protection = xlwt.Protection()
protection.cell_locked = 1
protection.formula_hidden = 0
style.protection = protection
return style

以上,关于颜色的设定,可参考:xlwt/Style.py 下的第307~372行,可使用数据或索引进行颜色设定:
| 名称 | 数据 | 索引 | 注释 | 名称 | 数据 | 索引 | 注释 |
| black | 0x08 | 8 | 黑色 | light_blue | 0x30 | 48 | 亮蓝色 |
| blue | 0x0C | 12 | 蓝色 | light_green | 0x2A | 42 | 亮绿色 |
| blue_gray | 0x36 | 54 | 蓝绿色 | light_orange | 0x34 | 52 | 亮橙色 |
| bright_green | 0x0B | 11 | 鲜绿色 | light_turquoise | 0x29 | 41 | 亮青绿色 |
| brown | 0x3C | 60 | 棕色 | light_yellow | 0x2B | 43 | 亮黄色 |
| coral | 0x1D | 29 | 珊瑚色 | lime | 0x32 | 50 | 石灰色 |
| dark_blue | 0x12 | 18 | 深蓝色 | ocean_blue | 0x1E | 30 | 海洋蓝 |
| dark_blue_ega | 0x12 | 18 | 深蓝色 | olive_ega | 0x13 | 19 | 黄棕色 |
| dark_green | 0x3A | 58 | 深绿色 | olive_green | 0x3B | 59 | 黄棕绿 |
| dark_purple | 0x1C | 28 | 深紫色 | orange | 0x35 | 53 | 橙色 |
| dark_red | 0x10 | 16 | 深红色 | pale_blue | 0x2C | 44 | 淡蓝色 |
| dark_red_ega | 0x10 | 16 | 深红色 | periwinkle | 0x18 | 24 | 浅紫光蓝色 |
| dark_yellow | 0x31 | 49 | 深黄色 | pink | 0x0E | 14 | 粉红色 |
| gold | 0x33 | 51 | 金色 | plum | 0x3D | 61 | 紫红色 |
| gray_ega | 0x17 | 23 | 灰色 | red | 0x0A | 10 | 红色 |
| gray25 | 0x16 | 22 | 灰色25 | rose | 0x2D | 45 | 玫瑰色 |
| gray40 | 0x37 | 55 | 灰色40 | sea_green | 0x39 | 57 | 海洋绿 |
| gray50 | 0x17 | 23 | 灰色50 | sky_blue | 0x28 | 40 | 天空蓝 |
| gray80 | 0x3F | 63 | 灰色80 | tan | 0x2F | 47 | 棕褐色 |
| green | 0x11 | 17 | 绿色 | teal | 0x15 | 21 | 青色 |
| ice_blue | 0x1F | 31 | 冰蓝色 | turquoise | 0x0F | 15 | 青绿色 |
| indigo | 0x3E | 62 | 靛蓝色 | violet | 0x14 | 20 | 紫罗兰色 |
| ivory | 0x1A | 26 | 乳白色 | white | 0x09 | 9 | 白色 |
| lavender | 0x2E | 46 | 淡紫色 | yellow | 0x0D | 13 | 黄色 |
更多推荐



所有评论(0)