C# 中如何设置 Word 文档页面?(页面大小、边距、方向自动化控制)

在开发涉及文档生成的业务系统时,常常需要根据数据动态创建 Word 报告,并针对不同场景设置页面布局,如页面大小(A4/A3)、方向(纵向/横向)、页边距等。手动调整大量文档不仅耗时,且易出错,因此自动化页面设置成为关键需求。

本文基于 Free Spire.Doc for .NET 免费库,介绍如何通过 C# 代码实现对 Word 文档页面的灵活控制,包括设置页面尺寸、方向、边距,以及在同一文档中使用多个不同布局的节(Section),希望能为有排版需求的开发者提供参考。


准备工作:装上 NuGet 包

在 Visual Studio 里新建一个 .NET 控制台项目(或者 ASP.NET Core 项目也行),然后通过 NuGet 安装:

复制代码
Install-Package FreeSpire.Doc

安装完后,在代码文件开头加上:

csharp 复制代码
using Spire.Doc;
using Spire.Doc.Documents;

基本操作:创建文档和节(Section)

Word 文档的结构是:Document → Section → 段落/表格等 。页面设置是针对每个 Section 的,所以要先拿到 Section 对象。

csharp 复制代码
// 创建 Document 对象
Document document = new Document();

// 添加一个节(Section)
Section section = document.AddSection();

如果你不手动添加 Sectiondocument 默认也会自带一个,但显式添加更清晰。


设置页面大小:A4、A3、Letter 还是自定义?

页面大小可以通过 PageSetup.PageSize 来设置。PageSize 是一个 SizeF 结构,单位是点(point),1 英寸 = 72 点。Free Spire.Doc 提供了几个预定义的页面大小常量,比如:

  • PageSize.A4:宽 595 点,高 842 点(对应 210mm × 297mm)
  • PageSize.Letter:宽 612 点,高 792 点
  • PageSize.A3:宽 842 点,高 1191 点

用法很简单:

csharp 复制代码
// 设置为 A4
section.PageSetup.PageSize = PageSize.A4;

// 如果要自定义大小,比如 10cm × 15cm(需要换算成点)
float width = 10 * 72 / 2.54f;    // 10 厘米转英寸再转点
float height = 15 * 72 / 2.54f;
section.PageSetup.PageSize = new SizeF(width, height);

自定义尺寸:

如果你需要精确的毫米/厘米,记得用 厘米数 * 72 / 2.54 这个公式,切记单位是点。


设置页面方向:纵向还是横向?

方向设置很简单,通过 PageSetup.Orientation 属性:

csharp 复制代码
// 纵向
section.PageSetup.Orientation = PageOrientation.Portrait;

// 横向
section.PageSetup.Orientation = PageOrientation.Landscape;

注意 :当你设置方向为横向时,最好先设置页面大小 。因为如果先设置横向再设置页面大小,页面大小可能会被重置(取决于内部实现),因此建议先 PageSizeOrientation


设置页边距:上、下、左、右

页边距也是通过 PageSetup 来设置,单位同样是点:

csharp 复制代码
section.PageSetup.Margins.Top = 72f;       // 上边距 1 英寸
section.PageSetup.Margins.Bottom = 72f;    // 下边距 1 英寸
section.PageSetup.Margins.Left = 90f;       // 左边距 1.25 英寸(方便装订)
section.PageSetup.Margins.Right = 72f;      // 右边距 1 英寸

当然也可以用厘米换算,比如设置 2.54cm 边距:2.54 * 72 / 2.54 = 72,正好 1 英寸。


完整示例:动态生成一个横向 A3 文档

下面是一个完整的小例子,创建一个横向的 A3 文档,页边距上下左右都是 1 厘米,并添加一段文字说明:

csharp 复制代码
using Spire.Doc;
using Spire.Doc.Documents;
using System.Drawing;

