Unity使用NPOI库操作Word文件

Unity使用NPOI库操作Word文件

1、导入NPOI库的DLL

链接:https://pan.baidu.com/s/1O29nSZdBsNM8hP_f6-bH1A?pwd=6666
提取码:6666
–来自百度网盘超级会员V4的分享
2、将类库文件导入到Plugins文件夹目录下,类库文件要放在Plugins文件夹里面才能在C#引用
在这里插入图片描述
3、设置.NET版本,如果不是4.x可能会出现不兼容的问题,这个不一定,看自己情况
在这里插入图片描述
4、代码创建Word文档,并写入文字,然后打开Word文档

/*****************************************************************
*Copyright(C) 2019 by #COMPANY# 
 *All rights reserved. 
 *FileName:#SCRIPTFULLNAME# 
 *Author:#AUTHOR#
 *Version:#VERSION# 
 *UnityVersion:#UNITYVERSION#
 *Date:#DATE# 
 *Description:    
 *History:
*******************************************************************/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using NPOI.XWPF.UserModel;
namespace Zhen
{
    public class ExportWordScript : MonoBehaviour
    {
        /// <summary>
        /// 创建Word并写入文字
        /// </summary>
        public static void CreateWordAndWrite()
        {
            //打开一个文件,如果没有则创建,并设置访问权限
            XWPFDocument document = new XWPFDocument();
            FileStream file = new FileStream("C:\\Users\\Administrator\\Desktop\\吊装方案.docx", FileMode.OpenOrCreate, FileAccess.ReadWrite);

            //创建段落,设置段落对齐方式等操作
            //创建标题
            XWPFParagraph titlePar = document.CreateParagraph();
            // 设置标题居中对齐
            titlePar.Alignment = ParagraphAlignment.CENTER;
            //插入一行
            XWPFRun titleR = titlePar.CreateRun();
            SetFont(titleR, "000000", "吊装方案", "微软雅黑", 18, true, false);

            //创建第一行介绍
            XWPFParagraph par1 = document.CreateParagraph();
            // 设置段落的首行缩进  
            par1.IndentationFirstLine = 600;
            //插入一行
            XWPFRun parR1 = par1.CreateRun();
            SetFont(parR1, "000000", "依托工程设计成果,导入标准数字化移交的模型数据,搭建铁塔组立施工三维仿真场景。软件具有碰撞检测、安全距离校验、超重预警、参数化控制、吊装过程模拟等功能,通过铁塔组立方案的模拟和辅助设计,最终实现专业化、标准化的铁塔组装施工方案。", "微软雅黑", 14, false, false);

            //接下来是其他行文字的添加
            //创建第一行介绍
            XWPFParagraph par2 = document.CreateParagraph();
            // 设置段落的首行缩进  
            par2.IndentationFirstLine = 600;
            //插入一行
            XWPFRun parR2 = par2.CreateRun();
            SetFont(parR2, "000000", "吊装方案如下:", "微软雅黑", 14, false, false);

            document.Write(file);
            file.Close();
        }

        /// <summary>
        /// 打开Word
        /// </summary>
        public static void OpenWord()
        {
            System.Diagnostics.Process.Start("C:\\Users\\Administrator\\Desktop\\吊装方案.docx");
        }

        /// <summary>
        /// 对文字进行操作
        /// </summary>
        /// <param name="run">段落对象</param>
        /// <param name="color">颜色</param>
        /// <param name="text">文字内容</param>
        /// <param name="font">字体</param>
        /// <param name="size">字号</param>
        /// <param name="isOverBold">是否加粗</param>
        /// <param name="isItalic">是否斜体</param>
        public static void SetFont(XWPFRun run, string color, string text, string font, int size, bool isOverBold, bool isItalic)
        {
            run.SetColor(color);
            run.SetText(text);
            run.FontFamily = font;
            run.FontSize = size;
            run.IsBold = isOverBold;
            run.IsItalic = isItalic;
        }
    }
}

5、调用:

ExportWordScript.CreateWordAndWrite();
ExportWordScript.OpenWord();

6、效果如下:
在这里插入图片描述
7、以下是NPOI库中一些常用操作Word的属性和方法的示例:

7.1、创建文档和段落

XWPFDocument doc = new XWPFDocument(); // 创建新的Word文档  
XWPFParagraph p = doc.CreateParagraph(); // 创建新的段落

7.2、设置段落文本

XWPFRun r = p.CreateRun(); // 创建段落中的运行对象  
r.SetText("这是段落文本"); // 设置运行对象的文本内容

7.3、设置段落样式

p.Alignment = ParagraphAlignment.CENTER; // 设置段落的对齐方式为居中

7.4、设置字体样式

r.IsBold = true; // 设置文本为加粗  
r.FontSize = 16; // 设置字体大小为16  
r.SetFontFamily("宋体"); // 设置字体为宋体

7.5、添加表格

XWPFTable table = doc.CreateTable(3, 3); // 创建一个3行3列的表格  
for (int row = 0; row < 3; row++)  
{  
    for (int col = 0; col < 3; col++)  
    {  
        XWPFTableCell cell = table.GetRow(row).GetCell(col); // 获取表格单元格  
        cell.SetText("行" + (row + 1) + ",列" + (col + 1)); // 设置单元格文本  
    }  
}

7.6、保存文档

using (FileStream fs = new FileStream("example.docx", FileMode.Create, FileAccess.Write))  
{  
    doc.Write(fs); // 将文档写入文件流并保存为example.docx  
}

7.7、插入图片

