python xlwtモジュールの使用解析

25049 ワード

一、基礎類の紹介
1、ブック類のWorkbook概要:

import xlwt
class  Workbook(object0):
    '''
        ,  xlwt  excel   ,           
    '''
     def __init__(self, encoding='ascii', style_compression=0):
        pass

    def add_sheet(self,sheetname, cell_overwrite_ok=False):
        '''
                  
        :param sheetname:       
        :param cell_overwrite_ok:     True,              (   ),           ,    False          。
        :return:          (   Worksheet()  )
        '''
        pass
    def save(self,filename_or_stream):
        '''
            Excel       
        :param filename_or_stream:Excel    
        :return:
        '''
        pass
2、ワークシート類Work Sheet概要

class Worksheet(object):
    '''
        
    '''
    def __init__(self, sheetname, parent_book, cell_overwrite_ok=False):
        '''
                
        :param sheetname:     
        :param parent_book:      
        :param cell_overwrite_ok:      (   True        , False         )
        '''
        pass

    def write(self, r, c, label="", style=xlwt.Style.default_style):
        '''
                     
        :param r: row   ,   , 0    。
        :param c: column   ,   , 0    。
        :param label:      (       :int,long,float,   ,  ,TRUE,FALSE,xlwt.Formula )
        :param style:    (   :Font, Alignment, Borders, Pattern, Protection。    :easyxf, easyfont, add_palette_colour)
        :return:
        '''
        pass
3、スタイルを持たない基本エクセル表を作成します。

import xlwt
#           
workbook = xlwt.Workbook(encoding = 'utf-8')

#        Worksheet
worksheet = workbook.add_sheet('work_sheet')

#          (      ,  ,  )
for i in range(3):
    for j in range(3):
        worksheet.write(i,j, label = 'test_' + str(j),)

#        
workbook.save(r'i:\Excel_test.xls')
最終的には下の図のように見えます。

二、xlwt高級アプリケーション
フォントのサイズ、フォントの色、太字、斜体、フォントの下線、取り消し線などを設定します。
Alignment:フォントの水平方向と垂直方向の配置、テキストの改行、インデント、方向/回転、テキストの方向などを設定します。
Border:テーブルの外枠の設定。
Background:セルの背景色。
1、フォントクラスのFontプロファイル

class Font(object):

    def __init__(self):
        # twip = 1/20 of a point = 1/1440 of a inch
        # usually resolution == 96 pixels per 1 inch
        # (rarely 120 pixels per 1 inch or another one)

        self.height = 0x00C8 # 200: this is font with height 10 points     
        self.italic = False      #   
        self.struck_out = False  #    
        self.outline = False     #     (        )
        self.shadow = False      #     
        self.colour_index = 0x7FFF  #            ,    ,   0x00 0x35     ,          ,      0xFFFF     。
        self.bold = False  #   
        self._weight = 0x0190 # 0x02BC gives bold font  #     
        self.escapement = self.ESCAPEMENT_NONE  #         ,0x00  ,0x01    ,0x02    。
        self.underline = self.UNDERLINE_NONE  #          ,0x01    ,0x02 0x01   ,0x21    ,0x02 0x21   
        self.family = self.FAMILY_NONE        #        ,    ,0x01    ,0x02    ,0x03    ,0x04    ,0x05    
        self.charset = self.CHARSET_SYS_DEFAULT  #    ,     
                                CHARSET_ANSI_LATIN          = 0x00
                                CHARSET_SYS_DEFAULT         = 0x01
                                CHARSET_SYMBOL              = 0x02
                                CHARSET_APPLE_ROMAN         = 0x4D
                                CHARSET_ANSI_JAP_SHIFT_JIS  = 0x80
                                CHARSET_ANSI_KOR_HANGUL     = 0x81
                                CHARSET_ANSI_KOR_JOHAB      = 0x82
                                CHARSET_ANSI_CHINESE_GBK    = 0x86
                                CHARSET_ANSI_CHINESE_BIG5   = 0x88
                                CHARSET_ANSI_GREEK          = 0xA1
                                CHARSET_ANSI_TURKISH        = 0xA2
                                CHARSET_ANSI_VIETNAMESE     = 0xA3
                                CHARSET_ANSI_HEBREW         = 0xB1
                                CHARSET_ANSI_ARABIC         = 0xB2
                                CHARSET_ANSI_BALTIC         = 0xBA
                                CHARSET_ANSI_CYRILLIC       = 0xCC
                                CHARSET_ANSI_THAI           = 0xDE
                                CHARSET_ANSI_LATIN_II       = 0xEE
                                CHARSET_OEM_LATIN_I         = 0xFF
        self.name = 'Arial'  #   
