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

Spire.Cloud 纯前端文档控件

统计 Word 文档中的字数、字符数、段落数、行数和页数是分析文本内容的重要指标。字数指单词总量;字符数包括字母、数字及标点;段落数反映文本结构;行数显示文本密度;页数则关联打印布局。在本文中,我们将演示如何使用 Spire. Doc for .NET 在 C# 中统计 Word 文档中的字数、字符数、段落数、行数和页数。

安装 Spire.Doc for .NET

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

PM> Install-Package Spire.Doc

统计 Word 文档中字数、字符数、段落数、行数和页数

Spire.Doc for .NET 提供了 BuiltinDocumentProperties 类,使您能够从 Word 文档中检索重要信息。通过使用此类,您可以获取文档的内置和自定义属性,包括文档的字数、字符数、段落数、行数和页数的精确计数。具体步骤如下。

  • C#
using Spire.Doc;
using System.IO;
using System.Text;

namespace CountWordsCharactersEtcInWord
{
    internal class Program
    {
         static void Main(string[] args)      
  {
            // 创建一个Document对象,用于操作Word文档
            Document document = new Document();

            // 从指定路径加载一个Word文档
            document.LoadFromFile(@"Input.docx");

            // 获取BuiltinDocumentProperties对象
            BuiltinDocumentProperties properties = document.BuiltinDocumentProperties;

            // 获取文档中的字数
            int wordCount = properties.WordCount;
            
            // 获取文档中的字符数(不包括空格)
            int charCount = properties.CharCount;

            // 获取文档中的字符数(包括空格)
            int charCountWithSpace = properties.CharCountWithSpace;

            // 获取文档中的段落数
            int paraCount = properties.ParagraphCount;
          
            // 获取文档中的行数
            int lineCount = properties.LinesCount;
               
            // 获取文档中的页数
            int pageCount = properties.PageCount;

            // 创建一个StringBuilder对象 
            StringBuilder sb = new StringBuilder();

            // 将各个统计信息添加到StringBuilder中
            sb.AppendLine("字数: " + wordCount);
            sb.AppendLine("字符数(不计空格): " + charCount);
            sb.AppendLine("字符数(计空格): " + charCountWithSpace);
            sb.AppendLine("段落数: " + paraCount);
            sb.AppendLine("行数: " + lineCount);
            sb.AppendLine("页数: " + pageCount);

            // 将统计结果写入到指定的文本文件中
            File.WriteAllText(@"result.txt", sb.ToString());

            // 关闭文档对象,释放资源
            document.Close();
        }
    }
}

C# 统计 Word 文档中的字数、字符数、段落数、行数和页数

统计 Word 文档中指定段落中的字数和字符数

除了统计整个 Word 文档中的字数和字符数外,Spire.Doc for .NET 还允许您使用 Paragraph.WordCount 和 Paragraph.CharCount 属性来统计特定段落的字数和字符数。具体步骤如下:

  • C#
using Spire.Doc.Documents;
using Spire.Doc;
using System.Text;
using System.IO;

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

            // 从指定路径加载Word文档
            document.LoadFromFile(@"Input.docx");

            // 获取文档的第一个节的第二个段落
            Paragraph paragraph = document.Sections[0].Paragraphs[1];

            // 计算段落中的单词数量
            int wordCount = paragraph.WordCount;

            // 计算段落中的字符数量(不包括空格)
            int charCount = paragraph.CharCount;

            // 计算段落中的字符数量(包括空格)
            int chartIncludeSpace = paragraph.CharCountIncludeSpace;

            // 创建一个StringBuilder对象
            StringBuilder sb = new StringBuilder();

            // 将单词数量添加到StringBuilder中
            sb.AppendLine("字数: " + wordCount);

            // 将字符数量(不计空格)添加到StringBuilder中
            sb.AppendLine("字符数(不计空格): " + charCount);

            // 将字符数量(计空格)添加到StringBuilder中
            sb.AppendLine("字符数(计空格): " + chartIncludeSpace);

            // 将StringBuilder写入到指定的文件中
            File.WriteAllText(@"Pararesult.txt", sb.ToString());

            // 关闭文档对象
            document.Close();  
            }
    }
}

C# 统计 Word 文档中的字数、字符数、段落数、行数和页数

申请临时 License

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

