冰蓝科技
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

Word 文档中常包含以表格形式呈现的各种数据,然而,由于 Word 文档中的表格结构相对简单,用户在 Word 文档中难以进行复杂的表格格式处理与数据分析。提取这些表格中的数据并写入到其他更适合表格数据处理的文件格式中,能够使用户享受到数据的筛选、排序以及公式计算等复杂功能,还能提升数据处理的效率。本文将介绍如何使用 Spire.Doc for Python 从 Word 文档中提取表格数据,并写入文本及 Excel 工作表等其他格式的文件中,实现数据提取与写入的自动化。

安装 Spire.Doc for Python

本教程需要使用 Spire.Doc for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Doc

如果您不确定如何安装,请参考:如何在 Windows 中安装 Spire.Doc for Python

用 Python 提取 Word 文档表格并写入文本文件

Spire.Doc for Python 中的 Section.Tables 属性可以用于获取 Word 文档中某一节内的所有表格,并返回一个表格集合。获取到所有表格后,开发人员可以使用 ITable 类下的属性和方法访问表格中的数据,并将这些数据写入到文本文件,从而实现将 Word 文档中的表格转换为文本文件。

从 Word 文档中提取表格并写入文本文件的操作步骤如下:

  • Python
from spire.doc import *
from spire.doc.common import *

# 创建一个 Document 实例
doc = Document()

# 加载一个 Word 文档
doc.LoadFromFile("示例.docx")

# 遍历节(section)
for s in range(doc.Sections.Count):
    # 获取一个节(section)
    section = doc.Sections.get_Item(s)
    # 获取节(section)中的表格(tables)
    tables = section.Tables
    # 遍历表格(tables)
    for i in range(0, tables.Count):
        # 获取一个表格(table)
        table = tables.get_Item(i)
        # 初始化一个字符串来存储表格数据
        tableData = ''
        # 遍历表格的行(rows)
        for j in range(0, table.Rows.Count):
            # 遍历行的单元格(cells)
            for k in range(0, table.Rows.get_Item(j).Cells.Count):
                # 获取一个单元格(cell)
                cell = table.Rows.get_Item(j).Cells.get_Item(k)
                # 获取单元格中的文本
                cellText = ''
                for para in range(cell.Paragraphs.Count):
                    paragraphText = cell.Paragraphs.get_Item(para).Text
                    cellText += (paragraphText + ' ')
                # 将文本添加到字符串中
                tableData += cellText
                if k < table.Rows.get_Item(j).Cells.Count - 1:
                    tableData += '\t'
            # 添加一个新行
            tableData += '\n'
    
        # 将表格数据保存到一个文本文件
        with open(f'output/Tables/Word表格_{s+1}_{i+1}.txt', 'w', encoding='utf-8') as f:
            f.write(tableData)
doc.Close()

Python 提取 Word 文档中的表格

用 Python 提取 Word 文档表格并写入 Excel 文件

使用 Spire.Doc for Python 获取到表格数据后,开发人员还可以使用 Spire.XLS for Python 将表格数据写入 Excel 工作表,从而实现 Word 文档表格到 Excel 工作簿的转换。

通过 PyPI 安装 Spire.XLS for Python:

pip install Spire.XLS

从 Word 文档中提取表格并写入 Excel 工作簿的操作步骤如下:

  • Python
from spire.doc import *
from spire.doc.common import *
from spire.xls import *
from spire.xls.common import *

# 创建一个 Document 实例
doc = Document()

# 加载一个 Word 文档
doc.LoadFromFile('示例.docx')

# 创建一个 Workbook 实例
wb = Workbook()
wb.Worksheets.Clear()

