NPOI是一个强大的开源库,主要用于处理Microsoft Office文档,包括Word(.docx)和Excel(.xlsx)格式。在给定的“一个兼容word2007的NPOI插图例子”中,我们将深入探讨如何使用NPOI在Word 2007文档中插入图像。这个例子是基于VS2010开发环境,使用的NPOI版本为2.0.9.0,并且可能对源码进行了一些修改以适应特定需求。
NPOI库提供了API来创建、读取和修改Word文档。对于插入图片的功能,我们需要使用XWPFDocument
和XWPFRun
类。XWPFDocument
是Word文档的主要容器,而XWPFRun
则用于插入文本和图像。
-
创建Word文档:你需要实例化
XWPFDocument
对象,这将是你的Word文档的基础。 -
插入文本:你可以通过
XWPFParagraph
对象来添加段落,然后使用XWPFRun
对象在段落中插入文本。例如,paragraph.CreateRun().SetText("这是带有图片的示例文本。")
。 -
加载图片:NPOI允许你从文件系统或内存中加载图片。你可以使用
XWPFDocument.AddPictureData
方法将图片数据添加到文档中。这将返回一个唯一的图片ID,用于引用该图片。 -
插入图片:在创建
XWPFRun
对象后,使用InsertInlinePicture
方法插入图片。这个方法需要图片ID、宽度和高度作为参数。例如,run.InsertInlinePicture(document.GetPictureDataById(imageId), 100, 100)
将插入图片并设置其尺寸为100x100相对单位。 -
保存文档:你需要使用
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()