Spire.Presentation for Java 9.7.4 已发布。该版本主要修复了一些在转换 PPT 到图片,以及加载、保存PPT文档时遇到的问题。详情请查看以下内容。

问题修复:


获取 Spire.Presentation for Java 9.7.4 请点击:

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

Spire.PDF 10.7.12 已发布。本次更新新增支持转换到 PDFA 格式文档时允许保留 XMP 数据。此外,一些已知问题也在该版本中成功修复,如验证签名有效性不准确的问题。详情请阅读以下内容。

新功能:

问题修复:


获取 Spire.PDF 10.7.12,请点击:

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

C#:Word 转 Excel

Word 和 Excel 分别适用于不同类型的内容——Word 侧重文档编辑,而 Excel 更擅长处理结构化数据和分析。正因如此,在两种格式之间转换内容并不总是那么直观。若 Word 文档中包含希望在 Excel 中查看或处理的数据,手动转换可能相当繁琐。借助 Spire.Doc for .NET,您可以直接将 Word 转换为 Excel,从而更高效地复用文档中的数据。

在本教程中,您将学习如何使用 C# 实现 Word 到 Excel 的转换。

安装 Spire.Doc for .NET

首先,您需要将 Spire.Doc for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。

这些 DLL 文件可从此链接下载,或通过 NuGet 安装。

PM> Install-Package Spire.Doc

基础转换:在 C# 中将 Word 转为 Excel

使用 Spire.Doc 将 Word 文档转换为 Excel 十分简便:

  • 使用 Document.LoadFromFile() 方法加载 Word 文档。
  • 使用 Document.SaveToFile() 方法将文档另存为 Excel 文件。

当 Word 文档中包含结构化内容(尤其是表格)时,此方法效果最佳,因为表格可自然地映射至 Excel 单元格。

using Spire.Doc;

namespace WordToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            // 加载 Word 文档
            Document document = new Document();
            document.LoadFromFile("G:/Documents/Sample.docx");

            // 另存为 Excel
            document.SaveToFile("G:/Documents/Sample84.xlsx", FileFormat.XLSX);

            // 释放资源
            document.Dispose();
        }
    }
}

输出效果:

Word 转 Excel 的基础转换

哪些内容转换效果最好?

在将 Word 转换为 Excel 时,了解内容的解析方式至关重要:

  • Word 中的表格会转换为 Excel 的工作表,并保留行和列的结构。
  • 段落文本可能会插入到单元格中,但缺乏严格的结构映射。
  • 悬浮元素、多栏部分等复杂布局可能无法完美转换。
  • 默认情况下,Word 文档中的每个“节(Section)”会转换为 Excel 中的独立“工作表(Worksheet)”。

建议:为获得最佳转换效果,请确保 Word 文档在转换前使用清晰的表格结构。

进阶 Word 转 Excel 转换场景

掌握基础转换后,您可以根据实际需求处理更复杂的场景。

仅将 Word 中的表格转换为 Excel

若仅需要结构化数据,从 Word 文档中提取表格往往比转换整个文件更有用。默认情况下,同一节内的所有表格都会放在同一个工作表中。若要将每个表格输出至独立的工作表,可在转换前将每个表格放入单独的“节”中。

为此,您可以操作文档结构与表格对象:

  • 使用 section.Tables 访问节中的所有表格。
  • 使用 table.Clone() 创建表格副本。
  • 为每个表格创建新节,使其在 Excel 中映射至独立的工作表。
using Spire.Doc;

class Program
{
    static void Main()
    {
        // 加载源 Word 文档
        Document doc = new Document();
        doc.LoadFromFile("G:/Documents/Sample84.docx");

        // 创建一个临时文档用于存储提取的表格
        Document tempDoc = new Document();

        // 遍历源文档的所有节
        foreach (Section section in doc.Sections)
        {
            // 遍历当前节中的所有表格
            foreach (Table table in section.Tables)
            {
                // 为每个表格创建新节(每个节将成为 Excel 中的独立工作表)
                Section tempSec = tempDoc.AddSection();
                
                // 克隆表格并添加到新节中
                tempSec.Tables.Add(table.Clone());
            }
        }

        // 保存为 Excel 文件
        tempDoc.SaveToFile("Tables.xlsx", FileFormat.XLSX);
        
        doc.Dispose();
        tempDoc.Dispose();
    }
}

仅转换表格为 Excel