# 遍历文档中的节(section)
for i in range(doc.Sections.Count):
    # 获取一个节(section)
    section = doc.Sections.get_Item(i)
    # 遍历节(section)中的表格(tables)
    for j in range(section.Tables.Count):
        # 获取一个表格(table)
        table = section.Tables.get_Item(j)
        # 创建一个工作表(worksheet)
        ws = wb.Worksheets.Add(f'Table_{i+1}_{j+1}')
        # 将表格写入工作表
        for row in range(table.Rows.Count):
            # 获取一行(row)
            tableRow = table.Rows.get_Item(row)
            # 遍历行(row)中的单元格(cells)
            for cell in range(tableRow.Cells.Count):
                # 获取一个单元格(cell)
                tableCell = tableRow.Cells.get_Item(cell)
                # 获取单元格中的文本
                cellText = ''
                for paragraph in range(tableCell.Paragraphs.Count):
                    paragraph = tableCell.Paragraphs.get_Item(paragraph)
                    cellText = cellText + (paragraph.Text + ' ')
                # 将单元格文本写入工作表
                ws.SetCellValue(row + 1, cell + 1, cellText)

# 保存工作簿
wb.SaveToFile('output/Tables/Word表格转Excel.xlsx', FileFormat.Version2016)
doc.Close()
wb.Dispose()

Python 提取 Word 文档中的表格

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

Spire.Office for Android via Java 8.4.1 已发布。在该版本中,Spire.PDF for Android via Java 支持多项新功能,如转换 PDF 为 PPTX 和 SVGZ,以及比较 PDF 文档;Spire.Presentation for Android via Java 增强了 PPTX 到 PDF 的转换功能。此外,一些已知问题也在该版本中成功修复。详情请阅读以下内容。

获取 Spire.Office for Android via Java 8.4.1 请点击:

https://www.e-iceblue.cn/Downloads/office-for-android-via-java.html


Spire.PDF for Android via Java

新功能:

问题修复:


Spire.Presentation for Android via Java

问题修复:

Spire.Presentation for Android via Java 8.1.2 已发布。该版本修复了转换 PPTX 文档到 PDF,程序抛 "AbstractMethodError" 异常的问题。详情请查看以下内容。

问题修复:


获取 Spire.Presentation for Android via Java 8.1.2 请点击:

https://www.e-iceblue.cn/Downloads/presentation-for-android-via-java.html

在处理文档和数据时,Microsoft Word 的表格功能是一个强大而实用的工具。通过合理设置表格及表格内文本的对齐方式,可以使数据更加整洁有序,提高文档的可读性和视觉效果。本文将介绍如何使用 Spire.Doc for Python 和 Python 在 Word 中设置表格及表格内文本的对齐方式。

安装 Spire.Doc for Python

本教程需要使用 Spire.Doc for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Doc

如果您不确定如何安装,请参考此教程:如何在 Windows 中安装 Spire.Doc for Python

Python 在 Word 中设置表格的对齐方式

在 Spire.Doc for Python 中,可以使用 Table.TableFormat.HorizontalAlignment 属性来控制表格的水平对齐方式,例如将表格对齐到左侧、居中或右侧。详细步骤如下:

  • Python
from spire.doc import *
from spire.doc.common import *

# 创建 Document 类的实例
document = Document()
# 加载 Word 文档
document.LoadFromFile("表格1.docx")

# 获取文档的第一个段落
section = document.Sections.get_Item(0)

# 获取段落中的前三个表格
table1 = section.Tables.get_Item(0)
table2 = section.Tables.get_Item(1)
table3 = section.Tables.get_Item(2)

# 将第一个表格对齐到左侧
table1.TableFormat.HorizontalAlignment = RowAlignment.Left
# 将第二个表格居中对齐
table2.TableFormat.HorizontalAlignment = RowAlignment.Center
# 将第三个表格对齐到右侧
table3.TableFormat.HorizontalAlignment = RowAlignment.Right

# 保存结果文档
document.SaveToFile("对齐表格.docx", FileFormat.Docx2013)
document.Close()

Python 在 Word 中设置表格及表格内文本的对齐方式

Python 在 Word 中设置表格内文本的对齐方式

除了设置表格的对齐方式以外,Spire.Doc for Python 还提供了 TableCell.Paragraphs[index].Format.HorizontalAlignment 和 TableCell.CellFormat.VerticalAlignment 属性,支持控制表格单元格内部文本的水平和垂直对齐方式。详细步骤如下:

  • Python
from spire.doc import *
from spire.doc.common import *

# 创建 Document 类的实例
document = Document()
# 加载 Word 文档
document.LoadFromFile("表格2.docx")

# 获取文档的第一个段落
section = document.Sections.get_Item(0)

