python xlwt 写入Excel

简介:

将数据写入Microsoft Excel中,可使用xlwt,其官网:https://pypi.org/project/xlwt/

安装命令:

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,总结了一些常用颜色:

红色 0x0A      粉红色 0x0E    深红色 0x10    黑色 0x08      白色 0x09      紫罗兰色 0x14 
蓝色 0x0C      蓝绿色 0x36    深蓝绿 0x12    冰蓝色 0x1F    浅蓝色 0x30     深蓝色 0x12 
鲜绿色 0x0B    青绿色 0x0F    绿色 0x11      深绿色 0x3A    浅绿色 0x2A     橄榄绿 0x3B
浅黄色 0x2B    深黄色 0x13    黄色 0x0D      青色 0x15      石灰色 0x32     珊瑚色 0x1D   
灰色25 0x16   灰色40 0x37    灰色50 0x17    灰色80 0x3F    棕色 0x3C       深紫色 0x1C 
天空蓝 0x28    棕褐色 0x2F    金色 0x33      橙色 0x35      浅橙色 0x34     海洋蓝 0x1E   
玫瑰色 0x2D 

猜你喜欢

转载自www.cnblogs.com/SkyflyBird/p/11822007.html