NPOI 中 Word 的常用操作 NPOI 是一个流行的开源 Java 库,用于处理 Microsoft Office 文件格式,包括 Word、Excel 和 PowerPoint 等。下面将详细介绍 NPOI 中 Word 的常用操作。 创建文档 需要创建一个新的 Word 文档。使用 NPOI,可以使用 `XWPFDocument` 类来创建一个新的 Word 文档。例如: ```java XWPFDocument m_Docx = new XWPFDocument(); ``` 页面设置 在创建文档后,需要设置页面的大小和方向。NPOI 提供了 `CT_SectPr` 类来设置页面的属性。例如: ```java CT_SectPr m_SectPr = new CT_SectPr(); m_SectPr.pgSz.w = (ulong)16838; // 设置页面宽度为 A4 横向 m_SectPr.pgSz.h = (ulong)11906; // 设置页面高度为 A4 横向 m_Docx.Document.body.sectPr = m_SectPr; ``` 创建段落 在 Word 文档中,段落是最基本的单位。使用 NPOI,可以使用 `XWPFParagraph` 类来创建一个新的段落。例如: ```java XWPFParagraph gp = m_Docx.CreateParagraph(); ``` 设置段落格式 在创建段落后,需要设置段落的格式,例如字体、字号、颜色等。使用 NPOI,可以使用 `CT_P` 类来设置段落的格式。例如: ```java CT_P m_p = m_Docx.Document.body.AddNewP(); m_p.AddNewPPr().AddNewJc().val = ST_Jc.center; // 设置段落水平居中 ``` 设置行距 在 Word 文档中,行距是非常重要的。使用 NPOI,可以使用 `CT_Spacing` 类来设置行距。例如: ```java m_p.AddNewPPr().AddNewSpacing().line = "400"; // 设置行距为 20 磅 m_p.AddNewPPr().AddNewSpacing().lineRule = ST_LineSpacingRule.exact; // 设置行距规则 ``` 创建 RUN 在 Word 文档中,RUN 是一个基本的文字单元。使用 NPOI,可以使用 `XWPFRun` 类来创建一个新的 RUN。例如: ```java XWPFRun gr = gp.CreateRun(); gr.GetCTR().AddNewRPr().AddNewRFonts().ascii = "黑体"; // 设置 RUN 的字体 gr.GetCTR().AddNewRPr().AddNewRFonts().eastAsia = "黑体"; // 设置 RUN 的东亚字体 gr.GetCTR().AddNewRPr().AddNewRFonts().hint = ST_Hint.eastAsia; // 设置 RUN 的东亚字体提示 ``` 段首行缩进 在 Word 文档中,段首行缩进是非常常见的操作。使用 NPOI,可以使用 `Indentation` 方法来设置段首行缩进。例如: ```java gp.IndentationFirstLine = (int)100; // 设置段首行缩进为 100 磅 ``` 计算段首行缩进 在设置段首行缩进时,需要计算出正确的缩进值。使用 NPOI,可以使用 `Indentation` 方法来计算段首行缩进。例如: ```java protected int Indentation(String fontname, int fontsize, int Indentationfonts, FontStyle fs) { // 字显示宽度,用于段首行缩进 Graphics m_tmpGr = this.CreateGraphics(); m_tmpGr.PageUnit = GraphicsUnit.Point; SizeF size = m_tmpGr.MeasureString("好", new Font(fontname, fontsize * 0.75F, fs)); return (int)size.Width * Indentationfonts * 10; } gp.IndentationFirstLine = Indentation("宋体", 21, 2, FontStyle.Regular); // 设置段首行缩进为 2 字符 ``` NPOI 提供了许多基本的操作来处理 Word 文档,包括创建文档、设置页面、创建段落、设置段落格式、设置行距、创建 RUN 和段首行缩进等。使用这些操作,可以轻松地生成 Word 文档。
2026-04-13 16:20:49 90KB NPOI、docx
1
目 录 一、建立WORD应用程序对象,新建、打开、保存WORD文档 5 1、建立对象 5 2、显示WORD窗口 5 3、新建一个WORD文档 5 (1)Count属性 5 (2)Name属性 5 4、打开一个已存在的WORD文档 5 5、激活文档,使文档成为当前激动文档 6 6、保存文档 6 7、页面设置 6 (1)Orientation属性 6 (2)TopMargin属性 6 (3)BottomMargin属性 6 (4)LeftMargin属性 6 (5)RightMargin属性 7 (6)PageWidth属性 7 (7)PageHeight属性 7 8、打印文档 7 9、关闭文档 7 10、退出WORD 8 二、Font对象 8 1、Name 属性 8 2、Size属性 8 3、Bold属性 8 4、Italic属性 8 5、Color属性 8 6、Underline属性 8 7、UnderlineColor属性 8 8、Subscript属性 9 9、Superscript属性 9 10、Spacing属性 9 11、Scaling属性 9 三、Paragraph和Paragraphs集合对象 9 1、添加段落 9 (1) Add方法 10 (2)InsertParagraph方法 10 (3)InsertParagraphAfter 方法 10 (4)InsertParagraphBefore 方法 11 (5)TypeParagraph 方法 11 2、设置段落格式 11 (1)FirstLineIndent属性 11 (2)LeftIndent属性 11 (3)RightIndent属性 11 (4)Alignment属性 11 (5)LineSpacing属性 12 (6)HangingPunctuation属性 12 四、Range 和 Selection 对象 12 (1)Range对象 12 (2)Selection 对象 13 (3)常用属性 13 ①Start属性 13 ②End属性 14 ③Text属性 14 ④Type属性 14 ⑤Information 属性 15 (4)常用方法 18 ①Copy 方法 18 ②Cut 方法 18 ③Paste 方法 18 ④Collapse 方法 18 ⑤InsertBefore 方法 19 ⑥InsertAfter方法 19 ⑦TypeText方法 19 ⑧Delete 方法 20 ⑨移动插入点的方法 20 ㈠Move 方法 20 ㈡MoveDown 方法 20 ㈢MoveEnd 方法 21 ㈣MoveEndUntil 方法 21 ㈤MoveLeft 方法 22 ㈥MoveRight方法 22 ㈦MoveStart 方法 23 ㈧MoveStartUntil 方法 23 ㈨MoveUp 方法 24 五、表格处理 25 1、Table 对象和Tables 集合对象 25 2、添加表格 25 (1)PreferredWidthType 属性 25 (2)AllowAutoFit属性 26 (3)AllowPageBreaks属性 26 3、Border 对象和Borders 集合对象 26 (1)LineStyle属性 26 (2)LineWidth属性 27 (3)Color属性 27 (4)Enable 属性 27 (5)DefaultBorderLineWidth 属性 27 (6)DefaultBorderLineStyle 属性 27 (7)DefaultBorderColor 属性 27 4、Cell 对象和Cells 集合对象 28 5、Row 对象和Rows 集合对象 28 (1)Height 属性 28 (2)Delete 方法 28 (3)SetHeight 方法 28 6、Column 对象和Columns 集合对象 29 (1)Width 属性 29 (2)Delete 方法 29 (3)SetWidth 方法 29 7、合并与拆分单元格 30 (1)合并单元格 30 (2)拆分单元格 30 六、Shape 对象和Shapes 集合对象 32 1、常用方法 32 (1)AddLine 方法 32 (2)AddTextbox 方法 33 (3)AddTextEffect 方法 33 (4)AddPicture 方法 34
2025-07-03 11:22:30 307KB word
1
找的资料大多数是VC6.0的,这里是我总结的在Visual Studio 2008中对word的操作,超级详细,教给你一步一步的在Visual Studio 2008中对word的操作。有图有真相.里面还包括了VC6.0与Visual Studio 2008中对word实现同一功能但是不同函数的用法。 ### Visual Studio 2008 中对 Word 的操作详解 #### 一、背景介绍 在进行文档自动化处理时,往往需要使用编程语言来控制 Word 应用程序。Visual Studio 2008 作为一款强大的集成开发环境,支持多种语言进行开发,并提供了丰富的工具和库来简化开发过程。本文主要介绍如何在 Visual Studio 2008 中通过 C++ 对 Word 进行操作,特别关注如何打开 Word 文件。 #### 二、操作步骤详解 ##### 1. 目标设定 目标是在 Visual Studio 2008 中创建一个基于对话框的应用程序,当用户点击界面上的“打开”按钮时,能够打开指定的 Word 文件。 ##### 2. 创建项目 在 Visual Studio 2008 中新建一个基于对话框的项目。 ##### 3. 控件布局 根据需求设计界面,放置必要的控件,例如一个按钮用于触发打开 Word 文件的操作。 ##### 4. 添加 Word 类库支持 为了能够在 C++ 代码中操作 Word 文档,需要添加 Word 类库的支持。 - **添加 Word 类库**:可以通过以下两种方式添加 Word 类库: - 在“工具”菜单中选择“引用”; - 或者在“类视图”中右键点击项目名,选择“添加”->“添加 COM 引用”。 - **选择 Word 类库**:在弹出的对话框中选择 Word 类库,一般为 Microsoft Word x.x Object Library(其中 x.x 表示 Word 版本号)。 - **配置 Word 类库路径**:选择“文件”选项卡下的“浏览”按钮,找到 Word 的安装路径,通常为 `C:\Program Files\Microsoft Office\OFFICE11`(此处的 OFFICE11 可能会根据具体版本有所不同),并选择 MSWORD.OLB 文件。 - **完成添加**:勾选需要的类库,例如 _Application、Documents 和 _Document,并点击“完成”。 ##### 5. 修改头文件 修改 CApplication.h、CDocument0.h 和 CDocuments.h 文件中的导入语句,确保正确引用 Word 类库: ```cpp #import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB" no_namespace raw_interfaces_only \ rename("FindText", "_FindText") \ rename("Rectangle", "_Rectangle") \ rename("ExitWindows", "_ExitWindows") ``` 这些设置可以避免命名冲突,并确保能够正常使用 Word 类库提供的功能。 ##### 6. 编写打开 Word 文件的代码 接下来编写用于打开 Word 文件的代码: ```cpp #include "CDocument0.h" #include "CDocuments.h" #include "CApplication.h" void CMyDialog::OnButtonOpen() // 假设 OnButtonOpen 是“打开”按钮的事件处理器 { CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "All Files (*.doc)|*.doc||", AfxGetMainWnd()); CString strPath; if (dlg.DoModal() == IDOK) { strPath = dlg.GetPathName(); m_Path.SetWindowText(strPath); CApplication app; CDocuments docs; CDocument0 doc; // 初始化连接 app.CreateDispatch(_T("Word.Application")); CComVariant a(_T(strPath)); CComVariant b(false); CComVariant c(0); CComVariant d(true); docs.AttachDispatch(app.get_Documents()); doc.AttachDispatch(docs.Add(&a, &b, &c, &d)); app.put_Visible(true); // 释放环境 doc.ReleaseDispatch(); docs.ReleaseDispatch(); app.ReleaseDispatch(); } } ``` ##### 7. 注意事项 - 在 VC6.0 中,上述代码中涉及的部分函数名可能有所不同,例如 `get_Documents()` 需要替换为 `GetDocuments()`。 - 确保项目的配置正确无误,例如使用正确的路径和类库版本。 #### 三、小结 通过上述步骤,我们成功地实现了在 Visual Studio 2008 中通过 C++ 打开 Word 文件的功能。这对于需要进行文档自动化处理的应用程序来说是非常有用的。同时,本文也对比了在 VC6.0 中实现相同功能的不同之处,帮助开发者更好地理解和适应不同开发环境之间的差异。
2025-02-09 22:55:36 188KB Visual Studio 2008
1
### 使用VB6操作Word文档的关键知识点 #### 一、概述 在给定的文本中,主要涉及了使用VB6(Visual Basic 6.0)来操作Microsoft Word文档的方法和技术问题。具体来说,文本中提到了如何通过编程实现将多个Word文档的内容合并到一个文档中的过程,并在此过程中遇到了一些技术挑战,尤其是当处理较大的文档时。 #### 二、核心知识点详解 ##### 1. VB6 控制 Word 文档的基础概念 - **创建 Word 应用程序对象**:通过 `wordapp = New Word.Application` 创建一个 Word 应用程序对象。 - **打开文档**:使用 `wordapp.Documents.Open()` 方法来打开指定路径的 Word 文档。 - **选择文档内容**:通过 `.Content.Select` 来选中文档中的内容。 - **复制与粘贴**:利用 `.Selection.Copy` 和 `.Selection.Paste` 实现内容的复制和粘贴。 - **插入文档**:可以使用 `.InsertFile` 直接将另一个文档的内容合并到当前文档中。 - **关闭文档**:通过 `.Close(wdDoNotSaveChanges)` 关闭文档而不保存更改。 ##### 2. 处理大型文档的技术挑战 - **文档过大导致的问题**:当处理较大的文档时,可能会遇到如文档未完全关闭、无法重新打开等问题。 - **隐藏的临时文件**:在处理过程中可能会生成一些临时文件(例如 `~$temp.doc`),这些文件可能不会被自动删除,从而引发后续问题。 - **内存管理**:在循环处理多个文档时,如果没有妥善管理内存,可能会导致资源泄漏,进而影响程序的稳定性和性能。 ##### 3. 解决方案探讨 - **释放对象引用**:通过 `Set doctemp = Nothing` 来释放对象引用,帮助释放资源。 - **直接合并文档**:如第6楼中提到的,可以直接使用 `.InsertFile` 方法来合并文档,而无需通过复制粘贴的方式。 - **清理临时文件**:确保在处理完文档后,使用 `Kill pathtemp` 删除临时文件,避免残留问题。 - **异常处理**:在代码中添加适当的异常处理逻辑,比如使用 `Try...Catch` 结构来捕获并处理可能出现的错误。 #### 三、示例代码分析 - **基本合并流程**: ```vb Dim wordapp As New Word.Application Dim doc As Document Set doc = wordapp.Documents.Open(App.Path & "\papertemp.doc") doc.Content.Select Do While Not rs.EOF pathtemp = App.Path & "\temp.doc" With wordapp.Selection .InsertFile FileName:=pathtemp, ConfirmConversions:=False .InsertParagraphAfter .InsertBreak Type:=wdSectionBreakNextPage .Collapse Direction:=wdCollapseEnd End With Kill pathtemp rs.MoveNext Loop doc.Save ``` - **关键步骤解释**: - 使用 `With wordapp.Selection` 来指定插入操作的范围。 - 通过 `.InsertFile` 直接将文件内容插入到当前文档。 - 使用 `.InsertBreak Type:=wdSectionBreakNextPage` 插入一个新页面,以便每个文档的内容都从新页面开始。 - 通过 `.Collapse Direction:=wdCollapseEnd` 将选择范围移到段落末尾。 #### 四、注意事项 - 在处理大型文档时,应特别注意内存管理和资源释放,避免程序崩溃。 - 使用 `.InsertFile` 而非传统的复制粘贴方法可以简化代码,并提高效率。 - 对于出现的任何错误或异常,都需要进行适当的处理,以确保程序的健壮性。
2024-10-22 11:48:17 95KB Word
1
java 利用 xdoc 导出word的Demo,demo中有相对应的maven依赖,主要包含两个例子,一个是表格的遍历且每个单元需要多张图片的遍历。另一个是简单的word模板,主要是遍历list数据展示到表格,然后每个单元格只有一张图片。demo中,存在相对于的模板,至于制作模板可以翻翻相关的文章,互相学习,一起加油。
2024-08-27 17:54:42 224KB java
1
这个需要安装VCLSkins!! 家里的PowerPoint坏了 所以这个程序PPT的部分未经调试 过几日就要高三了,希望这段源码可以给自己攒点分,留着以后用~~
2024-02-24 19:32:38 1.55MB delphi OFFice
1
通过PowerDesigner自定义报表模板生成rtp文档。通过PowerDesigner自定义报表模板生成rtp文档。
2023-04-13 10:30:01 15KB ldm,rtp
1
一个理科在word中编辑公式的专用工具,可在word文档中插入复杂的数学公式和符号
2023-04-04 20:31:27 76.52MB 数学
1
用pb写的批量修改word工具,可以替换和查找固定单词,只处理正文和页眉
2023-02-24 12:50:16 4.61MB pb Doc Docx
1
主要介绍了VUE动态生成word的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
2023-02-16 17:34:28 60KB VUE 动态生成 word
1