1.1標準フォントスタイルを変更するExcelを作成します。

import xlwt
#           
workbook = xlwt.Workbook(encoding = 'utf-8')

#        Worksheet
worksheet = workbook.add_sheet('work_sheet')

#          
xstyle = xlwt.XFStyle()

#       
xfont = xlwt.Font()
xfont.colour_index = 0x04  #       
xfont.bold = True          #     
xfont.height = 20 * 18     #       (20     ,18         )
xfont.underline = 0x01     #         
xfont.name = '    '     #     

#             
xstyle.font = xfont

for i in range(3):
    for j in range(3):
        #          (      ,  ,  ,  )
        worksheet.write(i,j, label = 'test_' + str(j),style=xstyle)

#        
workbook.save(r'i:\2.xls')
すべてがうまくいけば、2.xlsを開けば、次のように見えます。

2、 Alignment類概要

class Alignment(object):
    #       
    HORZ_GENERAL                = 0x00  #     
    HORZ_LEFT                   = 0x01  #    
    HORZ_CENTER                 = 0x02  #   
    HORZ_RIGHT                  = 0x03  #    
    HORZ_FILLED                 = 0x04  #      
    HORZ_JUSTIFIED              = 0x05  #         
    HORZ_CENTER_ACROSS_SEL      = 0x06  # Centred across selection                  ,      0x02                 
    HORZ_DISTRIBUTED            = 0x07  # Distributed                 ,               。

    #     
    VERT_TOP                    = 0x00  #         
    VERT_CENTER                 = 0x01  #       
    VERT_BOTTOM                 = 0x02  #         
    VERT_JUSTIFIED              = 0x03  # Justified (BIFF5-BIFF8X)        
    VERT_DISTRIBUTED            = 0x04  # Distributed (BIFF8X)        ,                  

    #     (      )
    DIRECTION_GENERAL           = 0x00  # BIFF8X      
    DIRECTION_LR                = 0x01
    DIRECTION_RL                = 0x02

    ORIENTATION_NOT_ROTATED     = 0x00
    ORIENTATION_STACKED         = 0x01
    ORIENTATION_90_CC           = 0x02
    ORIENTATION_90_CW           = 0x03

    ROTATION_0_ANGLE            = 0x00
    ROTATION_STACKED            = 0xFF  #         

    WRAP_AT_RIGHT               = 0x01  #     
    NOT_WRAP_AT_RIGHT           = 0x00  #        

    SHRINK_TO_FIT               = 0x01  #              
    NOT_SHRINK_TO_FIT           = 0x00  #       

    def __init__(self):
        self.horz = self.HORZ_GENERAL   #     ,       
        self.vert = self.VERT_BOTTOM    #     ,          
        self.dire = self.DIRECTION_GENERAL
        self.orie = self.ORIENTATION_NOT_ROTATED
        self.rota = self.ROTATION_0_ANGLE   
        self.wrap = self.NOT_WRAP_AT_RIGHT  #                      ,     
        self.shri = self.NOT_SHRINK_TO_FIT  #                                ,       。
        self.inde = 0
        self.merg = 0
2.1以下は小さな例です。

import xlwt
#           
workbook = xlwt.Workbook(encoding = 'utf-8')

#        Worksheet
worksheet = workbook.add_sheet('work_sheet')
#          
xstyle = xlwt.XFStyle()