class Program
{
    static void Main(string[] args)
    {
        // 创建文档
        Document document = new Document();
        Section section = document.AddSection();

        // 设置页面大小为 A3
        section.PageSetup.PageSize = PageSize.A3;
        
        // 设置方向为横向
        section.PageSetup.Orientation = PageOrientation.Landscape;

        // 设置页边距(1 厘米 = 28.35 点)
        float marginInPoints = 28.35f; // 1cm
        section.PageSetup.Margins.All = marginInPoints; // 或者分别设置 Top/Bottom/Left/Right

        // 添加一个段落
        Paragraph para = section.AddParagraph();
        para.AppendText("这是一个横向的 A3 文档,页边距均为 1 厘米。");
        para.ApplyStyle(BuiltinStyle.Heading1);

        // 保存文档
        document.SaveToFile("TestA3.docx", FileFormat.Docx);
        System.Diagnostics.Process.Start("TestA3.docx"); // 打开看看效果
    }
}

运行之后,生成的 Word 文档就会按我们的要求排版。


进阶:不同节设置不同页面

有时候一个文档里需要既有纵向页面,又有横向页面(比如报告里夹一张大表格)。这时候可以用多个 Section,每个 Section 可以独立设置页面布局。

csharp 复制代码
Document document = new Document();

// 第一节:纵向 A4
Section section1 = document.AddSection();
section1.PageSetup.PageSize = PageSize.A4;
section1.PageSetup.Orientation = PageOrientation.Portrait;
section1.AddParagraph().AppendText("这是纵向 A4 页面的内容。");

// 第二节:横向 A3
Section section2 = document.AddSection();
section2.PageSetup.PageSize = PageSize.A3;
section2.PageSetup.Orientation = PageOrientation.Landscape;
section2.AddParagraph().AppendText("这是横向 A3 页面的内容。");

document.SaveToFile("MultiSection.docx", FileFormat.Docx);

这样生成的 Word 文档里,第一节是纵向 A4,第二节会自动另起一页并变成横向 A3。这个特性在生成复杂报告时特别有用。


注意事项

  1. 单位问题 :所有尺寸都是点(point),不是像素,也不是厘米/毫米。换算公式:1 英寸 = 72 点 = 2.54 厘米。所以我一般先定义几个常量:

    csharp 复制代码
    const float PointsPerInch = 72;
    const float CmPerInch = 2.54f;
    // 厘米转点
    float CmToPoints(float cm) => cm * PointsPerInch / CmPerInch;
  2. 页边距设置顺序 :如果同时设置了 PageSizeMargins,顺序无所谓。但如果你先设置 Margins 再设置 PageSizeMargins 的值不会因为页面大小改变而自动调整,所以放心。

  3. 免费版的限制:Free Spire.Doc 有少量限制(比如最多 500 个段落、表格等),但一般日常使用足够了。

  4. 保存格式 :用 SaveToFile 时最好明确指定 FileFormat.Docx,避免保存成旧版 .doc 导致格式丢失。


总结

通过以上简单代码,可以快速实现 Word 文档页面的自动化设置,替代手动操作,提升开发效率。页面设置的核心单位是「磅(Point)」,需注意与厘米 / 毫米的转换。多节文档需遍历每个节单独配置,确保所有页面格式统一或按需差异化。此外,还支持设置页眉页脚、页码等,具体可查看产品 API 文档

相关推荐
计算机安禾2 小时前
【C语言程序设计】第30篇:指针与字符串
c语言·开发语言·c++·算法·visualstudio·visual studio code·visual studio
2301_816374332 小时前
AutoBackupGuard 多服务器自动化备份与完整性校验系统
linux·运维·服务器·centos·自动化·github
安科瑞小许2 小时前
零碳园区的电力保障——变电站综合自动化系统
运维·自动化·零碳园区
2501_941982052 小时前
企微机器人开发:实现私域流量的自动化管理与智能交互
机器人·自动化·企业微信
无限进步_2 小时前
【C++】字符串中的字母反转算法详解
开发语言·c++·ide·git·算法·github·visual studio
鹓于2 小时前
手机远程控制电脑:纯命令SSH方案(实现QClaw效果)
自动化
Yungoal2 小时前
Visual StudioProfiler对工作流进行热点分析
c++·visual studio
人工智能AI技术11 小时前
315曝光AI投毒!用C#构建GEO污染检测与数据安全防护方案
人工智能·c#
金山几座12 小时前
C#学习记录-事件
开发语言·学习·c#