# 获取该段落中的第一个表格
table = section.Tables.get_Item(0)

# 遍历表格中的行
for row_index in range(table.Rows.Count):
    row = table.Rows[row_index]
    # 遍历行中的单元格
    for cell_Index in range(row.Cells.Count):
        cell = row.Cells[cell_Index]
        # 将单元格内文本垂直居中对齐
        cell.CellFormat.VerticalAlignment = VerticalAlignment.Middle
        # 将单元格内文本水平居中对齐
        for para_index in range(cell.Paragraphs.Count):
            paragraph = cell.Paragraphs[para_index]
            paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center

# 保存结果文档
document.SaveToFile("对齐表格文本.docx", FileFormat.Docx2013)
document.Close()

Python 在 Word 中设置表格及表格内文本的对齐方式

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

随着团队协作日益普及,Word 文档中的修订追踪功能成为了版本控制和内容审阅的基石。但对于追求自动化与效率的开发者而言,如何灵活地从 Word 文档中抽取这些修订信息,仍是一大挑战。本文将向您介绍如何使用 Spire.Doc for Python 获取 Word 文档中的修订信息。

安装 Spire.Doc for Python

本教程需要 Spire.Doc for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Doc

如果您不确定如何安装,请参考此教程:如何在 Windows 中安装 Spire.Doc for Python

Python 获取 Word 修订信息

Spire.Doc for Python 提供 IsInsertRevision 以及 DeleteRevision 属性支持判断 Word 文档中的元素是否为插入修订/删除修订。以下是详细步骤:

  • Python
from spire.doc import *

# 将文本写入文件
def WriteAllText(fname: str, text: str):
    with open(fname, "w", encoding='utf-8') as fp:
        fp.write(text)

inputFile = "修订测试.docx"
outputFile1 = "新增修订.txt"
outputFile2 = "删除修订.txt"

# 创建Document类的对象
document = Document()

# 加载Word文档
document.LoadFromFile(inputFile)

# 初始化列表来收集文本片段
insert_revisions = []
delete_revisions = []

# 遍历文档所有章节
for k in range(document.Sections.Count):
    sec = document.Sections.get_Item(k)

    # 遍历章节中的正文元素
    for m in range(sec.Body.ChildObjects.Count):
        # Check if the item is a Paragraph
        docItem = sec.Body.ChildObjects.get_Item(m)
        if isinstance(docItem, Paragraph):
            para = docItem

            # 判断段落是否为插入修订
            if para.IsInsertRevision:
                # 获取修订的类型,作者及其关联的内容
                insRevison = para.InsertRevision
                insType = insRevison.Type
                insAuthor = insRevison.Author
                insert_revisions.append(f"Revision Type: {insType.name}\n")
                insert_revisions.append(f"Revision Author: {insAuthor}\n")
                insert_revisions.append(f"Insertion Text: {para.Text}\n")
            # 判断段落是否为删除修订
            elif para.IsDeleteRevision:
                # 获取修订的类型,作者及其关联的内容
                delRevison = para.DeleteRevision
                delType = delRevison.Type
                delAuthor = delRevison.Author
                delete_revisions.append(f"Revision Type:: {delType.name}\n")
                delete_revisions.append(f"Revision Author: {delAuthor}\n")
                delete_revisions.append(f"Deletion Text: {para.Text}\n")
            # 如果段落没有修订,则遍历段落中的元素
            else:
                for j in range(para.ChildObjects.Count):
                    obj = para.ChildObjects.get_Item(j)
                    if isinstance(obj, TextRange):
                        textRange = obj

                        # 判断textrange是否为插入修订
                        if textRange.IsInsertRevision:
                            # 获取修订的类型,作者及其关联的内容
                            insRevison = textRange.InsertRevision
                            insType = insRevison.Type
                            insAuthor = insRevison.Author
                            insert_revisions.append(f"Revision Type: {insType.name}\n")
                            insert_revisions.append(f"Revision Author: {insAuthor}\n")
                            insert_revisions.append(f"Insertion Text: {textRange.Text}\n")
                        # 判断textrange是否为删除修订
                        elif textRange.IsDeleteRevision:
                            # 获取修订的类型,作者及其关联的内容
                            delRevison = textRange.DeleteRevision
                            delType = delRevison.Type
                            delAuthor = delRevison.Author
                            delete_revisions.append(f"Revision Type: {delType.name}\n")
                            delete_revisions.append(f"Revision Author: {delAuthor}\n")
                            delete_revisions.append(f"Deletion Text: {textRange.Text}\n")