#       
xfont = xlwt.Font()
xfont.colour_index = 0x04  #       
xfont.bold = True          #     
xfont.height = 20 * 18     #       (20     ,18         )
xfont.name = '  '         #     
 #             
xalig = xlwt.Alignment()
xalig.horz = 0x02   #       
xalig.vert = 0x01   #       

#             
xstyle.font = xfont
xstyle.alignment = xalig
for i in range(3):
    for j in range(3):
        #          (      ,  ,  ,  )
        worksheet.write(i,j, label = 'test_'+str(j),style=xstyle)

#        
workbook.save(r'i:\2.xls')
すべてがうまくいけば、次のように見えます。

3、Border類概要

class Borders(object):
    NO_LINE = 0x00   #    
    THIN    = 0x01   #    
    MEDIUM  = 0x02   #      
    DASHED  = 0x03   #     
    DOTTED  = 0x04   #          
    THICK   = 0x05   #    
    DOUBLE  = 0x06   #     
    HAIR    = 0x07   #       
    #The following for BIFF8
    MEDIUM_DASHED               = 0x08   #     
    THIN_DASH_DOTTED            = 0x09   #    
    MEDIUM_DASH_DOTTED          = 0x0A   #        
    THIN_DASH_DOT_DOTTED        = 0x0B   #    
    MEDIUM_DASH_DOT_DOTTED      = 0x0C   #      
    SLANTED_MEDIUM_DASH_DOTTED  = 0x0D   #         

    NEED_DIAG1      = 0x01
    NEED_DIAG2      = 0x01
    NO_NEED_DIAG1   = 0x00
    NO_NEED_DIAG2   = 0x00

    def __init__(self):
        #     
        self.left   = self.NO_LINE
        self.right  = self.NO_LINE
        self.top    = self.NO_LINE
        self.bottom = self.NO_LINE
        self.diag   = self.NO_LINE   #        

        #       
        self.left_colour   = 0x40
        self.right_colour  = 0x40
        self.top_colour    = 0x40
        self.bottom_colour = 0x40
        self.diag_colour   = 0x40

        #        
        self.need_diag1 = self.NO_NEED_DIAG1
        self.need_diag2 = self.NO_NEED_DIAG2
3.1下は枠線の小さい例です。

import xlwt
#           
workbook = xlwt.Workbook(encoding = 'utf-8')

#        Worksheet
worksheet = workbook.add_sheet('work_sheet')
#          
xstyle = xlwt.XFStyle()

#       
xfont = xlwt.Font()
xfont.colour_index = 0x04  #       
xfont.bold = True          #     
xfont.height = 20 * 18     #       (20     ,18         )
xfont.name = '  '        #     
 #             
xalig = xlwt.Alignment()
xalig.horz = 0x02   #       
xalig.vert = 0x01   #       

#     
xborder = xlwt.Borders()
#     ,   
xborder.left = 0x0d
xborder.top = 0x0d
xborder.right = 0x0d
xborder.bottom = 0x0d
#     
xborder.bottom_colour = 0x35
xborder.top_colour = 0x8
xborder.left_colour = 0x012
xborder.right_colour = 0x4

#     
xstyle.font = xfont
xstyle.alignment = xalig
xstyle.borders = xborder
for i in range(3):
    for j in range(3):
        #          (      ,  ,  ,  )
        worksheet.write(i,j, label = 'test_'+str(j),style=xstyle)

#        
workbook.save(r'i:\2.xls')
最終的に次のように見えます。

4、背景類Background概要

class Pattern(object):
    # patterns 0x00 - 0x12
    NO_PATTERN      = 0x00
    SOLID_PATTERN   = 0x01

    def __init__(self):
        self.pattern = self.NO_PATTERN   #       ,        ,pattern_fore_colour pattern_back_colour    
        self.pattern_fore_colour = 0x40  #              
        self.pattern_back_colour = 0x41  #            
4.1以下では、小さい例を示します。

import xlwt
#           
workbook = xlwt.Workbook(encoding = 'utf-8')

