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、代码替换如下:文章来源:https://www.toymoban.com/news/detail-843761.html
/// <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、打完收工。文章来源地址https://www.toymoban.com/news/detail-843761.html
到了这里,关于Unity使用NPOI库操作Word文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!