NPOI 基础操作,创建一个 docx 并打开

NPOI是一个强大的开源库,主要用于处理Microsoft Office文档,包括Word(.docx)和Excel(.xlsx)格式。在给定的“一个兼容word2007的NPOI插图例子”中,我们将深入探讨如何使用NPOI在Word 2007文档中插入图像。这个例子是基于VS2010开发环境,使用的NPOI版本为2.0.9.0,并且可能对源码进行了一些修改以适应特定需求。

NPOI库提供了API来创建、读取和修改Word文档。对于插入图片的功能,我们需要使用XWPFDocumentXWPFRun类。XWPFDocument是Word文档的主要容器,而XWPFRun则用于插入文本和图像。

  1. 创建Word文档:你需要实例化XWPFDocument对象,这将是你的Word文档的基础。

  2. 插入文本:你可以通过XWPFParagraph对象来添加段落,然后使用XWPFRun对象在段落中插入文本。例如,paragraph.CreateRun().SetText("这是带有图片的示例文本。")

  3. 加载图片:NPOI允许你从文件系统或内存中加载图片。你可以使用XWPFDocument.AddPictureData方法将图片数据添加到文档中。这将返回一个唯一的图片ID,用于引用该图片。

  4. 插入图片:在创建XWPFRun对象后,使用InsertInlinePicture方法插入图片。这个方法需要图片ID、宽度和高度作为参数。例如,run.InsertInlinePicture(document.GetPictureDataById(imageId), 100, 100)将插入图片并设置其尺寸为100x100相对单位。

  5. 保存文档:你需要使用document.Write方法将Word文档保存到磁盘。

在这个例子中,NPOICreateDocx可能是包含示例代码的主程序文件。它展示了如何使用NPOI API创建一个新的Word文档,插入文本和图片,然后保存文档。对于学习和参考,你可能需要查看源代码以理解每个步骤的实现细节。

NPOI库的使用不仅可以帮助开发者在不依赖Microsoft Office的情况下处理Word文档,还支持批处理操作,如批量插入图片、替换文本等。这对于自动化办公任务或生成报告等场景非常有用。通过深入研究这个例子,你可以掌握NPOI的基本用法,进一步扩展到更复杂的Word文档操作。