#        Worksheet
worksheet = workbook.add_sheet('work_sheet')
#          
xstyle = xlwt.XFStyle()

#       
xfont = xlwt.Font()
xfont.colour_index = 0x04  #       
xfont.bold = True          #     
xfont.height = 20 * 18     #       (20     ,18         )
xfont.name = '  '        #     
 #             
xalig = xlwt.Alignment()
xalig.horz = 0x02   #       
xalig.vert = 0x01   #       

#     
xborder = xlwt.Borders()
#     ,   
xborder.left = 0x0d
xborder.top = 0x0d
xborder.right = 0x0d
xborder.bottom = 0x0d
#     
xborder.bottom_colour = 0x35
xborder.top_colour = 0x8
xborder.left_colour = 0x012
xborder.right_colour = 0x4
#        
xpattern = xlwt.Pattern()
xpattern.pattern = 0x01
xpattern.pattern_fore_colour = 0x05
#     
xstyle.font = xfont
xstyle.alignment = xalig
xstyle.borders = xborder
xstyle.pattern = xpattern
for i in range(3):
    for j in range(3):
        #          (      ,  ,  ,  )
        worksheet.write(i,j, label = 'test_'+str(j),style=xstyle)

#        
workbook.save(r'i:\2.xls')
最終的には下の図のように見えます。

上記は簡単にxlwtの基本的な方法を紹介しただけで、まだ多くの方法機能が挙げられていないので、ここでは一つ一つ列挙しません。興味のある仲間は自分でソースを見て自分の欲しい機能を実現します。
三、いくつかのよく使う方法の紹介
1、セルの行の高さ、列の幅を設定します。
現在は良い方法が見つかりませんでした。列ごとに設定するしかありません。コードは以下の通りです

import xlwt
#           
workbook = xlwt.Workbook(encoding = 'utf-8')

#        Worksheet
worksheet = workbook.add_sheet('work_sheet')
#          
xstyle = xlwt.XFStyle()

#       
xfont = xlwt.Font()
xfont.colour_index = 0x04  #       
xfont.bold = True          #     
xfont.height = 20 * 18     #       (20     ,18         )
xfont.name = '  '        #     
 #             
xalig = xlwt.Alignment()
xalig.horz = 0x02   #       
xalig.vert = 0x01   #       

#     
xborder = xlwt.Borders()
#     ,   
xborder.left = 0x0d
xborder.top = 0x0d
xborder.right = 0x0d
xborder.bottom = 0x0d
#     
xborder.bottom_colour = 0x35
xborder.top_colour = 0x8
xborder.left_colour = 0x012
xborder.right_colour = 0x4
#        
xpattern = xlwt.Pattern()
xpattern.pattern = 0x01
xpattern.pattern_fore_colour = 0x05

#     
xstyle.font = xfont
xstyle.alignment = xalig
xstyle.borders = xborder
xstyle.pattern = xpattern

for i in range(3):
    #     
    worksheet.row(i).height_mismatch = True
    worksheet.row(i).height = 20 * 30  # 20   *30     
    for j in range(3):
        #          (      ,  ,  ,  )
        data = 'test_'+str(j)
        worksheet.col(j).width = 256 * len(data) * 2  #     ,     :256      *     *2                  。
        worksheet.write(i,j, label = data,style=xstyle)

#        
workbook.save(r'i:\2.xls')
最終的には次のような効果が見られます。

2、セルに日付を表示します。コードは以下の通りです。

import xlwt
import datetime
#           
workbook = xlwt.Workbook(encoding = 'utf-8')

#        Worksheet
worksheet = workbook.add_sheet('work_sheet')
#          
xstyle = xlwt.XFStyle()

#       
xfont = xlwt.Font()
xfont.colour_index = 0x04  #       
xfont.bold = True          #     
xfont.height = 20 * 18     #       (20     ,18         )
xfont.name = '  '        #     
 #             
xalig = xlwt.Alignment()
xalig.horz = 0x02   #       
xalig.vert = 0x01   #       