说明:由于每个表格在转换前都被置于独立的节中,输出的 Excel 文件里每个表格会显示在独立的工作表中。

将 Word 文档的指定页面转换为 Excel

某些情况下,仅特定页面包含所需数据(例如第 2 页的汇总表)。此时,您可在转换前使用 Document.ExtractPages() 将该页面内容隔离至新的 Document 对象中。这避免了处理整个文件,并生成更清晰、聚焦的输出。

using Spire.Doc;

namespace WordPageToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            Document document = new Document();
            document.LoadFromFile("input.docx");

            // 提取指定页面的内容(例如第 2 页,对应索引为 1,索引从 0 开始)
            Document pageDoc = document.ExtractPages(1, 1); 

            // 将提取的页面保存为 Excel
            pageDoc.SaveToFile("output.xlsx", FileFormat.XLSX); 

            document.Dispose();
            pageDoc.Dispose();
        }
    }
}

转换指定 Word 页面为 Excel

提示:Word 中的页面边界是基于流式布局的,可能会因字体渲染差异而发生变化。若提取结果与 Word 中显示的页面不完全一致,可以在目标页码附近尝试不同索引值进行微调。

批量转换多个 Word 文档为 Excel

要转换整个文件夹中的 Word 文件,可以遍历所有 .docx 文件并应用相同的转换逻辑。这适用于批量迁移或定时任务处理场景,也可以很方便地集成到后台任务或自动化流程中。。

using Spire.Doc;
using System.IO;

namespace BatchWordToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            string inputFolder = "inputDocs";
            string outputFolder = "outputExcels";
            Directory.CreateDirectory(outputFolder);

            string[] wordFiles = Directory.GetFiles(inputFolder, "*.docx");

            // 遍历每个 Word 文件并转换为 Excel
            foreach (string filePath in wordFiles)
            {
                Document document = new Document();
                document.LoadFromFile(filePath);

                string fileName = Path.GetFileNameWithoutExtension(filePath);
                string outputPath = Path.Combine(outputFolder, fileName + ".xlsx");

                document.SaveToFile(outputPath, FileFormat.XLSX);
                document.Dispose();
            }
        }
    }
}

提示:对于大批量处理,建议将内部代码块包裹在 try/catch 语句中,以防止单个格式错误的文件导致整个流程中止。如果您的转换工作流需要在转换前先合并文档,可了解如何在 C# 中合并 Word 文档。

注意事项与最佳实践

  • 结构化表格:为了获得最佳转换结果,请使用结构良好的 Word 表格。
  • 避免复杂布局:尽量避免使用悬浮图形或多栏设计。
  • 内存优化:处理大批量文件时,考虑分批处理文件以优化内存使用。

常见问题

问题1:支持转换哪些 Word 文件格式?

答:Spire.Doc for .NET 支持 .doc 和 .docx 格式作为输入。您可使用 Document.LoadFromFile() 加载任一格式,库将自动处理其余部分。

问题2:转换后会保留原始格式吗?

答:转换的主要目标是将内容导出为电子表格格式。表格等结构化内容通常可保留较好的可读性,而复杂布局可能无法完全按 Word 原样保留。

问题3:该功能适合处理大型文档吗?

答:适合,但性能可能因文档大小与复杂程度而异。对于大型文件,建议在代码中优化内存使用并高效处理文档。

问题4:转换后能否进一步自定义 Excel 输出?

答:可以。保存为 .xlsx 后,您可以结合使用 Spire.XLS for .NET 打开该文件以进一步自定义输出,例如调整单元格样式、字体、颜色、列宽或添加公式。这两个库设计可无缝协同工作。

结语

本文介绍了如何使用 Spire.Doc for .NET 在 C# 中将 Word 转换为 Excel,涵盖从基础转换到页面提取与表格定向处理等进阶场景。若需要更精细地控制输出结果(如调整字体、颜色或单元格格式),可将其与 Spire.XLS for .NET 结合使用。

您也可探索其他转换功能,例如将 Word 文档导出为 PDF、HTML 或图片等。

获取免费授权

如需移除生成文档中的评估水印或解除功能限制,请申请 30 天免费临时授权。

Spire.Doc for Python 12.7.1 已发布,本次更新修复了在 Ubuntu 22 系统上使用 Spire.Doc 的一些功能抛异常 "ffi_prep_cif_var failed" 的问题。详情请阅读以下内容。

