在Unity中使用Epplus写Excel

Overview

      

本文旨在帮助你快速入门,该库发展多年内容庞大(官方文档写的极好:https://github.com/EPPlusSoftware/EPPlus/wiki),有些功能在Unity环境可能你永远都不会使用.

官方的一个Demo:

https://github.com/EPPlusSoftware/EPPlus.Samples.CSharp

如果你只有读的需求,可以阅读本文:

在Unity环境中读取Excel配置文件(入门)_unity读取excel文件-CSDN博客

这篇文章我使用的是ExcelReader库(可惜的是该库只能读取Excel),我依赖该库制作了一个编辑器工具,很方便.

Install

因为该库依赖较多,请先阅读本篇.

Nuget For Unity插件介绍-CSDN博客

Start writing code

using System;
using System.IO;
using OfficeOpenXml; //引用namespace
using UnityEngine;public class EPPlusExample : MonoBehaviour
{void Start(){// 确保设置许可上下文//两个枚举Commercial/NonCommercial代表你商业/非商业用途使用//开始的时候随便设置一个,不会影响功能,但不设置会抛出异常ExcelPackage.LicenseContext = LicenseContext.NonCommercial;// 创建 Excel 文件CreateExcelFile();}void CreateExcelFile(){// Excel 文件的路径string filePath = Path.Combine(Application.streamingAssetsPath, "Example.xlsx");// 使用构造函数在指定路径创建一个新的空白的workbook,// 如果还没有该Excel文件那么会创建,否则会打开// 注意:最后不要忘记调用一下Save()保存一下// 使用using确保正确释放资源,或者在合适的时机使用Dispose().using (var package = new ExcelPackage(filePath)){// 一个workbook必须有一张表,所以我们添加一张表var ws = package.Workbook.Worksheets.Add("Sheet1");//  var ws=package.Workbook.Worksheets["Sheet1"];使用索引器可以直接获得一个已存在的表// 写入表头ws.Cells[1, 1].Value = "日期";// ws.Cells["A1"].Value = "日期";也可以这样写,都代表第一列第一行ws.Cells[1, 2].Value = "价格";ws.Cells[1, 3].Value = "数量";// 写入数据ws.Cells[2, 1].Value = DateTime.Now.ToString("yyyy-MM-dd");ws.Cells[2, 2].Value = 100;ws.Cells[2, 3].Value = 5;ws.Cells[3, 1].Value = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");ws.Cells[3, 2].Value = 150;ws.Cells[3, 3].Value = 3;package.Save();//Save方法代表保存原始文件,就是说你修改了那么保存一下// 使用Style可以访问大多数单元格的格式和样式。// ws.Cells[2, 1].Style.Font.Bold=true;// 保存到指定路径//FileInfo file = new FileInfo(filePath);//package.SaveAs(file);这可以理解为另存//如果最后选择另存,那么开头的构造函数不传入路径.//SaveAs也有很多重载,使用FileInfo对象或者直接使用字符串都可以
//---------------------下述规则是和区域性无关的,遵循 OOXML 标准-----------------------------------// (1) 单元格地址的写法// A1:C1:表示第一行从列 A 到列 C 的单元格。C3:表示单独的 C3 单元格。// 单元格地址在代码中用逗号(, )分隔,表示多个区域。// ws.Cells["A1:C1,C3"].Style.Font.Bold = true; //(2) 数字格式// 数字格式中:// 使用点号(.)作为小数点。// 使用逗号(,)作为千位分隔符// ws.Cells["B2:B3"].Style.NumberFormat.Format = "#,##0.00";// 格式说明:// #,##0.00 表示整数部分有千位分隔符,小数部分保留两位。// 应用后,单元格的值显示为 1,234.56。//             1. 格式的组成
//             "#,##0.00" 是一个数字格式字符串,它定义了如何在 Excel 中显示数字。它由两部分组成:
//
//             #,##:
//             表示数字的千位分隔符。
//             每隔三位用逗号(,)分隔,例如 1,000 或 1,000,000。
//             如果数字不足千位,不显示逗号。例如 123。
//
//             0.00:
//             0:表示数字的必须显示位数(如果数字没有对应的位数,会补零)。
//             例如:12 会显示为 12.00。
//             .00:表示保留两位小数。
//             即使输入的数字没有小数部分,也会补充显示小数部分。
//             例如:5 会显示为 5.00。
//             2. 分组与规则
//             (1) #,## 的具体含义
//             #:
//             表示可选数字位,如果对应的位置没有数字,不显示任何内容。
//             例如:数字 123 使用 #,## 格式会显示为 123,而 1234 会显示为 1,234。
//             (2) 0.00 的具体含义
//             0:
//             表示必须显示数字位,如果对应位置没有数字,则填充 0。
//             例如:
//             数字 5 使用 0.00 格式会显示为 5.00。
//             数字 0 会显示为 0.00。
//             .00:
//             表示显示两位小数位。如果数字本身有更多小数,会进行四舍五入。
//             例如:
//             数字 3.14159 使用 0.00 格式会显示为 3.14。
//             数字 2 会显示为 2.00。// (3) 公式// 在 EPPlus 中定义公式时:// 参数之间使用逗号(,)分隔,而不是分号(;)。// 公式中不需要添加等号(=),直接写公式的主体部分。// 譬如:// ws.Cells["C11"].Formula = "SUBTOTAL(9,\"C1:C10\")";// SUBTOTAL 是一个 Excel 内置函数,用于计算汇总值。// 参数解释:// 9 表示求和(SUM)。// "C1:C10" 是目标区域。// 公式在 Excel 中会被正确解析为 =SUBTOTAL(9,C1:C10)#if UNITY_EDITORUnityEditor.AssetDatabase.Refresh(); //编辑器下强制编译一下.刷出该Excel文件
#endif}Debug.Log($"Excel 文件已创建:{filePath}");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/61200.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫下载新闻,Flask展现新闻(2)

上篇讲了用Python从新闻网站上下载新闻,本篇讲用Flask展现新闻。关于Flask安装网上好多教程,不赘述。下面主要讲 HTML-Flask-数据 的关系。 简洁版 如图,页面简单,主要显示新闻标题。 分页,使用最简单的分页技术&…

vscode 执行 vue 命令无效/禁止运行

在cmd使用命令可以创建vue项目但是在vscode上面使用命令却不行 一、问题描述 在 cmd 中已确认vue、node、npm命令可以识别运行,但是在 vscode 编辑器中 vue 命令被禁止,详细报错为:vue : 无法加载文件 D:\Software\nodejs\node_global\vue.…

Centos7安装Jenkins脚本一键部署

公司原先Jenkins二进制安装,自己闲来无事在测试主机优化了一下,一键部署,jenkins2.426版本jdk11版本 #!/bin/bashjenkins_file"jenkins-2.426.3-1.1.noarch.rpm"# 更新软件包列表 echo "更新软件包列表..." sudo yum up…

基于AIRTEST和Jmeter、Postman的自动化测试框架

基于目前项目和团队技术升级,采用了UI自动化和接口自动化联动数据,进行相关测试活动,获得更好的测试质量和测试结果。

QT基础 UI编辑器 QT5.12.3环境 C++环境

一、UI编辑器 注意:创建工程时,要勾上界面按钮 UI设计师界面的模块 UI编辑器会在项目构建目录中自动生成一个ui_xxx.h(构建一次才能生成代码),来表示ui编辑器界面的代码,属于自动生成的,一定不…

关于win11电脑连接wifi的同时,开启热点供其它设备连接

背景: 我想要捕获手机流量,需要让手机连接上电脑的热点。那么问题来了,我是笔记本电脑,只能连接wifi上网,此时我的笔记本电脑还能开启热点供手机连接吗?可以。 上述内容,涉及到3台设备&#x…

题解 洛谷 Luogu P2440 木材加工 二分答案 C/C++

题目传送门: P2440 木材加工 - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/problem/P2440思路 很简单的二分答案 每次找区间中点 m,判断每段长度为 m 时木头段总数是否 > k 即可 有两个细节需要注意一下 1.left 初始值应为 1 而非 0&…

恒利联创携手Pearson VUE 亮相第62届高博会

2024年11月15日-17日,第62届中国高等教育博览会(简称“高博会”)在重庆举行,恒利联创携手全球领先的考试服务提供商Pearson Vue Certiport共同亮相,为中国院校展现并提供数字化职业技能的教育平台及学练考体系。 作为P…

网络工程师教程第6版(2024年最新版)

网络工程师教程(第6版)由清华大学出版社出版,由工业和信息化部教育与考试中心组编,张永刚、王涛、高振江任主编,具体介绍如下。 相关信息: 出版社: 清华大学出版社 ISBN:9787302669197 内容简介: 本书是工业和信息化部教育与考试中心组织编写的考试用书。本书 根据…

<项目代码>YOLOv8 瞳孔识别<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…

Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪

这里写目录标题 1.目标检测 Detection2.实例分割 segment3.图像分类 classify4.关键点估计 Keypoint detection5.视频帧检测 video detect6.视频帧分类 video classify7.旋转目标检测 obb detect8.替换yolo11模型 给我点个赞吧,谢谢了附录coco80类名称 笔记本 华为m…

uniapp: 微信小程序包体积超过2M的优化方法(主包从2.7M优化到1.5M以内)

一、问题描述 在使用uniapp进行微信小程序开发时,经常会遇到包体积超过2M而无法上传: 二、解决方案 目前关于微信小程序分包大小有以下限制: 整个小程序所有分包大小不超过 30M(服务商代开发的小程序不超过 20M) 单个…

STM32 ADC --- 任意单通道采样

STM32 ADC — 单通道采样 文章目录 STM32 ADC --- 单通道采样cubeMX配置代码修改:应用 使用cubeMX生成HAL工程 需求:有多个通道需要进行ADC采样,实现每次采样只采样一个通道,且可以随时采样不同通道的功能。 cubeMX配置 这里我们…

python读取Oracle库并生成API返回Json格式

一、安装必要的库 首先,确保已经安装了以下库: 有网模式 pip install flask pip install gevent pi install cx_Oracle离线模式: 下载地址:https://pypi.org/simple/flask/ # a. Flask Werkzeug-1.0.1-py2.py3-none-any.whl J…

开发 + 安全:网络安全的协作方法

开发团队和安全团队之间由来已久的紧张关系一直是组织内部摩擦的根源。开发人员优先考虑速度和效率,旨在通过快节奏、迭代的开发周期快速交付功能和产品并高效前进。另一方面,安全团队努力平衡风险和创新,但必须专注于使用护栏保护敏感数据和…

SpringAOP模拟实现

文章目录 1_底层切点、通知、切面2_切点匹配3_从 Aspect 到 Advisor1_代理创建器2_代理创建时机3_Before 对应的低级通知 4_静态通知调用1_通知调用过程2_模拟 MethodInvocation 5_动态通知调用 1_底层切点、通知、切面 注意点: 底层的切点实现底层的通知实现底层的…

头歌——VLAN基本配置第一关

任务描述 本关任务:实现跨交换机的VLAN。 相关知识 为了完成本关任务,你需要掌握:1.VLAN的定义,2.VLAN的类型。 实验步骤 (1)新建Packet Tracer拓扑图; (2)划分VLAN&…

CentOS使用中遇到的问题及解决方法

一、CentOS 7网络配置(安装后无法联网问题) 现象说明 在安装CentOS系统后,有可能出现无法联网的问题,虚拟机中的网络配置并没有问题,而系统却无法联网,也ping不通。 原因描述 CentOS默认开机不启动网络,因…

【AI+教育】一些记录@2024.11.16

《万字长文,探讨关于ChatGPT的五个最核心问题》 万字长文,探讨关于ChatGPT的五个最核心问题关于 ChatGPT 铺天盖地的信息让人无所适从。本文则试图提炼出五个关键问题:如何理解这次范式突破,未来能达到的技术天花板,行…

CEF编译指南2024 Windows篇-CEF简介(一)

1. 引言 在现代桌面应用程序开发中,Web技术的应用越来越广泛。许多开发者希望能够在传统桌面应用中嵌入Web内容,既保留了原生应用的性能优势,又能享受Web开发的便利性。CEF(Chromium Embedded Framework)作为一个基于…