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 文档

相关推荐
筱璦4 小时前
期货软件开发 - C# 调用 HQChart 指标计算 C++ 动态库
c++·microsoft·c#
ZC跨境爬虫4 小时前
Python异步IO详解:原理、应用场景与实战指南(高并发爬虫首选)
爬虫·python·算法·自动化
武藤一雄5 小时前
C# 异常(Exception)处理避坑指南
windows·microsoft·c#·.net·.netcore·鲁棒性
无限进步_5 小时前
【C++】巧用静态变量与构造函数:一种非常规的求和实现
开发语言·c++·git·算法·leetcode·github·visual studio
守城小轩6 小时前
Chromium 145 编译指南 Windows篇:获取源代码(五)
自动化·chrome devtools·浏览器自动化·指纹浏览器·浏览器开发
北京耐用通信6 小时前
工业自动化领域耐中达讯自动化CC-Link IE转EtherCAT技术解决方案
人工智能·物联网·网络协议·自动化·信息与通信
星马梦缘7 小时前
运动控制系统(三)-转速闭环直流调速系统
自动化·电机·自动控制·闭环系统
wzl202612137 小时前
企微私域工具免费版vs付费版:数据统计API差异与自动化报表脚本实现
大数据·自动化·企业微信
taxunjishu8 小时前
智能仓储无人化管控 Profinet转MODBUS TCP全流程互联
网络·网络协议·自动化
Agent产品评测局8 小时前
企业预算管理自动化落地,编制管控全流程实现方案 —— 2026企业级智能体选型与架构深度解析
运维·人工智能·ai·架构·自动化