Unity创建和修改本地Word文档

之前做项目基本都是在本地读读数据,最多搞个截图就行了,最近客户突然提出要将实验报告(UGUI,包括图片、按钮、输入框、文字等),这就有点懵,好在经过一段时间的研究,可以在Unity内通过NPOI类库(没听说的可以找度娘问一下)创建和修改Word文档,OK,进入正题吧!

一、导入NPOI类库文件

我直接把所需要的dll文件全都打包出来了,在官网下的比较麻烦,不怕麻烦的童靴可以自己去官网逛一下学习学习,以下附上链接,可直接在百度网盘下载(提取码:kkkk)。
https://pan.baidu.com/s/1fE9hmm62ms_KgPj5HffEVA

别忘了类库文件一定要放在Plugins文件夹里面才能在C#中引用哦,在引用后发现报错,这里需要把Unity的Scripting Runtime Version改成 .NET 4.6 的(我是用Unity 2017.2.0 测试的)
在这里插入图片描述
在这里插入图片描述

二、创建Word文档

先来引用以下吧

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using NPOI.XWPF.UserModel;
using System.IO;
using System;

定义好文件路径、文件名称,在这里我用一个Path准备缝合路径

    /// <summary>
    /// 文件路径
    /// </summary>
    private const string filePath = @"C:/Users/Administrator/Desktop";

    /// <summary>
    /// 文件名称
    /// </summary>
    private string fileName = "david.docx";

    private string path;
    
    /// <summary>
    /// word文档
    /// </summary>
    private XWPFDocument doc = new XWPFDocument();
    
    private void Start()
    {
        //缝合路径
        path = Path.Combine(filePath, fileName);
    }

开始写入文档并保存在本地,这里涉及到字体大小、字体颜色、段落内容。

    /// <summary>
    /// 创建段落
    /// </summary>
    /// <param name="_alignment">对齐方式</param>
    /// <param name="_fontSize">字体大小</param>
    /// <param name="_color">字体颜色(16进制)</param>
    /// <param name="_content">内容</param>
    private void CreateParagraph(ParagraphAlignment _alignment, int _fontSize,
        string _color, string _content)
    {
        XWPFParagraph paragraph = doc.CreateParagraph();
        paragraph.Alignment = _alignment;
        XWPFRun run = paragraph.CreateRun();
        run.FontSize = _fontSize;
        run.SetColor(_color);
        run.FontFamily = "宋体";
        run.SetText(_content);
        FileStream fs = new FileStream(path, FileMode.Create);
        doc.Write(fs);
        fs.Close();
        fs.Dispose();
        Debug.Log("写入成功");
    }

OK,现在回到Unity后把该脚本随便挂到一个游戏物体身上,引用这个方法,运行游戏会发现在指定路径下创建了一个Word文档(并且有我们写入的内容哦)。
在这里插入图片描述在这里插入图片描述

三、修改本地文档内容

个人感觉创建文件并没有什么卵用,举个例子,咱们做一个带有考核的项目,最终的实验报告文字和图片基本上都是固定的,需要改动的只有姓名、学号、成绩等等字段对不对,那么问题来了,如果所有的内容都是通过API手动创建的话(能够想到有多麻烦,文字居中、标题大小、创建表格等等等。。。)。因此修改文档内容才是最高效和简便的方法,直接进入主题。

首先,当然先搞一个Word文档了,PS:这里的路径一定要和Unity里面的路径保持一致。
在这里插入图片描述
这个{$test}就相当于一个字段,为了与其他文字或者符号区分,这里我只是为了方便测试,才用test代替,当然也可以用score、name等等名称,最关键的要来了。

    /// <summary>
    /// 读写文件
    /// </summary>
    private void ReadWriteFile()
    {
        path = Path.Combine(filePath, fileName);
        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("{$test}"))
            {
                tempText = tempText.Replace("{$test}", "我的测试");
            }

            //替换内容
            para.ReplaceText(oldText, tempText);
        }

        FileStream output = new FileStream(path, FileMode.Create);
        doc.Write(output);
        fs.Close();
        fs.Dispose();
        output.Close();
        output.Dispose();

        Debug.Log("修改文件");
    }

通过指定路径读取Word文档,然后遍历每个段落,可以看到,通过API可以获取文档内是否有我们自定义的字段,找到了可以直接替换成我们需要改成的内容,最后在进行输出,文件就得到更新了,是不是很简单。
在这里插入图片描述
OK,内容最终得到了完美的修改,是不是很方便呢,实验报告生成后直接打印出来就可以看到考核的成绩了。

  • 9
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
Unity是一款强大的游戏开发引擎,虽然它的主要用途是创建优秀的游戏,但也可以在一定程度上进行办公文档的导出。要将Unity中的内容导出为Word文档,可以采用以下方法。 首先,在Unity创建一个游戏场景或界面,将要导出的文档内容以合适的方式展示出来,例如使用UI元素显示文本、图片等。 其次,可以使用Unity的插件来处理Word文档的生成和导出。有一些开源的插件可以在Unity Asset Store中找到和下载。这些插件提供了创建、编辑和导出Word文档的功能,可以通过简单的编程来操作。 使用这些插件,可以将Unity中的文本、图片和其他信息按照预先定义的格式插入到Word文档中。可以设置字体、字号、对齐方式等样式,使得导出的文档符合需求。 另外,可以使用C#编程语言来自定义导出过程,根据需要添加更多的功能。例如,可以通过代码来自动填充一些固定文本,添加表格等。 使用上述方法,可以将Unity中的内容导出为Word文档。但需要注意的是,由于Unity不是专为文档处理设计的软件,因此存在一定的限制和局限性。在导出过程中可能会遇到一些格式上的挑战,需要仔细调整和解决。此外,插件的质量和稳定性也可能影响导出结果的准确性。因此,在选择插件时要注意评估其功能和用户评价。 总之,虽然Unity的主要目的不是用于文档处理,但通过使用插件和编写代码,我们仍然可以借助Unity将内容导出为Word文档
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StubbrnStar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值