python 操作xls 并加样式

操作xls  需要导入三方库

from xlwt import *

单元格内容格式化

font.bold = True # May be: True, False
font.italic = True # May be: True, False
font.struck_out = True # May be: True, False
font.underline = xlwt.Font.UNDERLINE_SINGLE # May be: UNDERLINE_NONE, UNDERLINE_SINGLE, UNDERLINE_SINGLE_ACC, UNDERLINE_DOUBLE, UNDERLINE_DOUBLE_ACC
font.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT # May be: ESCAPEMENT_NONE, ESCAPEMENT_SUPERSCRIPT, ESCAPEMENT_SUBSCRIPT
font.family = xlwt.Font.FAMILY_ROMAN # May be: FAMILY_NONE, FAMILY_ROMAN, FAMILY_SWISS, FAMILY_MODERN, FAMILY_SCRIPT, FAMILY_DECORATIVE
font.charset = xlwt.Font.CHARSET_ANSI_LATIN # May be: 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.colour_index = ?
font.get_biff_record = ?
font.height = 0x00C8 # C8 in Hex (in decimal) = 10 points in height.
font.name = ?
font.outline = ?

font.shadow = ?

设置单元格宽度

import xltw
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0, 'My Cell Contents')
worksheet.col(0).width = 3333 # 3333 = 1" (one inch).

workbook.save('Excel_Workbook.xls')

单元格添加超链接

import xlwt

workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0, xlwt.Formula('HYPERLINK("http://www.google.com";"Google")')) # Outputs the text "Google" linking to http://www.google.com

workbook.save('Excel_Workbook.xls')

合并单元格

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write_merge(0, 0, 0, 3, 'First Merge') # Merges row 0's columns 0 through 3.
font = xlwt.Font() # Create Font
font.bold = True # Set font to Bold
style = xlwt.XFStyle() # Create Style
style.font = font # Add Bold Font to Style
worksheet.write_merge(1, 2, 0, 3, 'Second Merge', style) # Merges row 1 through 2's columns 0 through 3.

workbook.save('Excel_Workbook.xls')

example:根据单元格数据设置底纹(监控)

# 给xls单元格加底纹
def changeColor(self,fields,results,outputpath):
    workbook = Workbook(encoding='utf-8')
    sheet_name='monitor'
    sheet = workbook.add_sheet(sheet_name, cell_overwrite_ok=True)
    pattern=Pattern()
    fnt=Font()
    style=XFStyle()
    fnt.bold=True
    style.font=fnt
    pattern.pattern=Pattern.SOLID_PATTERN
    pattern.pattern_fore_colour=23
    style.pattern = pattern
    for field in range(0, len(fields)):
        # pattern.pattern_fore_colour=22
        # style.pattern=pattern
        sheet.write(0, field, fields[field][0],style)

    row=1
    col=0
    for row in range(1, len(results) + 1):
        for col in range(0, len(fields)):
            pattern=Pattern()
            #borders=Borders()
            #borders.right=Borders.THIN
            #borders.top=Borders.THIN
            #borders.bottom=Borders.THIN
            #borders.left_colour=0x40
            #borders.right_colour=0x40
            #borders.top_colour=0x40
            #borders.bottom_colour=0x40
            style=XFStyle()
            #style.borders=borders
            pattern.pattern=Pattern.SOLID_PATTERN
            # 判断是否为字符串
            if (isinstance(results[row - 1][col], basestring)):
                # 判断字符串内是否包含‘%’
                if "%" in results[row - 1][col]:
                    a=float(results[row - 1][col].strip('%')) / 100

                    # 设置单元格背景颜色 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow,,,,
                    pattern.pattern_fore_colour=2
                    style.pattern=pattern
                    # 判断超过90%的显示红色
                    if (a >= 0.80):
                        #print a
                        sheet.write(row, col, u'%s' % results[row - 1][col], style)
                    # 80%~90% 的显示黄色
                    elif (0.6 < a < 0.8):
                        pattern.pattern_fore_colour=5
                        style.pattern=pattern
                        sheet.write(row, col, u'%s' % results[row - 1][col], style)
                    # 其余绿色显示
                    else:
                        pattern.pattern_fore_colour=3
                        style.pattern=pattern
                        sheet.write(row, col, u'%s' % results[row - 1][col], style)
                else:
                    pattern.pattern_fore_colour = 22
                    style.pattern=pattern
                    sheet.write(row, col, u'%s' % results[row - 1][col])
            else:
                pattern.pattern_fore_colour=22
                style.pattern=pattern
                sheet.write(row, col, u'%s' % results[row - 1][col])

    workbook.save(outputpath)


猜你喜欢

转载自blog.csdn.net/qq_24027457/article/details/80624723