问题修复:


获取 Spire.Doc for Python 12.7.1 请点击:

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

与 Excel 文件相比,TXT 文本文件更容易阅读,且占用内存也更少,因为它们只包含纯文本数据,没有任何复杂的格式或结构。因此,在某些要求简单和高效的场景下,会需要将 Excel 文件转换为 TXT 文本文件。本文将演示如何使用 Spire.XLS for .NET 通过 C# 代码将 Excel 转换为 TXT 格式。

安装 Spire.XLS for .NET

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

PM> Install-Package Spire.XLS

C# 将 Excel 转换为 TXT 文本格式

Spire.XLS for .NET 提供了 Worksheet.SaveToFile(string fileName, string separator, Encoding encoding) 方法,用于将指定的工作表转换为 TXT 文本文件。具体步骤如下:

  • C#
using Spire.Xls;
using System.Text;

namespace ExcelToTXT
{
    class Program
    {
        static void Main(string[] args)
        {

            //创建Workbook对象
            Workbook workbook = new Workbook();

            //加载Excel文件
            workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\测试.xlsx");

            //获取第一张工作表
            Worksheet sheet = workbook.Worksheets[0];

            //将工作表另存为txt文件
            sheet.SaveToFile("Excel转Txt.txt", " ", Encoding.UTF8);

        }
    }
}

C# 将 Excel 转为 TXT 文本

申请临时 License

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

Spire.XLS 14.7.2 现已发布。该版本支持获取工作表的自定义属性以及嵌入 OLE 对象的原文档名称。此外,一些在转换 Excel 到图片和 PDF 时出现的问题也已成功被修复。新功能及问题修复详情如下。

新功能:

问题修复:


下载 Spire.XLS 14.7.2,请点击:

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

当一个 PowerPoint 演示文稿被转换为 PDF 时,它的文档布局和格式是固定的。接收者可以在没有安装微软 PowerPoint 的情况下查看转换后的文档,但他们不能轻易地修改它。在本文中,我们将演示如何使用 Spire.Presentation for Java 库将 PowerPoint 演示文稿转换为 PDF 以及实现各种转换效果。

安装 Spire.Presentation for Java

首先,您需要在 Java 程序中添加 Spire.Presentation.jar 文件作为依赖项。JAR 文件可以从此链接下载。如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而轻松地在应用程序中导入 JAR 文件。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.presentation</artifactId>
        <version>11.9.10</version>
    </dependency>
</dependencies>

将整个 PowerPoint 转换为 PDF

直接将 PowerPoint 文档转换为 PDF 时,可以先使用 Presentation.loadFromFile() 方法加载文档,然后使用 Presentation.saveToFile() 方法将其保存为 PDF 文件。详细步骤如下:

  • Java
import com.spire.presentation.FileFormat;
import com.spire.presentation.Presentation;

public class ConvertPowerPointToPDF {
    public static void main(String[] args) throws Exception {
        // 创建一个Presentation对象,用于操作PowerPoint演示文稿
        Presentation ppt = new Presentation();

        // 从文件系统中加载一个名为"Sample.pptx"的PowerPoint文件到Presentation对象中
        ppt.loadFromFile("Sample.pptx");

        // 将加载后的PowerPoint演示文稿保存为PDF格式的文件,文件名为"ToPdf1.pdf"
        ppt.saveToFile("ToPdf1.pdf", FileFormat.PDF);
    }
}

Java 将 PowerPoint 转为 PDF

将 PowerPoint 的特定幻灯片转换为 PDF

首先,使用 Presentation.getSlides().get() 方法获取到特定的幻灯片,然后使用 ISlide.saveToFile() 方法将该幻灯片保存为 PDF,详细步骤如下:

  • Java
import com.spire.presentation.FileFormat;
import com.spire.presentation.ISlide;
import com.spire.presentation.Presentation;

public class toPdfSpecifySlide {
    public static void main(String[] args) throws Exception {
        // 创建一个Presentation对象,用于操作PowerPoint演示文稿
        Presentation ppt = new Presentation();

        // 从文件系统中加载一个名为"Sample.pptx"的PowerPoint文件到Presentation对象中
        ppt.loadFromFile("Sample.pptx");

        // 获取演示文稿中的第二个幻灯片(索引为1)
        ISlide slide= ppt.getSlides().get(1);

        // 将选定的幻灯片保存为PDF格式的文件,文件名为"ToPdf2.pdf"
        slide.saveToFile("ToPdf2.pdf", FileFormat.PDF);
    }
}