#     
xborder = xlwt.Borders()
#     ,   
xborder.left = 0x0d
xborder.top = 0x0d
xborder.right = 0x0d
xborder.bottom = 0x0d
#     
xborder.bottom_colour = 0x35
xborder.top_colour = 0x8
xborder.left_colour = 0x012
xborder.right_colour = 0x4
#        
xpattern = xlwt.Pattern()
xpattern.pattern = 0x01
xpattern.pattern_fore_colour = 0x05

#     
xstyle.font = xfont
xstyle.alignment = xalig
xstyle.borders = xborder
xstyle.pattern = xpattern
xstyle.num_format_str = 'M/D/YY'  #       ,             ,     。

for i in range(3):
    #     
    worksheet.row(i).height_mismatch = True
    worksheet.row(i).height = 20 * 30  # 20   *30     
    for j in range(3):
        #          (      ,  ,  ,  )
        data = datetime.datetime.now()   #       
        worksheet.col(j).width = 256 * len(data.strftime('%Y-%m-%d')) * 2  #      :256      *     *2                  。
        worksheet.write(i,j, label = data,style=xstyle)

#        
workbook.save(r'i:\2.xls')
もしすべてがうまくいけば、次のようになります。

財務またはその他の日時、小数、科学カウントなどの表示形式については、以下のオプションを参照してください。

_std_num_fmt_list = [
            'general',     #       ,    。
            '0',
            '0.00',
            '#,##0',
            '#,##0.00',
            '"$"#,##0_);("$"#,##0)',
            '"$"#,##0_);[Red]("$"#,##0)',
            '"$"#,##0.00_);("$"#,##0.00)',
            '"$"#,##0.00_);[Red]("$"#,##0.00)',
            '0%',
            '0.00%',
            '0.00E+00',
            '# ?/?',
            '# ??/??',
            'M/D/YY',      #         
            'D-MMM-YY',
            'D-MMM',
            'MMM-YY',
            'h:mm AM/PM',
            'h:mm:ss AM/PM',
            'h:mm',
            'h:mm:ss',
            'M/D/YY h:mm',
            '_(#,##0_);(#,##0)',
            '_(#,##0_);[Red](#,##0)',
            '_(#,##0.00_);(#,##0.00)',
            '_(#,##0.00_);[Red](#,##0.00)',
            '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',
            '_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',
            '_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',
            '_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',
            'mm:ss',
            '[h]:mm:ss',
            'mm:ss.0',
            '##0.0E+0',
            '@'
    ]
xstyle.num_format_str = 'M/D/YY'  #                      。
3、Excelテーブルに数式を挿入すると、コードは以下の通りです。

import xlwt
#           
workbook = xlwt.Workbook(encoding = 'utf-8')

#        Worksheet
worksheet = workbook.add_sheet('work_sheet')
#          
xstyle = xlwt.XFStyle()

#       
xfont = xlwt.Font()
xfont.colour_index = 0x04  #       
xfont.bold = True          #     
xfont.height = 20 * 18     #       (20     ,18         )
xfont.name = '  '        #     
 #             
xalig = xlwt.Alignment()
xalig.horz = 0x02   #       
xalig.vert = 0x01   #       

#     
xborder = xlwt.Borders()
#     ,   
xborder.left = 0x0d
xborder.top = 0x0d
xborder.right = 0x0d
xborder.bottom = 0x0d
#     
xborder.bottom_colour = 0x35
xborder.top_colour = 0x8
xborder.left_colour = 0x012
xborder.right_colour = 0x4
#        
xpattern = xlwt.Pattern()
xpattern.pattern = 0x01
xpattern.pattern_fore_colour = 0x05

#     
xstyle.font = xfont
xstyle.alignment = xalig
xstyle.borders = xborder
xstyle.pattern = xpattern


for i in range(3):
    #     
    worksheet.row(i).height_mismatch = True
    worksheet.row(i).height = 20 * 30  # 20   *30     
    for j in range(3):
        #          (      ,  ,  ,  )
        worksheet.write(i,j, label = int(j)+1,style=xstyle)
