在Unity中使用EPPlus库NPOI库写入Excel数据

Unity版本: 2021.3.25f1

1.EPPlus库:

a.引用EPPlus库:首先,需要在Unity项目中引用EPPlus库。可以通过从官方网站(https://epplussoftware.com/)下载EPPlus库的最新版本,并将其添加到Unity项目中。

b.创建Excel数据:在Unity中,使用C#脚本来创建Excel数据。在示例代码中,创建了一个名为MemoryStreamExample的MonoBehaviour类来处理Excel数据。在CreateExcelData方法中,使用EPPlus库创建一个Excel包,并向其中添加一个工作表。然后,使用嵌套的循环将数据写入工作表的单元格中。

c.保存Excel数据到内存流:EPPlus库提供了将Excel数据保存到内存流的功能。在示例代码的CreateExcelData方法中,使用MemoryStream来保存Excel数据。将Excel包保存到MemoryStream,然后使用ToArray方法将MemoryStream转换为字节数组。

d.保存Excel数据到本地:在示例代码的SaveExcelToFile方法中,使用File.WriteAllBytes方法将Excel数据的字节数组写入到本地文件。提供文件路径作为参数,以便将数据保存到指定位置。

优点

灵活性:EPPlus库提供了丰富的功能和灵活的API,可以满足各种Excel数据处理需求。

性能:EPPlus库具有优化的性能,特别适用于处理大量数据。使用EPPlus库的内存流功能可以避免磁盘I/O操作,提高性能。

跨平台支持:EPPlus库是基于.NET标准的,因此可以在Unity等多个平台上使用。

开源和免费:EPPlus库是开源的,可以免费使用和修改。

csharp 复制代码
using OfficeOpenXml;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class MemoryStreamExample : MonoBehaviour
{
    byte[] steamByt;
    void Start()
    {
        steamByt = CreateExcelData();
        SaveExcelToFile(steamByt, Application.streamingAssetsPath + "/test.xlsx");
    }
    public byte[] CreateExcelData()
    {
        using (ExcelPackage package = new ExcelPackage())
        {
            ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1");// 写入数据
            for (int row = 1; row <= 1000; row++)
            {
                for (int column = 1; column <= 1000; column++)
                {
                    worksheet.Cells[row, column].Value = "Data"; // 写入数据到单元格
                }
            }
            // 保存Excel数据到内存流
            using (MemoryStream memoryStream = new MemoryStream())
            {
                package.SaveAs(memoryStream);// 转换为字节数组
                byte[] excelData = memoryStream.ToArray();
                return excelData;
            }
        }
    }
    public void SaveExcelToFile(byte[] excelData, string filePath)
    {
        File.WriteAllBytes(filePath, excelData);
    }
}

在Start方法中,调用CreateExcelData方法创建Excel数据,并将返回的字节数组保存到steamByt变量中。然后,调用SaveExcelToFile方法将字节数组保存到本地文件。

2.NPOI库

a.引用NPOI库:首先,需要在Unity项目中引用NPOI库。可以通过从NPOI的GitHub仓库(https://github.com/nissl-lab/npoi)下载最新版本的NPOI库,并将其添加到Unity项目中。

b.创建Excel数据:在Unity中,使用C#脚本来创建Excel数据。在示例代码中,创建了一个名为MemoryStreamExample的MonoBehaviour类来处理Excel数据。在CreateExcelData方法中,使用NPOI库创建一个工作簿(Workbook)和一个工作表(Sheet)。然后,使用嵌套的循环将数据写入工作表的单元格中。

c.保存Excel数据到内存流:NPOI库提供了将Excel数据保存到内存流的功能。在示例代码的CreateExcelData方法中,使用MemoryStream来保存Excel数据。将工作簿写入到MemoryStream,然后使用ToArray方法将MemoryStream转换为字节数组。

d.保存Excel数据到本地:在示例代码的SaveExcelToFile方法中,使用File.WriteAllBytes方法将Excel数据的字节数组写入到本地文件。提供文件路径作为参数,以便将数据保存到指定位置。

优点

灵活性:NPOI库提供了丰富的功能和灵活的API,可以满足各种Excel数据处理需求。

跨平台支持:NPOI库是基于.NET标准的,因此可以在Unity等多个平台上使用。

开源和免费:NPOI库是开源的,可以免费使用和修改。

csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;
public class MemoryStreamExample : MonoBehaviour
{
    byte[] excelData;
    void Start()
    {
        excelData = CreateExcelData();
        SaveExcelToFile(excelData, Application.streamingAssetsPath + "/test.xlsx");
    }
    public byte[] CreateExcelData()
    {
        IWorkbook workbook = new XSSFWorkbook();
        ISheet sheet = workbook.CreateSheet("Sheet1");// 写入数据
        for (int row = 0; row < 1000; row++)
        {
            IRow excelRow = sheet.CreateRow(row);
            for (int column = 0; column < 1000; column++)
            {
                ICell cell = excelRow.CreateCell(column);
                cell.SetCellValue("Data");
            }
        }
        // 保存Excel数据到内存流
        using (MemoryStream memoryStream = new MemoryStream())
        {
            workbook.Write(memoryStream);
            byte[] excelData = memoryStream.ToArray();
            return excelData;
        }
    }
    public void SaveExcelToFile(byte[] excelData, string filePath)
    {
        File.WriteAllBytes(filePath, excelData);
    }
}

在保存的时候还是会有卡顿,需要等等就可以看到生成的文档了.

相关推荐
AI英德西牛仔9 小时前
从Excel乱象到批量交付:秘塔Excel与“AI导出鸭”PC版的底层重构逻辑
人工智能·重构·excel·deepseek·ai导出鸭
上海魁鲸科技有限公司11 小时前
APS高级排产系统到底有什么用?一文讲清功能、选型与落地建议
前端·microsoft·excel
江上闲人.12 小时前
Wardogs战犬\战狗Beta测试启动报错UE崩溃卡顿?解决方法来了
游戏·游戏引擎·虚幻·战犬·战狗·wardogs
小贺儿开发16 小时前
Unity 程序员编曲花絮:汪峰《河流》细节修复
科技·学习·unity·程序员·音乐·demo·写代码
598866753@qq.com17 小时前
Unity UniText笔记
unity·unitext
杨丰玮41817 小时前
从零手写Java飞机躲障碍游戏|Swing绘图、鼠标跟随、计时器碰撞检测实战(五)
java·python·游戏·游戏引擎·图形渲染·动画·贴图
AI导出鸭20 小时前
怎么让文心做表格?AI导出鸭苹果版将文心输出的管道表格智能解析为二维结构,一键导出为Excel或Word标准表格
人工智能·chatgpt·word·excel·ai导出鸭
鼎艺创新科技1 天前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
admin0051 天前
Excel记账和财务软件记账哪个好?效率与准确率真实对比
excel·excel记账·财务软件记账·小微企业记账
huihui3611 天前
校友网管理软件技术选型框架:基于功能核验与系统架构的量化评估
unity·系统架构·游戏引擎