//这段代码将在段落中插入一张图片。需要注意的是,你需要提供图片的路径以及图片的格式。
string imgPath = "path/to/image.jpg"; // 图片路径  
XWPFRun run = p.CreateRun();  
int format = doc.AddPictureData(File.ReadAllBytes(imgPath), PictureType.JPEG);  
run.AddPicture(new byte[] { format }, PictureType.JPEG, imgPath, Units.ToEMU(200), Units.ToEMU(200)); // 200x200像素大小

7.8、设置段落间距

//你可以使用SpacingAfter和SpacingBefore属性来设置段落之间的间距。
p.SpacingAfter = 20; // 设置段落之后的间距为20点  
p.SpacingBefore = 20; // 设置段落之前的间距为20点

7.9、添加页眉和页脚

//这段代码将创建一个页眉,并设置其文本为“这是页眉”。你可以使用类似的方法创建和设置页脚。
XWPFHeaderFooterPolicy policy = doc.GetHeaderFooterPolicy();  
if (policy == null)  
{  
    policy = doc.CreateHeaderFooterPolicy(); // 创建页眉页脚策略  
}  
XWPFHeader header = policy.CreateHeader(XWPFHeaderFooterPolicy.DEFAULT); // 创建页眉  
XWPFParagraph headerParagraph = header.CreateParagraph(); // 在页眉中创建段落  
XWPFRun headerRun = headerParagraph.CreateRun();  
headerRun.SetText("这是页眉"); // 设置页眉文本

7.10、添加超链接

//这段代码将在段落中创建一个指向"http://www.example.com"的超链接。点击该链接将跳转到指定的网址。
XWPFRun run = p.CreateRun();  
run.SetText("点击这里访问网站"); // 设置运行对象的文本内容  
run.AddHyperlink("http://www.example.com"); // 添加超链接

当然,还有一些其他关于NPOI操作Word的高级功能示例:
7.11、插入列表

//这将创建一个带有项目符号的列表项。你可以通过更改NumberingType来创建不同类型的列表。
XWPFParagraph p = doc.CreateParagraph();  
p.Style = doc.CreateStyle();  
p.Style.NumberingFormat = new XWPFNumberingFormat();  
p.Style.NumberingFormat.NumberingType = NumberingType.BULLET; // 或者 NumberingType.DECIMAL for numbered lists  
XWPFRun r = p.CreateRun();  
r.SetText("List Item");

7.12、插入和修改表格中的行和单元格

//你可以使用上述代码创建表格,并向其中添加行和单元格。
XWPFTable table = doc.CreateTable(); // 创建表格  
XWPFTableRow row = table.CreateRow(); // 创建行  
XWPFTableCell cell = row.CreateCell(); // 创建单元格  
cell.SetText("单元格文本"); // 设置单元格文本

7.13、使用模板,如果你有一个现有的Word文档作为模板,你可以使用NPOI加载并修改它。

XWPFDocument doc = new XWPFDocument(File.OpenRead("template.docx")); // 从现有模板加载文档  
foreach (XWPFParagraph paragraph in doc.Paragraphs)  
{  
    if (paragraph.Text.Contains("placeholder")) // 查找特定文本  
    {  
        paragraph.ReplaceText("placeholder", "替换文本"); // 替换文本  
    }  
}

7.14、保存为流,除了保存到文件,你还可以将Word文档保存为流。

//这对于在Web应用程序中生成并发送Word文档非常有用,你可以直接将字节流发送给客户端。
MemoryStream ms = new MemoryStream();  
doc.Write(ms);  
byte[] wordDocumentBytes = ms.ToArray();

这些示例可以帮助你更全面地了解NPOI库操作Word文档的功能。使用这些属性和方法,你可以创建、编辑和格式化Word文档,以满足不同的需求。记得在使用NPOI库时,要引用正确的命名空间,并确保已正确安装和引用NPOI库的相关依赖项。
8、测试直接修改Word模版的文字,修改本地文档内容
8.1、创建一个本地的Word文档,这里的路径一定要和Unity里面的路径保持一致
在这里插入图片描述

/// <summary>
        /// Word模板路径
        /// </summary>
        private static string path = "Assets\\StreamingAssets\\吊装方案\\吊装方案.docx";

        /// <summary>
        /// 更改后的文件路径
        /// P.S. 当然可以直接修改模板文件,这里另外生成文件是个人为了方便测试。
        /// </summary>
        private static string targetPath = "C:\\Users\\Administrator\\Desktop\\吊装方案.docx";

在这里插入图片描述

8.2、代码替换如下:

 /// <summary>
        /// 修改文件
        /// </summary>
        public static void ReadWriteFile()
        {
            FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
            XWPFDocument doc = new XWPFDocument(fs);

            //遍历段落
            foreach (var para in doc.Paragraphs)
            {
                string oldText = para.ParagraphText;
                if (oldText == "")
                {
                    continue;
                }
                //记录段落文本
                string tempText = para.ParagraphText;
                //查找标记并修改内容
                if (tempText.Contains("$日期$"))
                {
                    tempText = tempText.Replace("$日期$", (DateTime.Now).ToString());
                }
                //替换内容
                para.ReplaceText(oldText, tempText);
            }

            //生成指定文件
            FileStream output = new FileStream(targetPath, FileMode.Create);
            //将文档信息写入文件
            doc.Write(output);
            fs.Close();
            fs.Dispose();
            output.Close();
            output.Dispose();

            Debug.Log("修改文件成功!");
            System.Diagnostics.Process.Start(targetPath);//打开指定文件
        }   

8.3、结果如下:
在这里插入图片描述
9、打完收工。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值