Java 将 PowerPoint 转为 PDF

将 PowerPoint 转换为 PDF/A

Spire.Presenation for Java 提供了 SaveToPdfOption 类来设置一些 PowerPoint 转 PDF 过程中的一些选项。比如你可以使用 SaveToPdfOption.setPdfConformanceLevel() 方法来使生成的 PDF 文档满足 PDF/A 规范,详细步骤如下:

  • Java
import com.spire.presentation.*;
import com.spire.presentation.pdf.PdfConformanceLevel;

public class newToPdfA {
    public static void main(String[] args) throws Exception {
        // 创建一个Presentation对象,用于处理PowerPoint演示文稿
        Presentation ppt = new Presentation();

        // 从文件系统中加载一个名为"Sample.pptx"的PowerPoint文件
        ppt.loadFromFile("Sample.pptx");

        // 获取SaveToPdfOption对象
        SaveToPdfOption saveToPdfOption = ppt.getSaveToPdfOption();

        // 设置结果PDF的格式为PDF/A-1a
        saveToPdfOption.setPdfConformanceLevel(PdfConformanceLevel.Pdf_A_1_A);

        // 将PowerPoint演示文稿保存为名为"outputPDFA.pdf"的PDF文件
        ppt.saveToFile("outputPDFA.pdf", FileFormat.PDF);

        // 释放资源
        ppt.dispose();
    }
}

Java 将 PowerPoint 转为 PDF

将 PowerPoint 转换为受密码保护的 PDF

Spire.Presenation for Java 提供的 SaveToPdfOption 类还可以通过 SaveToPdfOption. getPdfSecurity().encrypt() 方法实现给转换后的 PDF 文档设置打开密码,详细步骤如下:

  • Java
import com.spire.presentation.FileFormat;
import com.spire.presentation.Presentation;
import com.spire.presentation.SaveToPdfOption;

public class toPassWordPdf {
    public static void main(String[] args) throws Exception {
        // 创建一个Presentation对象,用于处理PowerPoint演示文稿
        Presentation ppt = new Presentation();

        // 从文件系统中加载一个名为"Sample.pptx"的PowerPoint文件
        ppt.loadFromFile("Sample.pptx");

        // 获取SaveToPdfOption对象
        SaveToPdfOption saveToPdfOption = ppt.getSaveToPdfOption();

        // 给结果PDF设置打开密码
        saveToPdfOption.getPdfSecurity().encrypt("e-iceblue");

        // 将PowerPoint演示文稿保存为名为"outputPass.pdf"的PDF文件
        ppt.saveToFile("outputPass.pdf", FileFormat.PDF);

        // 释放资源
        ppt.dispose();
    }
}

Java 将 PowerPoint 转为 PDF

将 PowerPoint 转换为有权限限制的 PDF

下面来看如何通过 Spire.Presenation for Java 提供的 SaveToPdfOption 类来实现给 PDF 设置权限和权限密码,主要会使用到 SaveToPdfOption. getPdfSecurity().encrypt() 方法,详细步骤如下:

  • Java
import com.spire.presentation.*;
import com.spire.presentation.pdf.security.PdfPermissionsFlags;

public class toPermissionedPdf {
    public static void main(String[] args) throws Exception {
        // 创建一个Presentation对象,用于处理PowerPoint演示文稿
        Presentation ppt = new Presentation();

        // 从文件系统中加载一个名为"Sample.pptx"的PowerPoint文件
        ppt.loadFromFile("Sample.pptx");

        // 获取SaveToPdfOption对象
        SaveToPdfOption saveToPdfOption = ppt.getSaveToPdfOption();

        // 对生成的PDF设置权限密码、以及只允许文档有打印权限
        saveToPdfOption.getPdfSecurity().encrypt("e-iceblue", PdfPermissionsFlags.Print);

        // 将PowerPoint演示文稿保存为名为"outputPermission.pdf"的PDF文件
        ppt.saveToFile("outputPermission.pdf", FileFormat.PDF);

        // 释放资源
        ppt.dispose();
    }
}

Java 将 PowerPoint 转为 PDF

将 PowerPoint 转换为 PDF 时设置每页中幻灯片数量