#     
worksheet.row(3).height_mismatch = True
worksheet.row(3).height = 20 * 30  # 20   *30     
worksheet.write(3,0, label = xlwt.Formula('SUM(A1:A3)'),style=xstyle)  #     
worksheet.write(3,1, label = xlwt.Formula('B1*B2*B3'),style=xstyle)    #    
worksheet.write(3,2, label = xlwt.Formula('AVERAGE(C1:C3)'),style=xstyle)  #     

#        
workbook.save(r'i:\2.xls')
最終的には次のような効果が見られます。

4、テーブルにハイパーリンクを挿入します。コードは以下の通りです。

import xlwt
#           
workbook = xlwt.Workbook(encoding = 'utf-8')

#        Worksheet
worksheet = workbook.add_sheet('work_sheet')
#          
xstyle = xlwt.XFStyle()

#       
xfont = xlwt.Font()
xfont.colour_index = 0x04  #       
xfont.bold = True          #     
xfont.height = 20 * 18     #       (20     ,18         )
xfont.name = '  '        #     
 #             
xalig = xlwt.Alignment()
xalig.horz = 0x02   #       
xalig.vert = 0x01   #       

#     
xborder = xlwt.Borders()
#     ,   
xborder.left = 0x0d
xborder.top = 0x0d
xborder.right = 0x0d
xborder.bottom = 0x0d
#     
xborder.bottom_colour = 0x35
xborder.top_colour = 0x8
xborder.left_colour = 0x012
xborder.right_colour = 0x4
#        
xpattern = xlwt.Pattern()
xpattern.pattern = 0x01
xpattern.pattern_fore_colour = 0x05

#     
xstyle.font = xfont
xstyle.alignment = xalig
xstyle.borders = xborder
xstyle.pattern = xpattern

#     
worksheet.row(0).height_mismatch = True
worksheet.row(0).height = 20 * 30  # 20   *30     
a_data = 'HYPERLINK("http://www.baidu.com";"baidu")'   #       ,'baidu'  Excel     。
worksheet.col(0).width = 256 * len(a_data) * 2 #        
worksheet.write(0,0, label = xlwt.Formula(a_data),style=xstyle)  #      

#        
workbook.save(r'i:\2.xls')
すべてがうまくいけば、次のように見えます。

5、カラーマップについては以下の通りです。

_colour_map_text = """\
aqua 0x31
black 0x08
blue 0x0C
blue_gray 0x36
bright_green 0x0B
brown 0x3C
coral 0x1D
cyan_ega 0x0F
dark_blue 0x12
dark_blue_ega 0x12
dark_green 0x3A
dark_green_ega 0x11
dark_purple 0x1C
dark_red 0x10
dark_red_ega 0x10
dark_teal 0x38
dark_yellow 0x13
gold 0x33
gray_ega 0x17
gray25 0x16
gray40 0x37
gray50 0x17
gray80 0x3F
green 0x11
ice_blue 0x1F
indigo 0x3E
ivory 0x1A
lavender 0x2E
light_blue 0x30
light_green 0x2A
light_orange 0x34
light_turquoise 0x29
light_yellow 0x2B
lime 0x32
magenta_ega 0x0E
ocean_blue 0x1E
olive_ega 0x13
olive_green 0x3B
orange 0x35
pale_blue 0x2C
periwinkle 0x18
pink 0x0E
plum 0x3D
purple_ega 0x14
red 0x0A
rose 0x2D
sea_green 0x39
silver_ega 0x16
sky_blue 0x28
tan 0x2F
teal 0x15
teal_ega 0x15
turquoise 0x0F
violet 0x14
white 0x09
yellow 0x0D"""
はい!ここまで簡単に書きましょう。後で何か面白い機能を見つけて、引き続き補充しています。
以上がpython xlwtモジュールの使用解析の詳細です。python xlwtモジュールの使用に関する資料は他の関連記事に注目してください。