Unity创建和修改本地Word文档 您所在的位置:网站首页 word文档如何新建表格内容显示不出来 Unity创建和修改本地Word文档

Unity创建和修改本地Word文档

2024-07-16 16:28| 来源: 网络整理| 查看: 265

之前做项目基本都是在本地读读数据,最多搞个截图就行了,最近客户突然提出要将实验报告(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准备缝合路径

/// /// 文件路径 /// private const string filePath = @"C:/Users/Administrator/Desktop"; /// /// 文件名称 /// private string fileName = "david.docx"; private string path; /// /// word文档 /// private XWPFDocument doc = new XWPFDocument(); private void Start() { //缝合路径 path = Path.Combine(filePath, fileName); }

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

/// /// 创建段落 /// /// 对齐方式 /// 字体大小 /// 字体颜色(16进制) /// 内容 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等等名称,最关键的要来了。

/// /// 读写文件 /// 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,内容最终得到了完美的修改,是不是很方便呢,实验报告生成后直接打印出来就可以看到考核的成绩了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有