设置 Word 表格列宽是优化文档可读性和美观性的关键。合理的列宽避免了长行文字影响阅读,尤其在文本密集的表格中。Word 提供了两种方法:百分比和固定值。用百分比值的设置可以让表格适应不同屏幕,保持内容整齐,提升阅读体验。用固定值的设置则可以精确地实现了表格结构控制,确保一致性与专业性,适合严格规定数据对齐或复杂布局的设计。本文将介绍如何使用 Spire.Doc for .NET 在 C# 项目中基于百分比与固定值的设置方法来设置 Word 表格列宽。
安装 Spire.Doc for .NET
首先,您需要将 Spire.Doc for.NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.DocC# 基于百分比设置 Word 表格列宽
使用百分比值设置 Word 表格列宽时需先对表格设置下百分比宽度类型,Table.PreferredWidth = new PreferredWidth(WidthType.Percentage, (short)100),然后依次遍历每个列设置相同或不同的百分比值的宽度。以下是详细的步骤:
- 创建一个 Document 对象。
- 使用 Document.LoadFromFile() 方法加载一个文档。
- 使用 Document .Sections[0] 获取文档的第一个节。
- 使用 Section.Tables[0] 获取节中的第一个表格。
- 使用 for 循环遍历表格中的所有表格行。
- 使用 TableRow.Cells[index].SetCellWidth(34, CellWidthType.Percentage) 方法为不同列的单元格设置百分比值的列宽。
- 使用 Document.SaveToFile() 方法保存到 Word 文档。
- C#
using Spire.Doc;
namespace SpireDocDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建一个新的Document对象
            Document doc = new Document();
            // 加载名为"示例.docx"的文档
            doc.LoadFromFile("示例.docx");
            // 获取文档的第一个Section
            Section section = doc.Sections[0];
            // 将Section中的第一个Table转换为Table类型
            Table table = (Table)section.Tables[0];
            // 创建一个PreferredWidth对象,设置宽度类型为百分比,并设置宽度值为100%
            PreferredWidth percentageWidth = new PreferredWidth(WidthType.Percentage, (short)100);
            // 设置Table的首选宽度为上面创建的PreferredWidth对象
            table.PreferredWidth = percentageWidth;
            // 定义一个TableRow类型的变量
            TableRow tableRow;
            // 遍历Table的所有行
            for (int i = 0; i < table.Rows.Count; i++)
            {
                // 获取当前行
                tableRow = table.Rows[i];
                // 设置第一列单元格的宽度为34%,类型为百分比
                tableRow.Cells[0].SetCellWidth(34, CellWidthType.Percentage);
                // 设置第二列单元格的宽度为33%,类型为百分比
                tableRow.Cells[1].SetCellWidth(33, CellWidthType.Percentage);
                // 设置第三列单元格的宽度为33%,类型为百分比
                tableRow.Cells[2].SetCellWidth(33, CellWidthType.Percentage);
            }
            // 保存修改后的文档,并指定文件格式为Docx2016
            doc.SaveToFile("以百分比值设置列宽.docx", FileFormat.Docx2016);
            // 关闭文档
            doc.Close();
        }
    }
}
C# 基于固定值设置Word表格列宽
使用固定值设置 Word 表格列宽时需先对表格设置固定布局,Table.TableFormat.LayoutType = LayoutType.Fixed,然后依次遍历每个列设置相同或不同的固定值的宽度。以下是详细的步骤:
- 创建一个 Document 对象。
- 使用 Document.LoadFromFile() 方法加载一个文档。
- 使用 Document .Sections[0] 获取文档的第一个节。
- 使用 Section.Tables[0] 获取节中的第一个表格。
- 使用 for 循环遍历表格中的所有表格行。
- 使用 TableRow.Cells[index].SetCellWidth(value, CellWidthType.Point) 方法为不同列的单元格设置固定值的列宽。
- 使用 Document.SaveToFile() 方法保存到 Word 文档。
- C#
using Spire.Doc;
namespace SpireDocDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建一个新的Document对象
            Document doc = new Document();
            // 加载名为"示例.docx"的文档
            doc.LoadFromFile("示例.docx");
            // 获取文档的第一个Section
            Section section = doc.Sections[0];
            // 将Section中的第一个Table转换为Table类型
            Table table = (Table)section.Tables[0];
            // 设置表格布局类型为固定
            table.TableFormat.LayoutType = LayoutType.Fixed;
            // 设置表格大小调整方式为非自动
            table.TableFormat.IsAutoResized = false;
            // 获取左页边距
            float leftMargin = section.PageSetup.Margins.Left;
            // 获取右页边距
            float rightMargin = section.PageSetup.Margins.Right;
            // 计算页面宽度减去左右边距
            double pageWidth = section.PageSetup.PageSize.Width - leftMargin - rightMargin;
            // 定义一个TableRow类型的变量
            TableRow tableRow;
            // 遍历Table的所有行
            for (int i = 0; i < table.Rows.Count; i++)
            {
                // 获取当前行
                tableRow = table.Rows[i];
                // 设置第一列单元格宽度为页面宽度的34%
                tableRow.Cells[0].SetCellWidth((float)(pageWidth * 0.34), CellWidthType.Point);
                // 设置第二列单元格宽度为页面宽度的33%
                tableRow.Cells[1].SetCellWidth((float)(pageWidth * 0.33), CellWidthType.Point);
                // 设置第三列单元格宽度为页面宽度的33%
                tableRow.Cells[2].SetCellWidth((float)(pageWidth * 0.33), CellWidthType.Point);
            }
            // 保存修改后的文档,并指定文件格式为Docx2016
            doc.SaveToFile("以固定值设置列宽.docx", FileFormat.Docx2016);
            // 关闭文档
            doc.Close();
        }
    }
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
 
    


 
					