# 写出修订信息到文件
WriteAllText(outputFile1, ''.join(insert_revisions))
WriteAllText(outputFile2, ''.join(delete_revisions))

# 释放资源
document.Dispose()

Python 获取 Word 修订信息

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

PowerPoint 文本框内容分多列显示极大增强了信息的呈现效果与观众理解度。它通过缩短行长提升阅读流畅性,使密集文字变得易于消化;优化视觉布局,营造美观且专业的观感;高效利用空间,确保信息丰富而不杂乱。本文将介绍如何使用 Spire.Presentation for .NET 在 C# 项目中添加或移除 PowerPoint 文本框中的分栏。

安装 Spire.Presentation for .NET

首先,您需要添加 Spire.Presentation for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。

PM> Install-Package Spire. Presentation

C# 添加 PowerPoint 文本框中的分栏

Spire.Presentation 提供了 Shape.TextFrame.ColumnCount 属性设置内容分栏的列数和 Shape.TextFrame.ColumnSpacing 属性设置列间距。以下是详细的步骤:

  • C#
using Spire.Presentation;

namespace SpirePresentationDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建一个Presentation对象
            Presentation presentation = new Presentation();

            // 加载PPTX文件
            presentation.LoadFromFile("示例1.pptx");

            // 获取第一张幻灯片
            ISlide slide = presentation.Slides[0];

            // 检查幻灯片上的第一个形状是否为IAutoShape类型
            if (slide.Shapes[0] is IAutoShape)
            {
                // 将第一个形状转换为IAutoShape对象
                IAutoShape shape = (IAutoShape)slide.Shapes[0];
                // 设置形状文本框的列数为2
                shape.TextFrame.ColumnCount = 2;

                // 设置形状文本框的列间距为25像素
                shape.TextFrame.ColumnSpacing = 25f;
            }

            // 保存修改后的演示文稿为新的PPTX文件
            presentation.SaveToFile("添加文本框的多列设置.pptx", Spire.Presentation.FileFormat.Pptx2016);

            // 释放Presentation对象占用的资源
            presentation.Dispose();
        }
    }
}

C# 添加或移除 PowerPoint 文本框中的分栏

C# 移除 PowerPoint 文本框中的分栏

要移除文本框内容的分栏设置只需将 Shape.TextFrame.ColumnCount 属性赋值为1即可。以下是详细的步骤:

  • C#
using Spire.Presentation;

namespace SpirePresentationDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建一个Presentation对象
            Presentation presentation = new Presentation();

            // 加载PPTX文件
            presentation.LoadFromFile("示例2.pptx");

            // 获取第一张幻灯片
            ISlide slide = presentation.Slides[0];

            // 检查幻灯片上的第一个形状是否为IAutoShape类型
            if (slide.Shapes[0] is IAutoShape)
            {
                // 将第一个形状转换为IAutoShape对象
                IAutoShape shape = (IAutoShape)slide.Shapes[0];
                // 设置形状文本框的列数为1
                shape.TextFrame.ColumnCount = 1;
            }

            // 保存修改后的演示文稿为新的PPTX文件
            presentation.SaveToFile("移除分栏设置.pptx", Spire.Presentation.FileFormat.Pptx2016);

            // 释放Presentation对象占用的资源
            presentation.Dispose();
        }
    }
}

C# 添加或移除 PowerPoint 文本框中的分栏

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

很高兴通知大家,Spire.Office 9.5.0 现已发布。在该版本中,Spire.Doc 支持将 Word 转换为 PDF 时保留表单字段;Spire.XLS 支持根据正则表达式查找单元格;Spire.Presentation 支持设置两列之间的间距。同时,还修复了大量已知问题。更多详情如下。

