用OpenXml SDK 2.0 创建一个页脚带页码的Word文档

2024-04-30 07:48

本文主要是介绍用OpenXml SDK 2.0 创建一个页脚带页码的Word文档,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现环境:Visual Studio 2010, OpenXml SDK 2.0.50727

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;namespace OpenXmlFooterPageNumber
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){SaveFileDialog objSaveFileDialog = new SaveFileDialog();objSaveFileDialog.Filter = "Word Document (*.docx)|*.docx";objSaveFileDialog.ShowDialog();string strSavePath = objSaveFileDialog.FileName;if (strSavePath.Length > 0){using (WordprocessingDocument objWordprocessingDocument =WordprocessingDocument.Create(strSavePath, WordprocessingDocumentType.Document)){MainDocumentPart objMainDocumentPart =objWordprocessingDocument.AddMainDocumentPart();Document objDocument = new Document();objMainDocumentPart.Document = objDocument;Body objBody = new Body();SectionProperties objSectionProperties = new SectionProperties();FooterPart objFootPart = objMainDocumentPart.AddNewPart<FooterPart>();Footer objFooter = new Footer();objFootPart.Footer = objFooter;SdtBlock objSdtBlock_1 = new SdtBlock();SdtContentBlock objSdtContentBlock_1 = new SdtContentBlock();SdtBlock objSdtBlock_2 = new SdtBlock();SdtContentBlock objSdtContentBlock_2 = new SdtContentBlock();Paragraph objParagraph_1 = new Paragraph();ParagraphProperties objParagraphProperties = new ParagraphProperties();ParagraphStyleId objParagraphStyleId =new ParagraphStyleId() { Val = "Footer" };objParagraphProperties.Append(objParagraphStyleId);Justification objJustification = new Justification() { Val = JustificationValues.Right };objParagraphProperties.Append(objJustification);objParagraph_1.Append(objParagraphProperties);Run objRun_1 = new Run();Text objText_1 = new Text();objText_1.Text = "Page ";objRun_1.Append(objText_1);objParagraph_1.Append(objRun_1);Run objRun_2 = new Run();FieldChar objFieldChar_1 = new FieldChar() { FieldCharType = FieldCharValues.Begin };objRun_2.Append(objFieldChar_1);objParagraph_1.Append(objRun_2);Run objRun_3 = new Run();FieldCode objFieldCode_1 = new FieldCode() { Space = SpaceProcessingModeValues.Preserve };objFieldCode_1.Text = "PAGE ";objRun_3.Append(objFieldCode_1);objParagraph_1.Append(objRun_3);Run objRun_4 = new Run();FieldChar objFieldChar_2 = new FieldChar() { FieldCharType = FieldCharValues.Separate };objRun_4.Append(objFieldChar_2);objParagraph_1.Append(objRun_4);Run objRun_5 = new Run();Text objText_2 = new Text();objText_2.Text = "2";objRun_5.Append(objText_2);objParagraph_1.Append(objRun_5);Run objRun_6 = new Run();FieldChar objFieldChar_3 = new FieldChar() {FieldCharType = FieldCharValues.End };objRun_6.Append(objFieldChar_3);objParagraph_1.Append(objRun_6);Run objRun_7 = new Run();Text objText_3 = new Text();objText_3.Text = "of ";objRun_7.Append(objText_3);objParagraph_1.Append(objRun_7);Run objRun_8 = new Run();FieldChar objFieldChar_4 = new FieldChar() { FieldCharType = FieldCharValues.Begin };objRun_8.Append(objFieldChar_4);objParagraph_1.Append(objRun_8);Run objRun_9 = new Run();FieldCode objFieldCode_2 = new FieldCode() { Space = SpaceProcessingModeValues.Preserve };objFieldCode_2.Text = "NUMPAGES  ";objRun_9.Append(objFieldCode_2);objParagraph_1.Append(objRun_9);Run objRun_10 = new Run();FieldChar objFieldChar_5 = new FieldChar() { FieldCharType = FieldCharValues.Separate };objRun_10.Append(objFieldChar_5);objParagraph_1.Append(objRun_10);Run objRun_11 = new Run();Text objText_4 = new Text();objText_4.Text = "2";objRun_11.Append(objText_4);objParagraph_1.Append(objRun_11);Run objRun_12 = new Run();FieldChar objFieldChar_6 = new FieldChar() {FieldCharType = FieldCharValues.End };objRun_12.Append(objFieldChar_6);objParagraph_1.Append(objRun_12);objSdtContentBlock_2.Append(objParagraph_1);objSdtBlock_2.Append(objSdtContentBlock_2);objSdtContentBlock_1.Append(objSdtBlock_2);objSdtBlock_1.Append(objSdtContentBlock_1);objFooter.Append(objSdtBlock_1);string strFootrID =objMainDocumentPart.GetIdOfPart(objFootPart);FooterReference objFooterReference = new FooterReference() { Type = HeaderFooterValues.Default, Id = strFootrID };objSectionProperties.Append(objFooterReference);objBody.Append(objSectionProperties);objMainDocumentPart.Document.Append(objBody);DocumentSettingsPart objDocumentSettingPart =objMainDocumentPart.AddNewPart<DocumentSettingsPart>();objDocumentSettingPart.Settings = new Settings();Compatibility objCompatibility = new Compatibility();CompatibilitySetting objCompatibilitySetting =new CompatibilitySetting(){Name = CompatSettingNameValues.CompatibilityMode,Uri = "http://schemas.microsoft.com/office/word",Val = "14"};objCompatibility.Append(objCompatibilitySetting);objDocumentSettingPart.Settings.Append(objCompatibility);}}}}
}
相关资源: http://download.csdn.net/detail/tx_officedev/3972762

这篇关于用OpenXml SDK 2.0 创建一个页脚带页码的Word文档的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/948286

相关文章

C#如何在Excel文档中获取分页信息

《C#如何在Excel文档中获取分页信息》在日常工作中,我们经常需要处理大量的Excel数据,本文将深入探讨如何利用Spire.XLSfor.NET,高效准确地获取Excel文档中的分页信息,包括水平... 目录理解Excel中的分页机制借助 Spire.XLS for .NET 获取分页信息为什么选择 S

Java利用Spire.XLS for Java自动化设置Excel的文档属性

《Java利用Spire.XLSforJava自动化设置Excel的文档属性》一个专业的Excel文件,其文档属性往往能大大提升文件的可管理性和可检索性,下面我们就来看看Java如何使用Spire... 目录Spire.XLS for Java 库介绍与安装Java 设置内置的 Excel 文档属性Java

Python自动化提取多个Word文档的文本

《Python自动化提取多个Word文档的文本》在日常工作和学习中,我们经常需要处理大量的Word文档,本文将深入探讨如何利用Python批量提取Word文档中的文本内容,帮助你解放生产力,感兴趣的小... 目录为什么需要批量提取Word文档文本批量提取Word文本的核心技术与工具安装 Spire.Doc

C#高效实现在Word文档中自动化创建图表的可视化方案

《C#高效实现在Word文档中自动化创建图表的可视化方案》本文将深入探讨如何利用C#,结合一款功能强大的第三方库,实现在Word文档中自动化创建图表,为你的数据呈现和报告生成提供一套实用且高效的解决方... 目录Word文档图表自动化:为什么选择C#?从零开始:C#实现Word文档图表的基本步骤深度优化:C

Qt实现对Word网页的读取功能

《Qt实现对Word网页的读取功能》文章介绍了几种在Qt中实现Word文档(.docx/.doc)读写功能的方法,包括基于QAxObject的COM接口调用、DOCX模板替换及跨平台解决方案,重点讨论... 目录1. 核心实现方式2. 基于QAxObject的COM接口调用(Windows专用)2.1 环境

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Python轻松实现Word到Markdown的转换

《Python轻松实现Word到Markdown的转换》在文档管理、内容发布等场景中,将Word转换为Markdown格式是常见需求,本文将介绍如何使用FreeSpire.DocforPython实现... 目录一、工具简介二、核心转换实现1. 基础单文件转换2. 批量转换Word文件三、工具特性分析优点局

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加