用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

相关文章

python如何创建等差数列

《python如何创建等差数列》:本文主要介绍python如何创建等差数列的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python创建等差数列例题运行代码回车输出结果总结python创建等差数列import numpy as np x=int(in

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2