Spire.Presentation for Java 提供了 SaveToPdfOption.setPageSlideCount() 方法来设置生成的 PDF 文档设置一个页面包含幻灯片的数量,详细步骤如下:

  • Java
import com.spire.presentation.*;

public class toPDFNumber {
    public static void main(String[] args) throws Exception {
        // 创建一个Presentation对象,用于处理PowerPoint演示文稿
        Presentation ppt = new Presentation();

        // 从文件系统中加载一个名为"Sample.pptx"的PowerPoint文件
        ppt.loadFromFile("input.pptx");

        // 获取SaveToPdfOption对象
        SaveToPdfOption saveToPdfOption = ppt.getSaveToPdfOption();

        // 设置生成的PDF文档中一个页面包含4页幻灯片
        saveToPdfOption.setPageSlideCount(PageSlideCount.Four);

        // 将PowerPoint演示文稿保存为名为"outputNumber.pdf"的PDF文件
        ppt.saveToFile("outputNumber.pdf", FileFormat.PDF);

        // 释放资源
        ppt.dispose();
    }
}

Java 将 PowerPoint 转为 PDF

将 PowerPoint 转换为自定义页面尺寸的 PDF

将 PowerPoint 文档转为 PDF,有时为了适合打印,需要重新设置页面大小,通过 Presentation.getSlideSize().setType() 方法来设置当前 PowerPoint 文档的页面尺寸,转为 PDF 时也会是这个设置好的尺寸,详细步骤如下:

  • Java
import com.spire.presentation.*;

public class toPdfWithSpecificPageSize {
    public static void main(String[] args) throws Exception {
        // 定义输入文件名,这里是一个PowerPoint演示文稿文件
        String inputFile = "Sample.pptx";

        // 定义输出文件名,这里是一个PDF文件
        String outputFile = "result.pdf";

        // 创建一个Presentation对象,用于处理PowerPoint文件
        Presentation ppt = new Presentation();

        // 从指定的文件中加载PowerPoint演示文稿
        ppt.loadFromFile(inputFile);

        // 设置幻灯片的大小类型为A4纸张大小
        ppt.getSlideSize().setType(SlideSizeType.A4);

        // 将PowerPoint演示文稿保存为PDF格式的文件
        ppt.saveToFile(outputFile, FileFormat.PDF);

        // 释放与Presentation对象关联的资源
        ppt.dispose();
    }
}

Java 将 PowerPoint 转为 PDF

申请临时 License

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

在日常工作和学习中,我们经常需要处理包含各种表格数据的 Word 文档。这些表格可能包含重要的统计数据、财务信息或其他关键内容。有时我们需要从 Word 文档中提取这些表格,以便进行进一步的数据分析、整理或与他人共享。在这篇文章中,我们将介绍如何使用 Spire.Doc for .NET 和 C# 从 Word 文档中提取表格。

安装 Spire.Doc for .NET

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

PM> Install-Package Spire.Doc

C# 从 Word 文档中提取表格

在 Spire.Doc for .NET 中,Section.Tables 属性用于访问 Word 文档特定节中包含的表格。该属性返回一个 ITable 对象的集合,每个对象代表该节中的一个独立表格。获取 ITable 对象后,就可以遍历它们的行和单元格,并使用 cell.Paragraphs[index].Text 属性来提取每个单元格的文本内容。

从 Word 文档中提取表格的详细步骤如下:

  • C#
using Spire.Doc;
using Spire.Doc.Collections;
using Spire.Doc.Interface;
using System.IO;
using System.Text;