private void button1_Click(object sender, EventArgs e)
{//图片位置String m_PicPath = "..\\..\\..\\pic\\";FileStream gfs = null;MemoryStream ms = new MemoryStream();XWPFDocument m_Docx = new XWPFDocument();//页面设置//A4:W=11906,h=16838//CT_SectPr m_SectPr = m_Docx.Document.body.AddNewSectPr();m_Docx.Document.body.sectPr = new CT_SectPr();CT_SectPr m_SectPr = m_Docx.Document.body.sectPr;//页面设置A4纵向m_SectPr.pgSz.h = (ulong)16838;m_SectPr.pgSz.w = (ulong)11906;XWPFParagraph gp = m_Docx.CreateParagraph();gp.GetCTPPr().AddNewJc().val = ST_Jc.center; //水平居中XWPFRun gr = gp.CreateRun();gr.GetCTR().AddNewRPr().AddNewRFonts().ascii = "黑体";gr.GetCTR().AddNewRPr().AddNewRFonts().eastAsia = "黑体";gr.GetCTR().AddNewRPr().AddNewRFonts().hint = ST_Hint.eastAsia;gr.GetCTR().AddNewRPr().AddNewSz().val = (ulong)44;//2号字体gr.GetCTR().AddNewRPr().AddNewSzCs().val = (ulong)44;gr.GetCTR().AddNewRPr().AddNewB().val = true; //加粗gr.GetCTR().AddNewRPr().AddNewColor().val = "red";//字体颜色gr.SetText("NPOI创建Word2007Docx");gp = m_Docx.CreateParagraph();gp.GetCTPPr().AddNewJc().val = ST_Jc.both;gp.IndentationFirstLine = Indentation("宋体", 21, 2, FontStyle.Regular);//段首行缩进2字符gr = gp.CreateRun();CT_RPr rpr = gr.GetCTR().AddNewRPr();CT_Fonts rfonts = rpr.AddNewRFonts();rfonts.ascii = "宋体";rfonts.eastAsia = "宋体";rpr.AddNewSz().val = (ulong)21;//5号字体rpr.AddNewSzCs().val = (ulong)21;gr.SetText("NPOI,顾名思义,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java写成的库,能够帮助开 发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等 。目前POI的稳定版本中支持Excel文件格式(xls和xlsx),其他的都属于不稳定版本(放在poi的scrachpad目录 中)。");//创建表XWPFTable table = m_Docx.CreateTable(1, 4);//创建一行4列表CT_Tbl m_CTTbl = m_Docx.Document.body.GetTblArray()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/451589.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

特步引入IPD管理,钉钉项目 Teambition 助力高效产品研发管理

中国是全球第二大消费市场,运动鞋服行业拥有着巨大的发展潜力。在过去五年时间里,随着中国产品品牌和质量的提升,体育市场的占有率格局发生了显著变化,不同于部分国际品牌巨头营收持续减弱,国产领军体育运动品牌「特步…

RK平台 GPIO序号转换软件

RK平台 GPIO序号转换软件 下载地址 https://download.csdn.net/download/ruidongren/89900151 链接: link

大数据毕业设计选题推荐-电影数据分析系统-电影推荐系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

VSCode中的TypeScript教程

TypeScript 是JavaScript的类型化超集,可编译为纯JavaScript。它提供了类、模块和接口来帮助您构建健壮的组件。 安装 TypeScript 编译器 Visual Studio Code 包括 TypeScript 语言支持,但不包括 TypeScript 编译器tsc。您需要在全局或工作区中安装Typ…

空间解析几何 4:空间中线段到圆的距离【附MATLAB代码】

目录 理论公式 matlab代码 理论公式 对于解一元4次方程,请详见我的博客 一元四次方程求解 -【附MATLAB代码】-CSDN博客文章浏览阅读1.4k次,点赞41次,收藏4次。最近在研究机器人的干涉(碰撞)检测,遇到了一…

015_基于django旅游数据分析与推荐系统2024_cg8s735i

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

使用Docker启动的Redis容器使用的配置文件路径等问题以及Python使用clickhouse_driver操作clickhouse数据库

一、使用Docker启动的Redis容器使用的配置文件路径等问题 1.docker启动的redis使用的配置文件路径是什么 使用docker搭建redis服务,本身redis启动的时候可以指定配置文件的, redis-server /指定配置文件路径/redis.conf。 但手上也没有一个redis配置文件…

win10上安装wsl(ubuntu)

1,搜索到微软网站下载 Ubuntu Installer.exe文件,运行它。 2.根据提示点击获取ubuntu,自动下载完之后提示安装,do。 3.出错:Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x8007019e Error: 0x8…

吴伟仁《英国文学史及选读》第一二册课后答案PDF

新经典高等学校英语专业系列教材《英国文学史及选读》根据英国文学历史的顺序结合作品选读编写而成,在历史部分,对英国文学史的每个阶段作了简明扼要的概述,而在作品选读部分则尽可能遴选了文学史上的重要作家和重要作品。教材内容丰富&#…

Web集群服务-代理和负载均衡

1. 概述 1. 用户----->代理--->Web节点,后面只有一个节点,一般使用的是nginx代理功能即可 2. 后面如果是集群需要使用nginx负载均衡功能 2. 代理分类 代理分类方向应用正向代理用户(服务器)-->代理--->外部(某网站)服务器通过代理实现共享上网/访问公网反向代理用…

MySQL-事务Transaction详解

文章目录 事务概述事务基本概念事务四大特性(ACID)演示MySQL事务手动开启事务MySQL默认事务机制 事务的隔离级别隔离级别基本概述三种现象脏读不可重复读幻读 查看和设置隔离级别四种隔离级别及演示读未提交(read uncommitted)读提交(read committed)可重复读(repeatable read)…

颠覆Transformer的Mamba模型[精简版本]------S4

1、改进transformer不擅长处理超长的序列的问题:输入u到状态x 序列数据一般都是离散的数据 比如文本、图、DNA,但现实生活中还有很多连续的数据,比如音频、视频,对于音视频这种信号而言,其一个重要特点就是有极长的context window,而在transformer长context上往往会失败,…

Spring Boot技术栈的电影评论网站设计与实现

6系统测试 6.1概念和意义 测试的定义:程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为: 目的:发现程序的错误; 任务:通过在计算机上执行程序,暴露程序中潜在的错误。 另一个…

算法——python实现堆排序

文章目录 堆排序二叉树堆堆排序的过程:代码实现python中的heapq模块 堆排序 二叉树 关于二叉树的操作,其实核心就是 父节点找子节点,子节点找父节点 如果要将二叉树存储到队列中,就需要找出 父子节点之间的规律: 父…

什么是SYN flood,如何处理

在数字化时代,随着互联网的普及和技术的飞速发展,网络安全问题变得日益严峻。Flood攻击,作为一种典型的网络攻击手段,对个人和企业的信息安全构成了重大威胁。通过深入了解Flood攻击的概念、特点、影响及解决方案,我们…

Sentinel 快速入门

前置推荐阅读:Sentinel 介绍-CSDN博客 前置推荐阅读:Nacos快速入门-CSDN博客 快速开始 欢迎来到 Sentinel 的世界!这篇新手指南将指引您快速入门 Sentinel。 Sentinel 的使用可以分为两个部分: 核心库(Java 客户端)&#xff1a…

现代数字信号处理I-P4 CRLB+LMMSE 学习笔记

目录 学习资料视频链接: 1. 估计参数的CRLB回顾 2. 参数变换下的CRLB拓展 3. 矢量参数下的CRLB扩展 3.1 矢量参数下的CRLB公式 3.2 两个矩阵不等式关系的意义说明 3.3 矢量参数下CRLB公式的证明过程 4. 线性估计 重点注意事项:此处的线性估计&am…

【React】React18核心源码解读

前言 本文使用 React18.2.0 的源码,如果想回退到某一版本执行git checkout tags/v18.2.0即可。如果打开源码发现js文件报ts类型错误请看本人另一篇文章:VsCode查看React源码全是类型报错如何解决。 阅读源码的过程: 下载源码 观察 package…

【java面经thinking】二

目录 redis了解 使用原因 应用场景 数据类型 redis事务 数据持久化 RDB(快照): AOF(即时更新): 选择方式: redis快速的原因 redis单线程 单机瓶颈 经典3问 参考博客 redis了解 缓存中间件 使用原因 缓解高并发、提升高可用。…

Qt 实现动态时钟

1.实现效果 2.widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace