当前位置: 首页 > news >正文

在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}");}
}

相关文章:

在Unity中使用Epplus写Excel

Overview 本文旨在帮助你快速入门,该库发展多年内容庞大(官方文档写的极好:https://github.com/EPPlusSoftware/EPPlus/wiki),有些功能在Unity环境可能你永远都不会使用. 官方的一个Demo: https://github.com/EPPlusSoftware/EPPlus.Samples.CSharp 如果你只有读的需求,可以…...

初识算法 · 模拟(2)

目录 前言: Z字形变换 题目解析 算法原理 算法编写 数青蛙 题目解析 算法原理 算法编写 前言: ​本文的主题是模拟,通过两道题目讲解,一道是Z字形变化,一道是数青蛙。 链接分别为: 1419. 数青蛙…...

【Java面试】—— 创建线程池的两种方式(执行流程、拒绝策略)(详细)

目录 一、ThreadPoolExecutor(推荐)(重点) 1、参数 2、执行流程 3、常用方法 4、任务拒绝策略 二、Executors(不推荐) 1、常用方法 2、存在的问题 一、ThreadPoolExecutor(推荐)(重点) 1、参数 使用指定的初始化参数创建一个新的线程池对象 public Thread…...

Docker在微服务架构中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 Docker在微服务架构中的应用 Docker在微服务架构中的应用 Docker在微服务架构中的应用 引言 Docker 基本概念 1. 容器 2. 镜像 3…...

苹果ASA归因对接以及API接入

一、归因概要 广告归因,目的是用于衡量广告带来的激活用户的成本以及后续进一步的用户质量表现。 Apple Ads 广告平台是基于 App Store(站内广告),同时属于自归因平台(通常称为 SAN)。这两个因素&#xff…...

Git常用操作学习

目录 Git基础概述 1.1 什么是Git? 1.2 Git的优点Git工作流程 2.1 集中式工作流程 2.2 功能分支工作流程 2.3 Git Flow工作流程克隆仓库 3.1 使用git clone 3.2 克隆特定分支分支管理 4.1 创建分支 4.2 切换分支 4.3 合并分支 4.4 删除分支提交和推送更改 5.1 查看状…...

2.5D视觉——Aruco码定位检测

目录 1.什么是Aruco标记2.Aruco码解码说明2.1 Original ArUco2.2 预设的二维码字典2.3 大小Aruco二维码叠加 3.函数说明3.1 cv::aruco::detectMarkers3.2 cv::solvePnP 4.代码注解4.1 Landmark图说明4.2 算法源码注解 1.什么是Aruco标记 ArUco标记最初由S.Garrido-Jurado等人在…...

【PSQLException: An I/O error occurred while sending to the backend.】

PSQLException: An I/O error occurred while sending to the backend. java项目定时任务执行耗时很长的sql语句(很多条sql,从很多表中,很多数据中查询,处理)总之,耗时很长(PG数据库)。报错I/O error,Caused by : java.net.SocketTimeoutException: Read time out场景…...

图像基础算法学习笔记

目录 概要 一、图像采集 二、图像标注 四、图像几何变换 五、图像边缘检测 Sobel算子 Scharrt算子 Laplacian算子 Canny边缘检测 六、形态学转换 概要 参考书籍:《机器视觉与人工智能应用开发技术》 廖建尚,钟君柳 出版时间:2024-…...

【Elasticsearch】01-ES安装

1. 安装 安装elasticsearch。 docker run -d \--name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \-e "discovery.typesingle-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--networ…...

网络性能测试

一、iperf网络性能测试工具 测试udp丢包率 在服务器启动 iperf 服务端 iperf -p 9000 -s -u -i 1参数说明: -p : 端口号 -s : 表示服务端 -u : 表示 udp 协议 -i : 检测的时间间隔(单位,秒) 在客户端,启动 iperf 客户端 iperf -c xxx.xxx.14…...

docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled

无数次的拉镜像让人崩溃: rootnode11:~/ragflow/docker# more rag.sh #export HTTP_PROXYhttp://192.168.207.127:7890 #export HTTPS_PROXYhttp://192.168.207.127:7890 #export NO_PROXYlocalhost,127.0.0.1,.aliyun.com docker compose -f docker-compose-gpu-C…...

esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器

MQTT介绍 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息协议,旨在设备之间进行通信,尤其是在网络条件较差的情况下。MQTT v3.1.1 和 MQTT v5 是该协议的两个主要版本。 MQTT v3.1.1: 优点&#xff…...

OceanBase 升级过程研究(4.2.1.6-4.2.1.8)

模拟业务 使用benchmark加载10仓数据模拟业务场景 升级方法 使用滚动升级方式来进行OB升级。该方法前提是OB集群必须满足官方规定的高可用架构(如果 Zone 个数小于 3,滚动升级时则无法构成多数派), 滚动升级的原理就是轮流完成每个ZONE的升级工作,由于…...

ubuntu下怎么设置机器程序开机自启?

在 Ubuntu 中,可以通过多种方法设置程序或脚本在系统启动时自动运行。以下是几种常见方法: 方法 1:使用 crontab crontab 是一个定时任务管理工具,可以用来设置程序在开机时自动运行。 1. 打开终端,编辑当前用户的 …...

Cesium 相机系统

Cesium 的相机系统是其 3D 地球渲染引擎的重要组成部分,它控制用户在虚拟地球上的视图和交互体验。Cesium 的相机系统具备灵活性和强大的功能,允许开发者自定义视图、导航和交互方式。以下是 Cesium 相机系统的主要特点和功能: 1. 相机的基本…...

数据结构(基本概念及顺序表——c语言实现)

基本概念: 1、引入 程序数据结构算法 数据: 数值数据:能够直接参加运算的数据(数值,字符) 非数值数据:不能够直接参加运算的数据(字符串、图片等) 数据即是信息的载…...

ZYNQ程序固化——ZYNQ学习笔记7

一、ZYNQ启动过程 二、 SD卡启动实操 1、对ZYNQ进行配置添加Flash 2、添加SD卡 3、重新生成硬件信息 4、创建vitis工程文件 5、勾选板级支持包 6、对系统工程进行整体编译,生成两个Debug文件,如图所示。 7、插入SD卡,格式化为 8、考入BOOT.…...

labview使用报表工具从数据库导出数据

之前写了一篇labview从数据库导出数据到excel电子表格,但是是基于调用excel的activeX控件,有时候会有一些bug,就比如我工作机就无法显示方法,后面大哥指点才知道没有的原因是excel安装不完整。像我的工作机就没有这个选项。就需要…...

#define定义宏(2)

大家好,今天给大家分享两个技巧。 首先我们应该先了解一下c语言中字符串具有自动连接的特点。注意只有将字符串作为宏参数的时候才可以把字符串放在字符串中。 下面我们来讲讲这两个技巧 1.使用#,把一个宏参数变成对应的字符串。 2.##的作用 可以把位…...

CentOS网络配置

上一篇文章:VMware Workstation安装Centos系统 在CentOS系统中进行网络配置是确保系统能够顺畅接入网络的重要步骤。本文将详细介绍如何配置静态IP地址、网关、DNS等关键网络参数,以帮助需要的人快速掌握CentOS网络配置的基本方法和技巧。通过遵循本文的…...

基于vue框架的的网上宠物交易管理系统46sn1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,宠物分类,宠物信息 开题报告内容 基于Vue框架的网上宠物交易管理系统开题报告 一、研究背景 随着互联网技术的飞速发展和人们生活水平的提高,宠物已成为许多家庭的重要成员。宠物市场的繁荣不仅体现在实体店的遍地开…...

MySQL数据库:SQL语言入门 【2】(学习笔记)

目录 2,DML —— 数据操作语言(Data Manipulation Language) (1)insert 增加 数据 (2)delete 删除 数据 truncate 删除表和数据,再创建一个新表 (3&#xf…...

MySQL深度剖析-索引原理由浅入深

什么是索引? 官方上面说索引是帮助MySQL高效获取数据的数据结构,通俗点的说,数据库索引好比是一本书的目录,可以直接根据页码找到对应的内容,目的就是为了加快数据库的查询速度。 索引是对数据库表中一列或多列的值进…...

路径规划——RRT-Connect算法

路径规划——RRT-Connect算法 算法原理 RRT-Connect算法是在RRT算法的基础上进行的扩展,引入了双树生长,分别以起点和目标点为树的根节点同时扩展随机树从而实现对状态空间的快速搜索。在此算法中以两棵随机树建立连接为路径规划成功的条件。并且&…...

数据科学与SQL:如何计算排列熵?| 基于SQL实现

目录 0 引言 1 排列熵的计算原理 2 数据准备 3 问题分析 4 小结 0 引言 把“熵”应用在系统论中的信息管理方法称为熵方法。熵越大,说明系统越混乱,携带的信息越少;熵越小,说明系统越有序,携带的信息越多。在传感…...

Redis/Codis性能瓶颈揭秘:网卡软中断的影响与优化

目录 现象回顾 问题剖析 现场分析 解决方案 总结与反思 1.调整中断亲和性(IRQ Affinity): 2.RPS(Receive Packet Steering)和 RFS(Receive Flow Steering): 近期,…...

微知-DOCA ARGP参数模块的相关接口和用法(config单元、params单元,argp pipe line,回调)

文章目录 1. 背景2. 设置参数的主要流程2.1 初始化2.2 注册某个params的处理方式以及回调函数2.4 定义好前面的params以及init指定config地点后start处理argv 3. 其他4. DOCA ARGP包相关4.1 主要接口4.2 DOCA ARGP的2个rpm包4.2.1 doca-sdk-argp-2.9.0072-1.el8.x86_64.rpm4.2.…...

PostgreSQL高可用Patroni安装(超详细)

目录 一 安装Patroni 0 Patroni 对Python的版本要求 1 卸载原来的Python 3.6 版本 2 安装Python 3.7 之上版本 3 安装依赖 psycopg3 4 安装patroni 5 卸载 patroni 二 安装ETCD 1 使用 yum 安装 etcd 2 etcd 配置文件 3 管理 etcd 4 设置密码 5 常用命令 三 安装…...

mcu之,armv7架构,contex-M4系列,时钟树,中断,IO架构(一)

写这篇文章的目的,是记录一下arm架构的32mcu,方便记忆芯片架构原理,方便我展开对,BootLoader的研究。 arm架构,时钟树,先做个记录,有空写。...

做评测好的视频网站有哪些/台州专业关键词优化

python中print的使用方法发布时间:2020-07-02 11:36:31来源:亿速云阅读:105作者:Leah这篇文章将为大家详细讲解有关python中print的使用方法,文章内容质量较高,因此小编分享给大家做个参考,希望…...

电子商城网站建议书/简述如何对网站进行推广

北京交通大学电气工程学院的研究人员诸斐琴、杨中平等,在2019年第3期《电工技术学报》上撰文指出,在城轨交通中安装地面式超级电容储能系统将有效回收列车再生制动能量,降低系统运行能耗。各个变电所、牵引/制动列车与储能系统通过牵引网进行实时能量交互…...

在那里建立公司网站/代引流推广公司

以前一直是通过http://localhost/dnn5.2.3来登录本地的DotNetNuke网站,现在想将我的网站发布出去,让别人能够登录我的网站,这是就需要进行“站点设置”。 步骤一: "Admin->Site Setting-> Advanced Settings ->Por…...

wordpress多板块/今天国内新闻

dfs 必要芝士 queue 头文件 #include<queue> 队列操作 r.push(start) 入队 r.front() 首元素 r.pop() 出队 r.empty() 值为非0 表示空 值为0表示非空 就这么多吧 貌似深度优先搜索和广度优先搜索与先序&#xff0c;层序遍历有联系&#xff1f; 这…...

昆山高端网站建设公司哪家好/茶叶网络营销策划方案

w ^ 我个人对卷积的理解&#xff1a; 卷积是一种对一个目标的一组参数中我们已经得知其中部分我们需要的参数特征&#xff0c;进而需要得到这组参数全部特征的计算方法&#xff0c;来源&#xff1a;泛函分析褶积。 卷积这个概念最早用在图像信号处理上&#xff0c;所以会出现…...

seo网站改版方案怎么写/网络推广工作能长久吗

转自&#xff1a;http://blog.csdn.net/jgw2008/article/details/77993399 在使用Robot Framework测试Android机器过程中, 经常要用到滚屏操作, 改如何实现这个效果呢? 其中一个方法, 就是使用关键字"Swipe", 这个关键字的效果类似模拟操作人员滑动屏幕的效果, 它有…...