namespace ExtractWordTable
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建 Document 类的对象
            Document doc = new Document();
            // 加载 Word 文档
            doc.LoadFromFile("表格.docx");

            // 遍历文档中的各个节
            for (int sectionIndex = 0; sectionIndex < doc.Sections.Count; sectionIndex++)
            {
                // 获取当前节
                Section section = doc.Sections[sectionIndex];

                // 获取当前节中的表格集合
                TableCollection tables = section.Tables;

                // 遍历节中的各个表格
                for (int tableIndex = 0; tableIndex < tables.Count; tableIndex++)
                {
                    // 获取当前表格
                    ITable table = tables[tableIndex];

                    // 初始化一个string对象来存储表格数据
                    string tableData = "";

                    // 遍历表格中的行
                    for (int rowIndex = 0; rowIndex < table.Rows.Count; rowIndex++)
                    {
                        // 获取当前行
                        TableRow row = table.Rows[rowIndex];
                        // 遍历行中的单元格
                        for (int cellIndex = 0; cellIndex < row.Cells.Count; cellIndex++)
                        {
                            // 获取当前单元格
                            TableCell cell = table.Rows[rowIndex].Cells[cellIndex];

                            // 获取单元格中的文本
                            string cellText = "";
                            for (int paraIndex = 0; paraIndex < cell.Paragraphs.Count; paraIndex++)
                            {
                                cellText += (cell.Paragraphs[paraIndex].Text.Trim() + " ");
                            }

                            // 将文本添加到string对象中
                            tableData += cellText.Trim();
                            if (cellIndex < table.Rows[rowIndex].Cells.Count - 1)
                            {
                                tableData += "\t";
                            }
                        }

                        // 添加一个新行
                        tableData += "\n";
                    }

                    // 将表格数据保存到文本文件中
                    string filePath = Path.Combine("表格", $"Section{sectionIndex + 1}_Table{tableIndex + 1}.txt");

                    File.WriteAllText(filePath, tableData, Encoding.UTF8);
                }
            }

            doc.Close();
        }
    }
}

C# 从 Word 文档中提取表格

C# 从 Word 文档中提取表格并保存到 Excel 表格

除了将提取的表格数据保存到文本文件之外,你还可以使用 Spire.XLS for .NET 库直接将数据写入 Excel 工作表。但在使用 Spire.XLS 之前,你需要通过 NuGet 安装它:

Install-Package Spire.XLS

从 Word 文档提取表格数据并保存到 Excel 工作表的详细步骤如下:

  • C#
using Spire.Doc;
using Spire.Doc.Interface;
using Spire.Xls;

namespace ExtractWordTableToExcel
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建 Document 类的对象
            Document doc = new Document();
            // 加载 Word 文档
            doc.LoadFromFile("表格.docx");

            // 创建 Workbook 类的对象
            Workbook wb = new Workbook();
            // 删除默认工作表
            wb.Worksheets.Clear();

            // 遍历文档中的各个节
            for (int sectionIndex = 0; sectionIndex < doc.Sections.Count; sectionIndex++)
            {
                // 获取当前节
                Section section = doc.Sections[sectionIndex];
                // 遍历节中的各个表格
                for (int tableIndex = 0; tableIndex < section.Tables.Count; tableIndex++)
                {
                    // 获取当前表格
                    ITable table = section.Tables[tableIndex];
                    // 添加一个工作表到工作簿中
                    Worksheet ws = wb.Worksheets.Add($"Section{sectionIndex + 1}_Table{tableIndex + 1}");

                    // 遍历表格中的行
                    for (int rowIndex = 0; rowIndex < table.Rows.Count; rowIndex++)
                    {
                        // 获取当前行
                        TableRow row = table.Rows[rowIndex];
                        // 遍历行中的单元格
                        for (int cellIndex = 0; cellIndex < row.Cells.Count; cellIndex++)
                        {
                            // 获取当前单元格
                            TableCell cell = row.Cells[cellIndex];
                            // 获取单元格中的文本
                            string cellText = "";
                            for (int paraIndex = 0; paraIndex < cell.Paragraphs.Count; paraIndex++)
                            {
                                cellText += (cell.Paragraphs[paraIndex].Text.Trim() + " ");
                            }
                            // 将单元格文本写入工作表
                            ws.SetCellValue(rowIndex + 1, cellIndex + 1, cellText);
                        }
                        // 自动调整工作表中列的宽度
                        ws.Range.AutoFitColumns();
                    }
                }
            }

            // 将工作簿保存为 Excel 文件
            wb.SaveToFile("表格/Word表格转Excel.xlsx", ExcelVersion.Version2016);
            doc.Close();
            wb.Dispose();
        }
    }
}

C# 从 Word 文档中提取表格

申请临时 License

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

Spire.OCR 1.9.8 现已发布。该版本新增 ConfigureOptions 类以及 ConfigureDependencies(ConfigureOptions configureOptions) 方法,支持配置 OCR 使用的模型、识别语言以及依赖库。详情请查看以下内容。

新功能:


获取 Spire.OCR 1.9.8 请点击:

https://www.e-iceblue.com/Download/ocr-for-net.html