精华内容
下载资源
问答
  • StringGrid单元格对齐方式及换行

    千次阅读 2008-10-10 09:14:00
    我们使用StringGrid时,...一、实现方法:使用 DrawCell 事件,//本函数实现各单元格对齐,其中标题行居中; grdFileList为TStringGrid控件名。void __fastcall TForm1::grdFileListDrawCell(TObject *Sender, int AC

     我们使用StringGrid时,经常需要将标题行居中对齐,其它行根据需要,文本左对齐或居中对齐,数字右对齐等。

    一、实现方法:使用 DrawCell 事件,

    //本函数实现各单元格的对齐,其中标题行居中; grdFileList为TStringGrid控件名。
    void __fastcall TForm1::grdFileListDrawCell(TObject *Sender, int ACol, int ARow,
              TRect &Rect, TGridDrawState State)
    {
    AnsiString  strCell = "";
    int   intDtFlag = 0;      //对齐方式

     strCell =  grdFileList->Cells[ACol][ARow];
     grdFileList->Canvas->FillRect(Rect);
     if (ARow == 0)
     {
      //标题行居中,假定标题行为第0行,只有一行。
      intDtFlag = DT_CENTER;
     }
     else
     {
      //其它行,根据需要设置
      switch (ACol) {
       case 1:
       case 2:
       case 8:         //比如,第1,2,8列居左
         intDtFlag = DT_LEFT;
         break;
       case 4:        //第4列数字列,居右
         intDtFlag = DT_RIGHT;
         break;
       default:      //其它大多数,居中
         intDtFlag = DT_CENTER;
         break;
      }
     }
     DrawText(grdFileList->Canvas->Handle, strCell.c_str(),strCell.Length(),&Rect, intDtFlag);
    }

     

    注意:调用DrawText时,要使用strCell.c_str()进行类型转换;

     

    二、后续研究:

    1、在使用 DrawCell 事件时,发现调用过于频繁,因为当单元格得到焦点、被选中时,都会重复调用该函数,所有我们只有在重画时调用,才更合理些;所以需要判断 State  参数。

    2、当单列格的高度大一些时,我们就需要将单元格内容上下居中,这就需要增加参数了。

    intDtFlag = DT_LEFT; 更改为

       intDtFlag = DT_SINGLELINE + DT_VCENTER + DT_LEFT;  //使用DT_VCENTER时,必须单行显示,所以要加上DT_SINGLELINE;

    3、单元格换行:如果单元格的内容需要换行,则可以增加 DT_WORDBREAK,它可以和DT_CENTER、DT_LEFT、DT_RIGHT一块使用,不能和上下居中使用。

    4、若在单元格内容放不下时,显示...,使用 DT_END_ELLIPSIS 参数。

    三、修订后的程序:

    //本函数实现各单元格的对齐,其中标题行居中; grdFileList为TStringGrid控件名。
    void __fastcall TForm1::grdFileListDrawCell(TObject *Sender, int ACol, int ARow,
        TRect &Rect, TGridDrawState State)
    {
    AnsiString  strCell = "";
    int   intDtFlag = 0;

     // 得到焦点和选中单元格,不需要处理,只有 (State.Contains(gdFixed)) 才开始进行处理
     if (State.Contains(gdFocused) || State.Contains(gdSelected) )
      return;

     if (ARow == 0)
     {
      //标题行居中,单行,上下居中(只有单行才能上下居中),左右居中。

    //http://blog.csdn.net/csdsym/archive/2008/10/10/3047678.aspx本文源地址
      intDtFlag = DT_SINGLELINE + DT_VCENTER + DT_CENTER;
     }
     else
     {
      //其它行,根据需要设置
      switch (ACol) {
       case 1:
       case 2:
       case 8:
         intDtFlag = DT_SINGLELINE + DT_VCENTER + DT_LEFT;
         break;
       case 4:
         intDtFlag = DT_SINGLELINE + DT_VCENTER + DT_RIGHT;
         break;
       default:
         intDtFlag = DT_SINGLELINE + DT_VCENTER + DT_CENTER;
         break;
      }
     }
    // intDtFlag =   DT_WORDBREAK;     //换行,可以和 DT_LEFT/DT_RIGHT/DT_CENTER组合使用
    // intDtFlag =   DT_END_ELLIPSIS;    //行尾显示... 

     strCell =  grdFileList->Cells[ACol][ARow];  //读取当前单元格内容
     grdFileList->Canvas->FillRect(Rect); //没有这一语句, 内容会重叠
     DrawText(grdFileList->Canvas->Handle, strCell.c_str(),strCell.Length(),&Rect, intDtFlag);
    }

     

    四、其它:在C++ Builder6/C++ Builder 2009下调试。若本文章被引用和推广,请不要删除本文源地址http://blog.csdn.net/csdsym/archive/2008/10/10/3047678.aspx。这样可以保证我们可以看到将来新的研究结果。更多的参数请在帮助中,查找DrawText。

     

    展开全文
  • //说明:设置单元格对齐方式 //1.创建EXCEL中的Workbook IWorkbook myworkbook = new XSSFWorkbook(); //2.创建Workbook中的Sheet ISheet mysheet = myworkbook.CreateSheet("sheet1"); mysheet....
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using NPOI.HSSF.UserModel;
    using NPOI.SS.Formula.Eval;
    using NPOI.SS.Formula.Functions;
    using NPOI.SS.UserModel;
    using NPOI.XSSF.UserModel;
    using NPOI.POIFS.FileSystem;
    using NPOI.HPSF;
    using System.IO;
    using NPOI.SS.Util;
    using System.Drawing;
    using NPOI.HSSF.Util;
    
    namespace NPOI
    {
        class Program3
        {
            static void Main(string[] args)
            {
                //说明:设置单元格对齐方式
    
                //1.创建EXCEL中的Workbook         
                IWorkbook myworkbook = new XSSFWorkbook();
    
                //2.创建Workbook中的Sheet        
                ISheet mysheet = myworkbook.CreateSheet("sheet1");
    
                mysheet.SetColumnWidth(0, 24 * 256);
                mysheet.SetColumnWidth(1, 24 * 256);
                mysheet.SetColumnWidth(2, 24 * 256);
                mysheet.SetColumnWidth(3, 24 * 256);
    
                //3.创建Row中的Cell并赋值
                IRow row0 = mysheet.CreateRow(0);
                row0.Height = 50 * 20;
                row0.CreateCell(0).SetCellValue("对齐方式");
                row0.CreateCell(1).SetCellValue("对齐方式");
                row0.CreateCell(2).SetCellValue("对齐方式");
                row0.CreateCell(3).SetCellValue("对齐方式");
    
                IRow row1 = mysheet.CreateRow(1);
                row1.Height = 50 * 20;
                row1.CreateCell(0).SetCellValue("对齐方式");
                row1.CreateCell(1).SetCellValue("Shanghai is the largest city by population in ");
                row1.CreateCell(2).SetCellValue("对齐方式");
                row1.CreateCell(3).SetCellValue("对齐方式");
    
                //4.创建CellStyle
                ICellStyle style0 = myworkbook.CreateCellStyle();
                style0.Alignment = HorizontalAlignment.General;//【General】数字、时间默认:右对齐;BOOL:默认居中;字符串:默认左对齐
    
                ICellStyle style1 = myworkbook.CreateCellStyle();
                style1.Alignment = HorizontalAlignment.Left;//【Left】左对齐
    
                ICellStyle style2 = myworkbook.CreateCellStyle();
                style2.Alignment = HorizontalAlignment.Center;//【Center】居中
    
                ICellStyle style3 = myworkbook.CreateCellStyle();
                style3.Alignment = HorizontalAlignment.Right;//【Right】右对齐
    
                ICellStyle style4 = myworkbook.CreateCellStyle();
                style4.Alignment = HorizontalAlignment.Fill;//【Fill】填充
    
                ICellStyle style5 = myworkbook.CreateCellStyle();
                style5.Alignment = HorizontalAlignment.Justify;//【Justify】两端对齐[会自动换行](主要针对英文)
    
                ICellStyle style6 = myworkbook.CreateCellStyle();
                style6.Alignment = HorizontalAlignment.CenterSelection;//【CenterSelection】跨列居中
    
                ICellStyle style7 = myworkbook.CreateCellStyle();
                style7.Alignment = HorizontalAlignment.Distributed;//【Distributed】分散对齐[会自动换行]
    
                //【Tips】
                // 1.通过ICellStyle的VerticalAlignment属性可以设置垂直对齐模式与水平对齐无异 不再演示
                // 2.通过ISheet的SetDefaultColumnStyle(int column, ICellStyle style)方法可以设置整列的默认单元格样式;
                
                //5.将CellStyle应用于具体单元格
                row0.GetCell(0).CellStyle = style0;
                row0.GetCell(1).CellStyle = style1;
                row0.GetCell(2).CellStyle = style2;
                row0.GetCell(3).CellStyle = style3;
    
                row1.GetCell(0).CellStyle = style4;
                row1.GetCell(1).CellStyle = style5;
                row1.GetCell(2).CellStyle = style6;
                row1.GetCell(3).CellStyle = style7;
    
                //6.保存       
                FileStream file = new FileStream(@"E:\myworkbook3.xlsx", FileMode.Create);
                myworkbook.Write(file);
                file.Close();
            }
        }
    }
    运行后,效果如下图所示

    转载于:https://my.oschina.net/u/1778848/blog/542249

    展开全文
  • Python xlwt 模块 Excel表格 基础 3:单元格格式、字体格式、对齐方式、边框及填充等前言:1、数据类型设置2、字体设置3、单元格对齐方式4、单元格边框设置5、填充设置6、单元格保护最后: 前言: 前面两节博客介绍...

    前言:

    上一篇博客介绍了xlwt 模块设置 Excel 表格文件的 窗口显示样式、默认打印格式等 方法。

    本篇博客主要对表格文件的 单元格格式设置 进行介绍,主要包括:

    1. 单元格数据类型;
    2. 字体设置;
    3. 对齐方式;
    4. 边框设置;
    5. 填充设置;
    6. 单元格保护。

    1、数据类型设置

    这里还是用上一节的方式,先建立两个sheet表,写入数据,然后对Tset sheet表设置自定义的单元格格式,T2 sheet表以默认的单元格格式写入。

    # 导入模块
    import xlwt
    
    work_book = xlwt.Workbook()
    work_sheet = work_book.add_sheet('Test')
    w2 = work_book.add_sheet('T2')
    # 创建数据
    z = [[r,c] for r in range(20) for c in range(20)]
    [l.append(str(i)) for i,l in enumerate(z)]
    

    单元格格式设置方法:

    单元格格式设置也有一套固定的流程:

    创建单元格样式对象——设置样式(修改样式属性值)——将数据写入单元格时以创建的样式写入

    # 建立样式
    my_style_1 = xlwt.XFStyle()
    # 建立单元格数据类型,数值类型,默认为:'General'
    my_style_1.num_format_str = '0'
    # 写入数据、Test sheet对象以自定义格式写入,T2 sheet对象以默认格式写入
    for info in z:
        # 写入数据,并对单元格设置格式
        work_sheet.write(info[0],info[1],info[2],my_style_1)
        w2.write(info[0],info[1],info[2])
        
    # 保存文件
    work_book.save('Test3.xls')
    

    可设置的数据格式有:

    # 单元格数据类型  #######################################################
    '''
                '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',
                '@'
    '''
    

    2、字体设置

    先建立一个字体对象:

    # 建立字体
    font = my_style_1.font
    

    然后对字体名称,字体高度、加粗等方面进行设置:

    可设置项(默认设置):

    # 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
    # self.bold = False
    # self._weight = 0x0190  # 0x02BC gives bold font
    # self.escapement = self.ESCAPEMENT_NONE
    # self.underline = self.UNDERLINE_NONE
    # self.family = self.FAMILY_NONE
    # self.charset = self.CHARSET_SYS_DEFAULT
    # self.name = 'Arial'
    

    实例:

    # 设置字体名称
    font.name = 'Times New Roman '
    # 设置字体高度
    font.height = 400
    # 设置斜体
    font.italic = True
    # 设置删除线
    font.struck_out = True
    # 设置轮廓
    font.outline = True
    # 设置阴影
    font.shadow = True
    # 设置字体颜色、蓝色
    font.colour_index = 0x0C
    # 设置加粗
    font.bold = True
    # 设置字体上下标、上标
    # font.escapement = 1
    # 设置下划线、双层下划线
    font.underline = 2
    # 设置字符集、GBK
    font.charset = 0x86
    

    设置效果图:

    在这里插入图片描述
    获取字体格式信息:

    除了可以设置单元格格式外,还可以通过_search_key() 方法来获取单元格样式信息。

    font_info = font._search_key()
    print(font_info)
    # 打印结果:
    # (400, True, True, True, True, 12, True, 400, 0, 2, 0, 134, 'Times New Roman ')
    

    字体格式设置说明:

    上面的设置将字体颜色用,设置为蓝色:

    font.colour_index = 0x0C
    

    字体颜色可选值:

    # 颜色索引  #######################################################
    """
    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
    """
    

    字体上下标设置、下划线设置、字符集设置:

    # 字体上标
    font.escapement = 1
    # 设置下划线、双层下划线
    font.underline = 2
    # 设置字符集、GBK
    font.charset = 0x86
    

    解析:

    这里单元格默认的字体上下标设置是:

    self.escapement = self.ESCAPEMENT_NONE

    查下面的索引:ESCAPEMENT_NONE = 0x00
    如我们想将单元格设置为上标,上标是:ESCAPEMENT_SUPERSCRIPT ,对应的值为:0x01(16位数字)
    及单元格格式设置为:

    font.escapement = 0x01
    或:
    font.escapement = 1

    下面出现的其他设置都是类似原理,如再次出现就不解释了。

    上下标、下划线、字符集索引:

    ESCAPEMENT_NONE         = 0x00
    # 上标
    ESCAPEMENT_SUPERSCRIPT  = 0x01
    # 下标
    ESCAPEMENT_SUBSCRIPT    = 0x02
    # 下划线可选值
    UNDERLINE_NONE          = 0x00
    UNDERLINE_SINGLE        = 0x01
    UNDERLINE_SINGLE_ACC    = 0x21
    UNDERLINE_DOUBLE        = 0x02
    UNDERLINE_DOUBLE_ACC    = 0x22
    # 字符集可选值
    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
    

    3、单元格对齐方式

    建立对齐方式对象,设置对齐方式属性:

    可设置项(默认设置):

    # 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
    

    实例:

    # 建立对其方式:
    alignment = my_style_1.alignment
    # 水平对齐方式、水平居中
    alignment.horz = 2
    # 垂直对齐方式、垂直居中
    alignment.vert = 1
    # 旋转方向,设置旋转方向45
    alignment.rota = 45
    # 自动缩进设置
    alignment.shri = 1
    

    设置效果图:

    在这里插入图片描述
    获取对齐方式信息:

    # 获取当前对齐方式
    alignment_info = alignment._search_key()
    print(alignment_info)
    # 打印结果:
    # (2, 1, 0, 0, 45, 0, 1, 0, 0)
    

    其他对齐方式索引:

    # 水平对齐方式
    HORZ_GENERAL                = 0x00
    HORZ_LEFT                   = 0x01
    HORZ_CENTER                 = 0x02
    HORZ_RIGHT                  = 0x03
    HORZ_FILLED                 = 0x04
    HORZ_JUSTIFIED              = 0x05 # BIFF4-BIFF8X
    HORZ_CENTER_ACROSS_SEL      = 0x06 # Centred across selection (BIFF4-BIFF8X)
    HORZ_DISTRIBUTED            = 0x07 # Distributed (BIFF8X)
    # 垂直对齐方式
    VERT_TOP                    = 0x00
    VERT_CENTER                 = 0x01
    VERT_BOTTOM                 = 0x02
    VERT_JUSTIFIED              = 0x03 # Justified (BIFF5-BIFF8X)
    VERT_DISTRIBUTED            = 0x04 # Distributed (BIFF8X)
    # 旋转角度
    ROTATION_0_ANGLE            = 0x00
    ROTATION_STACKED            = 0xFF
    # 自动缩进设置
    SHRINK_TO_FIT               = 0x01
    NOT_SHRINK_TO_FIT           = 0x00
    

    4、单元格边框设置

    建立单元格边框对象,设置属性值:

    可设置项(默认值):

    # 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
    

    实例:

    borders = my_style_1.borders
    # 左边框 细线
    borders.left = 1
    # 右边框 中细线
    borders.right = 2
    # 上边框 虚线
    borders.top = 3
    # 下边框 点线
    borders.bottom = 4
    # 内边框 粗线
    borders.diag = 5
    
    # 左边框颜色 蓝色
    borders.left_colour = 0x0C
    # 右边框颜色 金色
    borders.right_colour = 0x33
    # 上边框颜色 绿色
    borders.top_colour = 0x11
    # 下边框颜色 红色
    borders.bottom_colour = 0x0A
    # 内边框 黄色
    borders.diag_colour = 0x0D
    

    设置效果:

    在这里插入图片描述
    获取边框设置信息:

    borders_info = borders._search_key()
    print(borders_info)
    # 打印结果
    # (1, 2, 3, 4, 5, 12, 51, 17, 10, 13, 0, 0)
    

    边框线型索引:

    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
    

    注:边框颜色设置可参看字体颜色设置索引。

    5、填充设置

    建立填充对象,设置属性:

    可设置项(默认值):

    # self.pattern = self.NO_PATTERN
    # self.pattern_fore_colour = 0x40
    # self.pattern_back_colour = 0x41
    

    实例:

    # 填充设置
    pat = my_style_1.pattern
    # 打开填充
    pat.pattern = 1
    # 填充前景色、紫色
    pat.pattern_fore_colour = 0x14
    # 填充背景色、紫色
    pat.pattern_back_colour = 0x14
    

    效果图:

    在这里插入图片描述
    注:xlwt 模块好像只提供了颜色填充设置方法,图案填充方法未提供。颜色索引见字体颜色索引。

    6、单元格保护

    建立保护对象,设置属性:

    可设置项(默认设置):

    # self.cell_locked = 1
    # self.formula_hidden = 0
    

    实例:

    # 设置单元格锁定
    protection.cell_locked = 1
    # 设定隐藏单元格内公式
    protection.formula_hidden = 1
    # 只有在sheet表设置为保护时才有效
    work_sheet.set_protect(1)
    

    注:只有在sheet表设置为保护时才有效,(效果可参考第二节表格保护内容)。

    结尾:

    以上就是本篇全部内容,感谢阅读。

    下一篇博客内容为:根据 xlwt 模块的一些方法,用面向对象的思想,自写一个类实现:按行按列写入、自定义格式方法、自动调整列宽等 等功能。

    【Python与Office】专栏

    该专栏会对 Python 的第三方模块,如:xlwt,xlrd,python-docx等,操作 Office 办公软件(Word Excel PPT)的方法进行详细讲解。同时也会搭配一些实例演练,一方面强化知识点的理解与运用,另一方面也希望能起到,引导读者进行思考:如何用 python 提高 offic 办公软件办公效率的作用。

    感兴趣的朋友,可以点个 关注收藏 。如在博客中遇到任何问题或想法,可留言或私信。

    创作不易,你的支持是我最大的动力,感谢 !

    展开全文
  • Word文档中表格中对齐方式的设置可以分为表格的对齐方式和...表格对齐方式设置单元格对齐方式设置而在python-docx包中要使用table.alignment、cell.vertical_alignment和paragraph.alignment进行设置,笔者总...

    在Word文档中表格中对齐方式的设置可以分为表格的对齐方式和单元格的对齐方式,可以通过“开始”菜单栏中的“段落”中设置表格的对齐方式,可以通过“布局”菜单栏中的“对齐方式”中设置单元格的对齐方式。

    fd039245d688d43fbc206d3b3cbe581d0cf43b90.jpeg?token=73a7ebca20940dd743723048fd520f69表格对齐方式设置

    5882b2b7d0a20cf443f0f9f235a9c130adaf99e5.jpeg?token=21bf6b1610d5f4854cc702e2d2665e1e单元格对齐方式设置

    而在python-docx包中要使用table.alignment、cell.vertical_alignment和paragraph.alignment进行设置,笔者总结了python-docx包中表格和单元格等2种设置对齐方式,并在文章最后将文章主要内容制作了思维导图。

    01表格的对齐方式

    在设置表格的对齐中,将表格作为一个整体,要用到table的alignment属性。python-docx包定义了表格对齐的枚举类型,存储在docx.enum.table import WD_TABLE_ALIGNMENT中,共定义了LEFT、CENTER和RIGHT三个常量。含义如下

    WD_TABLE_ALIGNMENT.LEFT :表格为左对齐WD_TABLE_ALIGNMENT.CENTER:表格为居中对齐WD_TABLE_ALIGNMENT.RIGHT:表格为右对齐本文以LFET为例说明表格对齐方式的设置过程,见代码:

    from docx import Document # 导入docxfrom docx.enum.table import WD_TABLE_ALIGNMENT # 导入表格对齐方式from docx.shared import Cm # 导入单位转换函数document = Document() # 新建docx文档table = document.add_table(3, 3) # 添加表格1table.alignment = WD_TABLE_ALIGNMENT.LEFT # 设置表格为右对齐for col in table.columns: # 表格1设置列宽为2cm,便于演示,与设置无关for cell in col.cells:cell.width = Cm(2)document.save('test.docx')表格的左对齐效果见下图

    342ac65c10385343d3c9c2fcd3b33a78cb80880b.jpeg?token=ebf6077c3cdf526c02969546c735f106表格左对齐效果图

    同理,将第6行代码分别设置为居中和右对齐,见如下代码,运行后表格的效果见下图。

    table.alignment = WD_TABLE_ALIGNMENT.CENTER # 设置表格为居中对齐table.alignment = WD_TABLE_ALIGNMENT.RIGHT # 设置表格为右对齐

    0bd162d9f2d3572cc54821a1cbb3e92163d0c348.jpeg?token=68c9796ab653b8621ef502e0acd7e522表格居中对齐效果图

    024f78f0f736afc33e4bef3ff1b961c2b645124f.jpeg?token=1c9f360eab998c926991d61d48d7beb0表格右对齐效果图

    02单元格的对齐方式

    在对单元格对齐方式设置的时候,将单元格视为一个整体,要使用单元格中的垂直对齐(cell.vertical_alignment)和单元格中的段落的对齐(paragraph.alignment)等2种对齐方式配合使用。在docx.enum.table .WD_ALIGN_VERTICAL定义了TOP、CENTER和BOTTOM等3种类型,含义如下:

    WD_CELL_VERTICAL_ALIGNMENT.TOP:单元格内容靠上对齐WD_CELL_VERTICAL_ALIGNMENT.CENTER:单元格内容居中对齐WD_CELL_VERTICAL_ALIGNMENT.BOTTOM:单元格内容靠下对齐在WD_PARAGRAPH_ALIGNMENT中定义了4中类型,分别是LEFT、CENTER、RIGHT和JUSTIFY等4中类型,含义如下:

    WD_PARAGRAPH_ALIGNMENT.LEFT:段落左对齐WD_PARAGRAPH_ALIGNMENT.CENTER:段落居中对齐WD_PARAGRAPH_ALIGNMENT.RIGHT:段落右对齐WD_PARAGRAPH_ALIGNMENT.JUSTIFY:段落两端对齐关于段落的设置可以参考文章python-docx段落设置。在单元格垂直对齐和段落对齐的配合过程中可以组合成12种方式,分别是:靠上两端对齐、靠上居中对齐、靠上右对齐、中部两端对齐、中部居中对齐、中部右对齐、靠下两端对齐、靠下居中对齐、靠下右对齐、靠上左对齐、中部左对齐、靠下左对齐。其中,在WORD软件中内置了前9种对齐方式。这9种对齐方式的设置代码如下:

    from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT # 导入单元格垂直对齐from docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 导入段落对齐document = Document()table = document.add_table(3, 3) # 添加表格1for row in table.rows:row.height = Cm(3) # 设置表格行高为3cm,便于演示,与设置对齐无关cell = table.cell(0,0)cell.text = "靠上两端对齐"cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.TOPcell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFYcell = table.cell(0,1)cell.text = "靠上居中对齐"cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.TOPcell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTERcell = table.cell(0,2)cell.text = "靠上右对齐"cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.TOPcell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.RIGHTcell = table.cell(1,0)cell.text = "中部两端对齐"cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTERcell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFYcell = table.cell(1,1)cell.text = "中部居中对齐"cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTERcell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTERcell = table.cell(1,2)cell.text = "中部右对齐"cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTERcell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.RIGHTcell = table.cell(2,0)cell.text = "靠下两端对齐"cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.BOTTOMcell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFYcell = table.cell(2,1)cell.text = "考下中部对齐"cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.BOTTOMcell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTERcell = table.cell(2,2)cell.text = "靠下右对齐"cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.BOTTOMcell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT运行效果见下图:

    b58f8c5494eef01f30bbed79a15e1323bd317d01.jpeg?token=1f5e1099433241f9a5cf5c7fbd7c9fc19种对齐方式与WORD软件中对应图

    另外三种的设置可以参考上述代码。

    笔者总结了python-docx包中对表格和单元格的对齐方式,制作了思维导图见下图。希望对使用python-docx包设置docx表格对齐时提供参考。

    ac345982b2b7d0a2fa4caddb9f4ffc0f4a369a12.jpeg?token=c088249f6f0a87c9f61a2ac5af59238f

    展开全文
  • php修改word模板样式合并单元格 public function exportWord($param = array(),$NameAll = array(),$TASK_UID='',$Title='',$TaskCode='',$TmpType='',$Time=''){ global $GLOBAL_SETTING; $year = substr($Time,0...
  • Java-Aspose-Word 关于单元格高度问题Aspose API单元格高度获取异常解决方式 Aspose API API: https://apireference.aspose.com/words/java 跳转API 单元格高度获取异常 单元格出现明明很高,但是代码获取高度与...
  • Word 2016 撰写论文(1): 公式居中、编号右对齐

    万次阅读 多人点赞 2018-08-15 18:59:56
    写论文时,要求公式居中,编号右对齐。刚开始碰到这种问题,很麻烦,网上看了好多方法,目前,两种方法比较实用。第一种是表格法,方便快捷;第二种是制表位法,刚开始设置比较繁琐,一旦设置好了,比表格法速度还要...
  • void __fastcall Tfrm_main::advstrngrd1GetAlignment(TObject *Sender,  int ARow, int ACol, TAlignment &HAlign, TVAlignment &VAlign) {  HAlign = taCenter;...另外,需要设置 WordWrap = false
  • (1)水平对齐操作步骤:1)选取欲设置对齐方式单元格单元格区域。2)选取"格式"菜单中的"单元格"命令,出现"单元格格式"对话框。3)在"单元格格式"对话框中,选取"对齐"选项卡。4)在了文本对齐方式"栏中,单击"水平对齐...
  • 选中表格或表格内容,单击右键选择“单元格对齐方式”,选择上下居中即可!
  • 摘 https://blog.csdn.net/aa2012123456/article/details/50629489 ... 1.合并单元格 需要用到的类:CellRangeAddress CellRangeAddress类的构造方法 public CellRangeAddress(int firstRow, int...
  • word封面下划线对齐

    2020-07-01 16:42:57
    word封面下划线对齐 如图所示,班级下划线与前面三条下划线没有对齐 于是你尝试删除 ,可是删除一下却删多了。 不要慌张,按我说的办。全删掉,重来。 首先插入一个2*4的表格 输入内容 对文本稍作调整...
  • 问题是这样的,有一个word模板,模板里带表格需要根据需要动态的改变单元格样式,有可能 横向合并,也有可能纵向合并,求大神给解决思路或代码! 拜谢了!!!
  • word表格如何顶格输入以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的...急求高手:word中做一个表格,输入文字时如何不用顶格输入选中表格,右击-表格属性-单元格-对齐方式-居中。Word...
  • 垂直对齐XWPFTableCell cell = table.getRow(i).getCell(j); cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中水平对齐CTTc cttc = cell.getCTTc(); CTP ctp = cttc.getPList().get(0); ...
  • word表格上下竖线不对齐时快速对齐方法
  • poi创建word表格合并单元格代码如下: /** * @Description: 跨列合并 */ public void mergeCellsHorizontal(XWPFTable table, int row, int fromCell, int toCell) { for (int cellIndex = fromC...
  • word设置文本垂直对齐方式有几种左对齐 右对齐 两端对齐 分散对齐 居中对齐 以上为段落对齐方式,可能不是你要的结果 上下两行文本对齐常用方式有用制表位设置段落中制表符的位置后用制表符号来对齐在excel格式工具...
  • PHPWord 表格居中和合并单元格

    千次阅读 2017-05-09 13:46:12
    /PHPWord/Style/Cell.php添加属性和方法 private $_rowMerge = null; private $_cellMerge = null; public function getRowMerge() { return $this->_rowMerge; } public function
  • 1. 想把Word表格居中对齐,并且表格内的文章居中对齐,具体...选中表格->右键“表格属性”->单元格->对齐方式“居中” 正常情况下表格就会居中,并且表格内的文字也居中对齐。但是咱们经常会设置表格里面的文字也
  • word有符号时 对齐 对齐Excel货币符号时遇到问题 (Trouble Aligning Excel Currency Symbols) Every now and then I get a workbook from a client with numbers in Accounting format. If all the numbers are the ...
  • 开题报告好烦呀,WORD好烦呀,想用LATEX。 1.首先插入一个1行3列的表格, 2.选中表格,右键表格属性,设置列宽 对于A4纸设置大概如下: 3.选中表格,表格属性,单元格,居中。 4.中间列插入公式。选中公式,居中...
  • word公式居中,编号右对齐

    千次阅读 2019-06-02 14:34:36
    本文介绍一种word文档实现公式居中,编号右对齐的简单易行的方法:制表法 首先插入一个一行3列的表格: 将公式放进第二个单元格,编号放进第三个单元格,第二个单元格格式居中,第三个单元格格式右对齐: ...
  • //合并县区名称单元格 CellRangeAddress cellRangeAddress = new CellRangeAddress(startRowNum, endRowNum, startAndEndColumnNum, startAndEndColumnNum); sheet.addMergedRegion(cellRangeAddress); ...
  • } } } } (二)合并单元格 //合并单元格 //合并:标题 sheet.addMergedRegion(new CellRangeAddress(0,0,0,3)); //合并第二行 sheet.addMergedRegion(new CellRangeAddress(2,2,1,3)); //合并第7行...
  • word对齐表格不在一行的文字

    千次阅读 2019-10-31 15:45:05
    右键,表格属性,单元格,居中
  • POI日常应用--换行,对齐,遍历单元格 博客分类:  POI应用 javaPOI  POI常用的三种操作  Java代码   public static void main(String[] args)throws Exception {   ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,961
精华内容 3,984
关键字:

word的单元格对齐方式