精华内容
下载资源
问答
  • 用python-docx修改已存在的Word文档的表格字体格式

    用python-docx修改已存在的Word文档的表格的字体格式:

    搞了好几天的表格字体格式,一直想找一种能直接一次性修改表格所有字体格式的方法(函数),但是无论用什么方法都无法修改表格字体的格式,原因应该是已存在的文档本身就具有某种格式限制,制约着里面表格里面字体格式的更改,直接用类似:table.style.font.name=’Arial’,table.style.font.size = 120000….之类的函数是不能更改表格的字体格式的(PS:可能该功能在开发中,也可能我没找到对应直接修改整个表格里面字体的方法)

    但是后来发现表格里面用run = add.paragraph().add_run(‘hello world’), run.font.name=’Arial’, run.font.size = 120000,是可以修改表格里面字体格式的,原因应该是paragraph和table是同级的,paragraph.run可以不受table的格式影响

    这办法麻烦之处就是表格内容需要先以run = add.paragraph().add_run(‘hello world’)存入表格,然后才能通过‘run’来改变字体,这点比较有限制性,不过目前也只想到这种办法,后面有朋友有新的好的办法欢迎指点

    补充一点,如果是新建一个文档,然后在新建文档的同时(存储该文档在某个位置之前)也新建表格就可以直接用类似:table.style.font.name=’Arial’,table.style.font.size = 120000….这种方法直接更改(或者称为 定义 更准确)表格的字体格式,就不用用上面说的那种麻烦方法,原因应该是重新定义文档时,文档的许多元素的属性可定义性较多较宽松许多

    代码块

    
    from docx import Document
    from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    document = Document('C:\\format.docx')
    tables = document.tables[0]
    
    run = tables.cell(1,0).paragraphs[0].add_run('smida')
    run.font.name = '宋体'
    run.font.size = 140000
    tables.cell(1,0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    
    document.save('C:\\format.docx')

    展开全文
  • 今天小编就为大家分享一篇python-docx修改已存在的Word文档的表格字体格式方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Python-docx 模块读写 Word 文档基础(三):读取文档文本信息、表格信息、段落格式、字体格式等前言:1、获取文档章节信息:2、获取段落文字信息:3、获取文字格式信息:4、获取文档中表格信息:结尾:【Python与...

    Python-docx 模块读写 Word 文档基础(三):读取文档文本信息、表格信息、段落格式、字体格式等

    前言:

    前两篇博客介绍了 Python 的 docx 模块对 Word 文档的写操作,这篇博客将介绍如何用 docx 模块读取已有 Word 文档中的信息。

    本篇博客主要内容有:

    1、获取文档的章节信息;
    2、获取段落文本信息;
    3、获取表格内文本信息;
    4、获取文档内格式信息。

    1、获取文档章节信息:

    1、用docx模块获取已有的word文档对象:

    from docx import Document
    
    # Document 类,不仅可以新建word文档,也可以打开一个本地文档
    doc = Document('test03.docx')  # 想获取的文档文件名,这里是相对路径。
    

    用做示例的 test03.docx 文件截图如下:

    在这里插入图片描述
    文档中有两个章节共两页(一个章节一页),一个章节的页面为 A3 ,另一个为 A4。

    2、获取文档章节信息:

    # 获取文档所有章节
    sections = doc.sections
    "class Sections(Sequence):"
    print(sections)
    # <docx.section.Sections object at 0x000000000B2E1148>
    # 查看章节数量
    print(len(sections)) # 2
    

    注意:
    章节对象的概念虽然比段落对象大,章节对象可以设置本章节的页面大小页眉页脚等,在该章节的段落对象必须遵守该章节的设置。
    但是又并不存在包含关系,也就是说不能通过章节对象获取到段落信息。

    3、获取页边距等信息:

    # 获取章节对象的页边距等信息
    sec0 = sections[0]
    "class Section(object):"
    '''
    官方解释:文档节,提供对节和页面设置的访问。
    还提供对页眉和页脚的访问。
    '''
    print(sec0)
    # <docx.section.Section object at 0x000000000B2D5708>
    # 获取章节页面信息
    # 获取页面边距值:(单位为像素)
    print('左边距:',sec0.left_margin)
    # 左边距: 914400
    print('右边距:',sec0.right_margin)
    # 右边距: 914400
    print('上边距:',sec0.top_margin)
    # 上边距: 1143000
    print('下边距:',sec0.bottom_margin)
    # 下边距: 1143000
    print('页眉边距:',sec0.header_distance)
    # 页眉边距: 540385
    print('页脚边距:',sec0.footer_distance)
    # 页脚边距: 629920
    print('页面方向:',sec0.orientation)
    # 页面方向: LANDSCAPE (1)
    print('页面高度:',sec0.page_height)
    # 页面高度: 10657205
    print('页面宽度:',sec0.page_width)
    # 页面宽度: 15085695
    

    这里获取的是第一个章节的页面信息,也就是 A3 页面的信息。

    注:上一篇博客 往Word文档中插入图片、表格,设置表格样式,章节,页眉页脚等,在介绍设置页面信息时,忘记介绍如何设置页面方向了,这里补充一下:

    设置页面方向:

    # 导入设置页面方向所需模块
    from docx.enum.section import WD_ORIENT
    # 获取章节对象
    section = document.sections[0]
    # 设置页面方向
    section.orientation = WD_ORIENT.LANDSCAPE # 横向
    

    可设置项有横向( LANDSCAPE ) 和纵向 ( PORTRAIT ):

    '''
    'PORTRAIT', 0, 'portrait', 'Portrait orientation.' 
    'LANDSCAPE', 1, 'landscape', 'Landscape orientation.'
    '''
    

    文档截图:

    在这里插入图片描述
    4、获取文档页眉页脚信息:

    head0 = sec0.header # 获取页眉对象
    print(head0)
    # <docx.section._Header object at 0x000000000B2E1348>
    head0_pars = head0.paragraphs # 获取 页眉 paragraphs
    # 获取页眉文字信息
    # 因存在多个 paragraph 对象的可能所以用循环读取的方式
    head0_string = ''
    for par in head0_pars:
        head0_string += par.text
    
    print(head0_string)
    # 仪征市马集镇总体规划(2017-2030)——说明
    
    # 获取页脚信息,也是类似的方法
    foot0 = sec0.footer
    print(foot0) # 获取页脚对象
    # <docx.section._Footer object at 0x000000000B2E3808>
    foot0_pars = foot0.paragraphs
    foot0_string = ''
    for par in foot0_pars:
        foot0_string += par.text
    print(foot0_string)
    # 1
    

    2、获取段落文字信息:

    1、获取Word文档所有段落对象:

    "获取文档所有段落信息:"
    # 获取文档所有段落对象
    paragraphs = doc.paragraphs
    

    注意:
    paragraphs 获取的是文档中所有段落对象的列表,严格来说是word文档中正文部分的段落对象列表。因为通过前文的介绍,许多除正文部分,如 表格,页面页脚等元素也包含 paragraph 对象。
    而 doc.paragraphs 获取到的 paragraph 不包含这些段落对象。

    2、获取段落对象文字信息:

    print(paragraphs)
    print(len(paragraphs))  # 打印结果:20
    
    # 获取一个段落对象的文字信息
    par0 = paragraphs[0]
    print(par0)
    par0_string = par0.text
    print(par0_string)
    
    # 获取所有段落文字信息
    pars_string = [par.text for par in paragraphs]
    print(pars_string)
    

    par0_string 打印截图:

    在这里插入图片描述
    3、获取段落格式信息:

    print('段落对齐方式:',par0.paragraph_format.alignment)
    # 段落对齐方式: LEFT (0)
    print('左缩进:',par0.paragraph_format.left_indent)
    # 左缩进: None
    print('右缩进:',par0.paragraph_format.right_indent)
    # 右缩进: None
    print('首行缩进:',par0.paragraph_format.first_line_indent)
    # 首行缩进: 304800
    print('行间距:',par0.paragraph_format.line_spacing)
    # 行间距: 1.5
    print('段前间距:',par0.paragraph_format.space_before)
    # 段前间距: 198120
    print('段后间距:',par0.paragraph_format.space_after)
    # 段后间距: 198120
    

    3、获取文字格式信息:

    paragraph 对象 里还有更小的 run 对象,run 对象才包含了段落对象的文字信息。
    paragraph.text 方法也是通过 run 对象的方法获取到文字信息的:

    paragraph.text 方法源码:

    def text(self):
         text = ''
            for run in self.runs:
                text += run.text
            return text
    

    文字的字体、大小、下划线等信息都包含在 run 对象中(不清楚的看前面的博客):

    # 获取段落的 run 对象列表
    runs = par0.runs
    print(runs)
    # 获取 run 对象
    run_0 = runs[0]
    print(run_0.text) # 获取 run 对象文字信息
    # 打印结果:
    # 坚持因地制宜,差异化打造特色小镇,
    

    文档 段落 和 run 对象示意:

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

    # 获取文字格式信息
    print('字体名称:',run_0.font.name)
    # 字体名称: 宋体
    print('字体大小:',run_0.font.size)
    # 字体大小: 152400
    print('是否加粗:',run_0.font.bold)
    # 是否加粗: None
    print('是否斜体:',run_0.font.italic)
    # 是否斜体: True
    print('字体颜色:',run_0.font.color.rgb)
    # 字体颜色: FF0000
    print('字体高亮:',run_0.font.highlight_color)
    # 字体高亮: YELLOW (7)
    print('下划线:',run_0.font.underline)
    # 下划线: True
    print('删除线:',run_0.font.strike)
    # 删除线: None
    print('双删除线:',run_0.font.double_strike)
    # 双删除线: None
    print('下标:',run_0.font.subscript)
    # 下标: None
    print('上标:',run_0.font.superscript)
    # 上标: None
    

    注:前面的博客好像也没介绍文字背景颜色的设置…

    背景颜色设置方法: (与字体颜色设置方法有区别)

    # 设置背景颜色
    from  docx.enum.text import WD_COLOR_INDEX
    run_2.font.highlight_color = WD_COLOR_INDEX.YELLOW
    

    背景颜色可选值有:

    '''
    'AUTO', 0, 'default'
    'BLACK', 1, 'black'
    'BLUE', 2, 'blue'
    'BRIGHT_GREEN', 4, 'green',
    'DARK_BLUE', 9, 'darkBlue',
    'DARK_RED', 13, 'darkRed'
    'DARK_YELLOW', 14, 'darkYellow'
    'GRAY_25', 16, 'lightGray'
    'GRAY_50', 15, 'darkGray'
    'GREEN', 11, 'darkGreen'
    'PINK', 5, 'magenta'
    'RED', 6, 'red'
    'TEAL', 10, 'darkCyan'
    'TURQUOISE', 3, 'cyan'
    'VIOLET', 12, 'darkMagenta'
    'WHITE', 8, 'white'
    'YELLOW', 7, 'yellow'
    '''
    

    4、获取文档中表格信息:

    示例文档中表格截图:
    在这里插入图片描述
    1、获取表格样式、单元格对象及文字信息:

    # 获取文档中表格信息
    tables = doc.tables # 获取文档中所有表格对象的列表
    print(tables)
    # [<docx.table.Table object at 0x000001957059CD48>]
    print(len(tables)) # 查看文档中表格数量
    # 1
    table0 = tables[0]  # 获取表格对象
    
    # 获取表格的样式信息
    print(table0.style)
    # _TableStyle('Normal Table') id: 190621384
    
    # 获取一个表格的所有单元格
    cells = table0._cells
    print(len(cells)) # 表格中单元格数量
    # 15
    
    # 获取单元格内所有文字信息
    cells_string = [cell.text for cell in cells]
    print(cells_string)
    

    cells_string 打印截图:

    在这里插入图片描述
    从截图中可以看出来,用 tableobj._cells 获取到的单元格对象列表是按行排列的。

    2、获取表格的行列对象:

    # 获取表格对象行数量、列数量
    col_num = len(table0.columns)
    print(col_num) # 3
    # 行数量
    row_num = len(table0.rows)
    print(row_num) # 5
    
    # 获取行对象
    row0 = table0.rows[0]
    # 获取列对象
    col0 = table0.columns[0]
    
    # 获取行对象文字信息
    '要用 row0.cells 获取行对象的 cell 才能获取其文字信息'
    row0_string = [cell.text for cell in row0.cells]
    print(row0_string)
    
    # 获取列对象文字信息
    col0_string = [cell.text for cell in col0.cells]
    print(col0_string)
    

    注:在介绍单元格格式信息时,说过单元格内文字信息也是通过 run 对象设置,故获取文字信息也和前面获取段落文字信息类似,就不重复讲了。

    结尾:

    以上就是本篇博客的全部内容了,后面将会用两个实例来将前面三篇博客的知识点串联起来,感谢阅读。

    【Python与Office】专栏

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

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

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

    展开全文
  • WORD中批量修改表格格式

    万次阅读 2018-07-12 14:01:18
    WORD中批量修改表格格式:第一步,先用宏将所有表格选中:Sub SelectAllTables() Dim mytable As Table Application.ScreenUpdating = False For Each mytable In ActiveDocument.Tables mytable.Range.Editors....
    WORD中批量修改表格的格式:
    第一步,先用宏将所有表格选中:
    Sub SelectAllTables()
    Dim mytable As Table
    Application.ScreenUpdating = False
    For Each mytable In ActiveDocument.Tables
    mytable.Range.Editors.Add wdEditorEveryone
    Next
    ActiveDocument.SelectAllEditableRanges (wdEditorEveryone)
    ActiveDocument.DeleteAllEditableRanges (wdEditorEveryone)
    Application.ScreenUpdating = True
    End Sub
    第二步,设置格式。先设置好字体字号,再设置表格属性:右键——表格属性(或者点菜单栏的表格——表格属性)——行,选中“指定高度”,在“行高值是”中选择“固定值”,设定一个适当值。
    展开全文
  • 在以前的文章中,我分享了如何使用免费控件将word表格中的数据导入到excel中,在本篇文章中我将介绍如何将Excel表格复制到Word表格中,并同时保留原Excel表格的格式

    C# 如何将Excel表格复制到Word中并保留格式

    在以前的文章中,我分享了如何使用免费控件将word表格中的数据导入到excel中,在本篇文章中我将介绍如何将Excel表格复制到Word表格中,并同时保留原Excel表格的格式。

    这里我们需要使用到一个组件,叫做Spire.Office。它是一个企业级的Office组件,包含了Spire.Doc, Spire XLS, Spire.Spreadsheet,  Spire.Presentation, Spire.PDF, Spire.DataExport, Spire.OfficeViewer, Spire.PDFViewer, Spire.DocViewer和Spire.BarCode等组件,使用它我们可以实现在.NET应用程序中查看、操作、转换及打印Office文档,PDF文档,创建Barcode以及数据导入导出等工作。这里我们需要使用到的是其中的Spire.Doc和Spire.XLS组件。

    首先,下载并安装Spire.Office,然后打开Visual Studio,创建项目并引用Spire.Doc.dll和Spire.Xls.dll。以下是我们需要用到的命名空间:

    using Spire.Doc;
    using Spire.Doc.Documents;
    using Spire.Doc.Fields;
    using Spire.Xls;

    详细步骤如下:

    步骤1:从系统加载Excel文件并获取它的第一个工作表。

    Workbook workbook = new Workbook();
    workbook.LoadFromFile("DatatableSample.xlsx");
    Worksheet sheet = workbook.Worksheets[0];
    步骤2:创建一个新的Word文档,添加一个表格并设置它的行列数与Excel表格中的行列数一致。

    Document doc = new Document();
    //添加表格
    Table table = doc.AddSection().AddTable(true);
    //设置行列数
    table.ResetCells(sheet.LastRow, sheet.LastColumn);
    步骤3:将Excel表格中的数据写入到word表格里,并调用自定义的方法CopyStyle()将Excel表格中的格式复制到word表格。

    for (int r = 1; r <=sheet.LastRow; r++)
    {
        for (int c = 1; c <= sheet.LastColumn; c++)
        {
           CellRange xCell =sheet.Range[r, c];
           TableCell wCell =table.Rows[r - 1].Cells[c - 1];
           //将数据写入到word表格
           TextRange textRange =wCell.AddParagraph().AppendText(xCell.NumberText);
           //复制格式到word表格
            CopyStyle(textRange,xCell, wCell);
        }
    }
    自定义的方法CopyStyle(TextRange wTextRange,CellRangexCell,TableCell wCell)如下:

    参数:

    wTextRange: Word表格中的文本

     xCell: Excel表格中的单元格

    wCell: Word表格中的单元格

    private static void CopyStyle(TextRangewTextRange, CellRange xCell, TableCell wCell)
    {
       //复制字体格式
        wTextRange.CharacterFormat.TextColor= xCell.Style.Font.Color;
        wTextRange.CharacterFormat.FontSize= (float)xCell.Style.Font.Size;
        wTextRange.CharacterFormat.FontName= xCell.Style.Font.FontName;
        wTextRange.CharacterFormat.Bold= xCell.Style.Font.IsBold;
        wTextRange.CharacterFormat.Italic= xCell.Style.Font.IsItalic;
       //复制背景颜色
        wCell.CellFormat.BackColor= xCell.Style.Color;
       //复制文本排列方式
        switch(xCell.HorizontalAlignment)
        {
           case HorizontalAlignType.Left:
                wTextRange.OwnerParagraph.Format.HorizontalAlignment= HorizontalAlignment.Left;
               break;
           case HorizontalAlignType.Center:
                wTextRange.OwnerParagraph.Format.HorizontalAlignment= HorizontalAlignment.Center;
               break;
           case HorizontalAlignType.Right:
                wTextRange.OwnerParagraph.Format.HorizontalAlignment= HorizontalAlignment.Right;
               break;
        }
    }

    步骤4:保存文档。

    doc.SaveToFile("result.docx",Spire.Doc.FileFormat.Docx);
    运行结果:



    完整代码:

    using Spire.Doc;
    using Spire.Doc.Documents;
    using Spire.Doc.Fields;
    using Spire.Xls;
     
    namespace 复制Excel表格到Word并保留格式
    {
        class Program
        {
            static void Main(string[] args)
            {
                //加载Excel文档
                Workbook workbook = newWorkbook();
                workbook.LoadFromFile("DatatableSample.xlsx");
                Worksheet sheet = workbook.Worksheets[0];
                //创建一个新的word文档
                Document doc = newDocument();
                //添加一个表格到word文档
                Table table = doc.AddSection().AddTable(true);
                //设置word表格的行列数
               table.ResetCells(sheet.LastRow, sheet.LastColumn);
                for (int r = 1; r<= sheet.LastRow; r++)
                {
                   for (intc = 1; c <= sheet.LastColumn; c++)
                   {
                       CellRange xCell = sheet.Range[r, c];
                       TableCell wCell = table.Rows[r -1].Cells[c - 1];
                       //将Excel表格中的数据写入到word表格
                        TextRangetextRange = wCell.AddParagraph().AppendText(xCell.NumberText);
                       //将Excel表格中的格式复制到word表格
                       CopyStyle(textRange, xCell, wCell);
                   }
                }
                //设置word表格的列宽
                for (int i = 0; i< table.Rows.Count; i++)
                {
                   for (intj = 0; j < table.Rows[i].Cells.Count; j++)
                   {
                       table.Rows[i].Cells[j].Width = 60f;
                    }
                }
                //保存文档并打开
               doc.SaveToFile("result.docx",Spire.Doc.FileFormat.Docx);
               System.Diagnostics.Process.Start("result.docx");
            }
            private static void CopyStyle(TextRangewTextRange, CellRange xCell, TableCell wCell)
            {
                //复制Excel单元格的字体格式到word表格
               wTextRange.CharacterFormat.TextColor = xCell.Style.Font.Color;
               wTextRange.CharacterFormat.FontSize = (float)xCell.Style.Font.Size;
               wTextRange.CharacterFormat.FontName = xCell.Style.Font.FontName;
               wTextRange.CharacterFormat.Bold = xCell.Style.Font.IsBold;
               wTextRange.CharacterFormat.Italic = xCell.Style.Font.IsItalic;
                //复制Excel单元格的背景颜色到word表格
                wCell.CellFormat.BackColor =xCell.Style.Color;
                //复制Excel单元格的字体排列方式到word表格
                switch (xCell.HorizontalAlignment)
                {
                   case HorizontalAlignType.Left:
                       wTextRange.OwnerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Left;
                       break;
                   case HorizontalAlignType.Center:
                       wTextRange.OwnerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Center;
                       break;
                   case HorizontalAlignType.Right:
                       wTextRange.OwnerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Right;
                       break;
                }
            }
        }
    }


     

     

     

    展开全文
  • 刚开始以为是文档格式问题 后面发下有点文档是好的 ,就考虑到是不是字体包问题,本地没有这个字体包 果然文档里面的字体 本地没有这个字体包 去往下下载了字体包 找公司漂亮笑姐姐要了份字体包 导入到电脑字体目录...
  • python 批量填写word表格

    千次阅读 2020-03-22 22:01:21
    今天因为老爸下乡扶贫工作,要填很多word表格,一张表一张表填写显然太慢了,就简单写了一个python代码去处理。大体上就是使用docx库来批量填写word表格,至于word表格的数据来源是使用xlrd库从excel表格中读取出来...
  • #region 对表格进行修改 private static Table EditCell(Table table, Document doc, int row, int cell, string value) { Aspose.Words.Tables.Cell c = table.Rows[row].Cells[cell]; Paragraph p = new ...
  • Python-docx 模块读写 Word 文档基础(一):创建文档、段落格式、字体格式设置方法前言:1、创建 Word 文档及基础用法:2、段落格式设置:3、字体格式设置:结尾:【Python与Word文档】专栏 前言: 从这篇博客开始...
  • python 使用代码写 Word 表格

    千次阅读 2019-12-05 19:58:11
    需求是从Excel中读取信息,写入下图所示的Word表格中 难点: 无法像写入Excel单元格一样,把数据填入Word表格中。 思路: 1、将Word表格模板放到Excel中,向Excel单元格填入数据,最终将Excel中数据加表格放到Word...
  • XML格式Word文档表格常用标签

    千次阅读 2019-02-26 09:59:24
    常用标签 名称 描述 w:p 文本段落 w:pPr 段落设置 w:ind 缩进 ... 文本位置(left/center/right/...) ... 字体设置 w:color 文字颜色 w:sz 文字大小 w:t 文本内容 w:b ...
  • 数据格式(datas): 列表套列表 ... """创建word表格以及插入数据""" doc = Document() doc.styles['Normal'].font.name = 'Calibri' # 是用来设置当文字是西文时的字体, doc.styles['Normal']._element.r
  • CSS 设置表格格式

    千次阅读 2018-02-27 18:18:11
    本节,通过一个简单的表格,来揭开word表格的神秘面纱。表格的HTML代码如下:&lt;table&gt;&lt;caption&gt;表3-2 关系选择器&lt;/caption&gt;&lt;thead&gt; &lt;tr&gt; &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,200
精华内容 8,480
关键字:

word表格字体格式要求