该版本涵盖了最新版的 Spire.Doc,Spire.PDF,Spire.XLS,Spire.Email,Spire.DocViewer,Spire.PDFViewer,Spire.Presentation,Spire.Spreadsheet,Spire.OfficeViewer,Spire.Barcode,Spire.DataExport。

版本信息如下:

获取 Spire.Office 9.5.0 请点击:

https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html


Spire.Doc

新功能:

问题修复:


Spire.PDF

问题修复:


Spire.XLS

新功能:

问题修复:


Spire.Presentation

新功能:

问题修复:

Spire.Office for Java 9.5.0 更新已发布。在该版本中,Spire.PDF for Java 支持获取 PDF 文档中的 Javascript 内容;Spire.Doc for Java 支持对比文档时设置忽略页眉页脚对比;Spire.XLS for Java 增强了 Excel 到 PDF 和图片的转换。此外,许多已知问题在该版本中成功修复。详情请阅读以下内容。

获取 Spire.Office for Java 9.5.0 请点击:

https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html


Spire.PDF for Java

新功能:

问题修复:


Spire.Doc for Java

新功能:

问题修复:


Spire.XLS for Java

问题修复:


Spire.Presentation for Java

问题修复:

Spire.Doc for Java 12.5.1 现已正式发布。该版本支持对比文档时设置忽略页眉页脚对比的选项,并修复了一些已知问题,如转换 HTML 到 Word 时段落对齐方式不正确的问题,使用 WPS 规则转换 Word 到 PDF 时出现多余内容的问题等。详情请查阅以下内容。

新功能:

问题修复:


获取 Spire.Doc for Java 12.5.1 请点击:

https://www.e-iceblue.cn/Downloads/Spire-Doc-JAVA.html

比较两个 Word 文档以发现差异是审查修改、确保准确性及内容协作时的一项关键任务。此过程使您能够识别不同文档版本间所做的添加、删除和修改。通过比较版本,您可以高效地追踪变更、验证更新并维护文档的完整性。本文将向您介绍如何使用 Spire.Doc for Python 比较两个 Word 文档。

安装 Spire.Doc for Python

本教程需要 Spire.Doc for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Doc

如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.Doc for Python

Python 比较两个 Word 文档

MS Word 自带“比较”功能,可直接对比文档的两个版本,并生成一份突出显示两者差异的新文档。使用 Spire.Doc for Python 提供的 Document.Compare() 方法可以实现类似的对比。以下是详细步骤:

  • Python
from spire.doc import *
# 初始化Document对象并加载第一个Word文档
firstDoc = Document("会议通知A.docx")  

# 初始化Document对象并加载第二个Word文档 
secondDoc = Document("会议通知B.docx")  

# 对比两个文档并指定比较结果中差异标注的作者名称 
firstDoc.Compare(secondDoc, "冰蓝科技")  

# 保存比较后的文档 
firstDoc.SaveToFile("对比文档1.docx", FileFormat.Docx2016)  

# 释放资源 
firstDoc.Dispose() 
secondDoc.Dispose()

Python 比较 Word 文档

Python 比较两个 Word 文档时设置比较选项

当您的目标是专注于文本内容的变动而非格式时,无格式比较 Word 文档就显得尤为实用。Spire.Doc for Python 为此提供了 CompareOptions 类,其中包含一个 IgnoreFormatting 属性,将其设定为 True 即可忽视所有格式变化。在执行 Compare() 方法之际,只需将配置了该属性的 CompareOptions 对象作为参数传递,系统即会按需执行比较操作,确保只凸显文本差异。下面是具体的操作步骤:

  • Python
from spire.doc import *  

# 初始化Document对象并加载第一个Word文档 
firstDoc = Document("会议通知A.docx")  

# 初始化Document对象并加载第二个Word文档 
secondDoc = Document("会议通知B.docx")  

# 设置比较选项以忽略格式比较 
compareOptions = CompareOptions() compareOptions.IgnoreFormatting = True  

# 对比文档 
firstDoc.Compare(secondDoc, "冰蓝科技", compareOptions)  

# 保存比较后的结果 
firstDoc.SaveToFile("对比文档2.docx", FileFormat.Docx2016)  

# 释放资源 
firstDoc.Dispose() secondDoc.Dispose()

Python 比较 Word 文档

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。