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

Unity读取、新建Excel表格

把dll资源解压后,全部导入到unity中的Plugins文件下面
资源放在标题下方,可以自行下载
使用教程


引入命名空间 using SimpleExcel;。这个命名空间下主要有两个类:WorkBook和Sheet。WorkBook用于对整个excel文件的操作,如创建、打开、保存,Sheet用于对工作表的操作,如在特定单元格中添加、修改数据,从数据源中批量导入等。可以参考以下的代码示例:
新建工作簿和工作表:var workbook = new WorkBook();
var sheet = workbook.NewSheet("sheet1");
读取工作簿和工作表:// 根据路径读取工作簿
var workbook = var workbook = new WorkBook(@"F:\projects\Repos\Panda.SimpleExcel\Test\bin\Debug\test.xlsx");// 根据索引读取工作表
var sheet1 = workbook.GetSheet(0);// 根据名称读取工作表
var sheet2 = workbook.GetSheet("Sheet2");
直接给单元格赋值:(单元格用Sheet.Rows[rowIndex][columnIndex]获取,并使用Value属性获取或修改它的内容)sheet1.Rows[0][0].Value = "Hello";
Sheet类提供了直接从IEnumerable转换数据的功能。默认情况下,它会将类型T的所有字段名作为表头,将集合中的所有对象排列出来。例如,我们先创建一个类:public class Person
{public string Name { get; set; }public string Sex { get; set; }public int Age { get; set; }
}
然后使用Sheet.ConvertFromQuery<T>将集合直接添加到工作表中var list = new List<Person>();
for(int i = 0; i < 10; i++)
{var person = new Person(){Name = "测试" + i,Sex = i % 2 == 0 ? "男" : "女",Age = i};list.Add(person);
}
//将List对象添加到工作表中,第一个参数是集合对象,第二个参数是起始行数,默认为0
sheet1.ConvertFromQuery(list, 1);
同样,也可以直接使用linq语句将查询结果添加到工作表//将linq语句转换成工作表数据
var p = from a in list where a.Sex == "男" select a;
sheet2.ConvertFromQuery(p);
保存工作簿:workbook.Save(@"D:\projects\test.xls");
样式控制:可以通过特性来控制工作表的样式。使用Row特性可以控制行样式,使用Column特性可以控制列样式。[Row(EvenRowColor = ExcelColor.Aqua,OddRowColor = ExcelColor.CornflowerBule,HeaderBackColor = ExcelColor.Maroon,HeaderFontColor = ExcelColor.White,HeaderHeight = 20,HeaderHorAlign = HorizontalAlign.Center,HeaderVerAlign = VerticalAlign.Center)]
public class Person
{[Column(BackColor = ExcelColor.Brown, FontColor = ExcelColor.White, FontSize = 14,FontFamily = "黑体",HorAlign = HorizontalAlign.Center,VerAlign = VerticalAlign.Center,Name = "姓名")]public string Name { get; set; }[Column(FontColor = ExcelColor.Red,HorAlign = HorizontalAlign.Left,VerAlign = VerticalAlign.Center,Name = "性别")]public string Sex { get; set; }public int Age { get; set; }
}

项目中运用示例,,读去一个思考题的excel,下图是表格格式
在这里插入图片描述

 public void GetQuestion(string name, Question  game){#region  直接读取Excel 添加思考题Question question = game ;//获取到excel表var workbook = new WorkBook(Application.dataPath + "/Excel/思考题/" + name + ".xlsx");var sheet1 = workbook.GetSheet(0);//获取第一个工作表question.minNum = 1;//注:例如:表格中有4行数据,长度LastRowNum则是3,0是第一行,1是第二行,2是第三行,3是第四行//此处-1是因为思考题表格中第一行和第二行是提示,从第三行才是思考题。如当有四行数据时,思考题只有两道,但是Rows.LastRowNum=3,所以-1,等于2question.maxNum = sheet1.Rows.LastRowNum - 1;question.questionCount = sheet1.Rows.LastRowNum - 1;question.datas = new Question.QuestionItemData[sheet1.Rows.LastRowNum - 1];for (int i = 0; i < question.datas.Length; i++){int t = i + 2;//此处+2 是因为要从表格的第三行开始读取表格数据question.datas[i].question = sheet1.Rows[t][0].Value;question.datas[i].answer = sheet1.Rows[t][1].Value; ;question.datas[i].selects = sheet1.Rows[t][2].Value.Split('|');question.datas[i].resultRight = sheet1.Rows[t][3].Value;question.datas[i].resultWrong = sheet1.Rows[t][4].Value;question.datas[i].sprite = Resources.Load<Sprite>("思考题图片/" + sheet1.Rows[t][5].Value);question.datas[i].point = sheet1.Rows[][6].Value;if (string.IsNullOrEmpty(sheet1.Rows[t][7].Value)){question.datas[i].pointValue = 0;}else{question.datas[i].pointValue = float.Parse(sheet1.Rows[i + 2][7].Value);}}#endregion}

相关文章:

Unity读取、新建Excel表格

把dll资源解压后&#xff0c;全部导入到unity中的Plugins文件下面 资源放在标题下方&#xff0c;可以自行下载 使用教程 引入命名空间 using SimpleExcel;。这个命名空间下主要有两个类&#xff1a;WorkBook和Sheet。WorkBook用于对整个excel文件的操作&#xff0c;如创建、打开…...

智能高效的IDE GoLand v2024.3全新发布——支持最新Go语言

GoLand 使 Go 代码的阅读、编写和更改变得非常容易。即时错误检测和修复建议&#xff0c;通过一步撤消快速安全重构&#xff0c;智能代码完成&#xff0c;死代码检测和文档提示帮助所有 Go 开发人员&#xff0c;从新手到经验丰富的专业人士&#xff0c;创建快速、高效、和可靠的…...

OpenCV相机标定与3D重建(21)投影矩阵分解函数decomposeProjectionMatrix()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将投影矩阵分解为旋转矩阵和相机内参矩阵。 cv::decomposeProjectionMatrix 是 OpenCV 库中的一个函数&#xff0c;用于将投影矩阵&#xff08;…...

Flink State面试题和参考答案-(下)

如何监控 Flink 作业的状态大小&#xff1f; 监控 Flink 作业的状态大小是确保作业性能和稳定性的重要方面。以下是一些监控状态大小的方法&#xff1a; 使用 Flink Web UI: Flink 提供了一个 Web 用户界面&#xff0c;可以展示作业的当前状态大小&#xff0c;包括每个操作符…...

111.【C语言】数据结构之二叉树的销毁函数

目录 1.知识回顾 2.分析 3.代码 后序遍历销毁(最简洁) 前序遍历销毁(不推荐) 中序遍历销毁(不推荐) 4.将函数嵌入main函数中执行 1.知识回顾 106.【C语言】数据结构之二叉树的三种递归遍历方式 2.分析 销毁二叉树需要按照一定的顺序去销毁,例如:先销毁根还是先销毁根…...

[论文阅读] |智能体长期记忆与反思

写在前面&#xff1a;10月份的时候&#xff0c;联发科天玑9400发布&#xff0c;搭载这款旗舰 5G 智能体 AI 芯片的荣耀MagicOS9.0实现了一句话让手机自动操作美团点咖啡。很快商场实体店里便能看到很多品牌手机已经升级为智能体语音助手。下一步&#xff0c;这些智能体或许便能…...

【Trouble Shooting】Oracle ADG hung,出现ORA-04021

异常问题&#xff1a; 突然收到告警&#xff0c;ADG实例状态异常。 环境&#xff1a; 版本&#xff1a;Oracle 11.2.0.4.201020 状态&#xff1a;Active Dataguard 问题&#xff1a; 查看Oracle实例alert日志&#xff0c;发现有异常报错&#xff1a; Thu Dec 12 22:15:23 …...

基于springboot的招聘系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的招聘系统,java项目。 e…...

国科大智能设备安全-APK逆向分析实验

APK逆向分析实验 使用APK常用逆向分析工具&#xff0c;对提供的移动应用程序APK文件进行逆向分析&#xff0c;提交逆向后代码和分析报告。具体任务如下&#xff1a; 任务一&#xff1a;安装并熟悉Apktool、Jadx等APK常用逆向工具的使用方法&#xff0c;对提供的Facebook Updat…...

使用SpaceDesk实现iPad成为电脑拓展屏(保姆级教程)

使用SpaceDesk实现iPad成为电脑拓展屏 在官网下载了最新的Windows和Android版本软件&#xff0c;时间&#xff1a;2024.10.23 22:36 https://lxhyouth.lanzouv.com/b0fov5nla 密码:lxhyouth SpaceDesk是一个开源的软件, 所以说对学生和平民用户非常的友好, 连接后的画质也非…...

Unity UI Button 事件优先级调整技术方案

Unity UI Button 事件优先级调整技术方案 在 Unity 项目开发过程中&#xff0c;针对 UI Button 的事件执行顺序控制是一个常见需求。本文详细阐述两种将新添加事件置于第一个执行位置的方法&#xff0c;旨在为开发者提供全面且专业的技术参考。 一、基于反射机制的事件插入方…...

算法训练营day1 | 704二分查找,27移除元素, 34, 35

已经找到工作&#xff0c;但希望再试试春招&#xff0c;距离春招还剩两个月&#xff0c;加油。 这两道题都刷过很多遍了&#xff0c;没什么好说的直接过。 704 本以为刷了很多次没想到还是做错了&#xff0c;有些小细节要注意。 这里是迭代式的&#xff0c;函数式的也不难。 …...

66 基于单片机的太阳能充电、温度检测、档位PWM调速系统

所有仿真详情导航&#xff1a; PROTEUS专栏说明-CSDN博客 目录 一、主要功能 二、硬件资源 三、主程序编程 四、资源下载 一、主要功能 基于52单片机&#xff0c;采用DS18B20温度传感器检测温度&#xff0c;采用滑动变阻器连接ADC0832数模转换器模拟电量&#xff0c;采用…...

RK3576 Android14,内存大于4G时UVC应用无法申请内存

最近有个项目需要将Linux虚拟成UVC摄像头&#xff0c;开发过程中遇到一个奇怪的事情&#xff0c;通过V4l2框架接口申请内存时&#xff0c;相同的板子&#xff0c;只是内存一个4G一个8G。4G的内存可以申请成功&#xff0c;8G就不行。提示“内存不足” 内存更大反而内存不足&…...

12.12 深度学习-卷积的注意力机制-通道注意力SENet

# 告诉模型训练的时候 对某个东西 给予额外的注意 额外的权重参数 分配注意力 # 不重要的就抑制 降低权重参数 比如有些项目颜色重要 有些是形状重要 # 通道注意力 一般都要比较多的通道加注意力 # SENet # 把上层的特征图 自动卷积为 1X1的通道数不变的特征图 然后给每一个…...

H5 scss 移动端的样式适配

在移动端样式的scss文件中&#xff0c;出现了这些变量 env() 与 constant() 设置安全区域&#xff0c;是css里IOS11新增的属性&#xff0c;webkit的css函数&#xff0c;用于设定安全区域与边界的距离&#xff0c;有4个预定义变量&#xff1a; safe-area-inset-left: 安全区域距…...

【JAVA】Java项目实战—移动端项目:天气查询APP

在移动互联网时代&#xff0c;天气查询应用程序&#xff08;APP&#xff09;是日常生活中不可或缺的一部分。无论是出门旅行、上班通勤&#xff0c;还是安排户外活动&#xff0c;获取实时天气信息都至关重要。Java作为一种强大且广泛使用的编程语言&#xff0c;特别适合用于开发…...

SpringBoot - 动态端口切换黑魔法

文章目录 关键技术点核心原理Code 关键技术点 利用 Spring Boot 内嵌 Servlet 容器 和 动态端口切换 的方式实现平滑更新的方案&#xff0c;关键技术点如下&#xff1a; Servlet 容器重新绑定端口&#xff1a;Spring Boot 使用 ServletWebServerFactory 动态设置新端口。零停…...

Java爬虫技术:挖掘淘宝数据的利器

在当今大数据时代&#xff0c;网络爬虫技术已经成为获取网络数据的重要手段。Java作为一种强大且灵活的编程语言&#xff0c;非常适合开发复杂的网络爬虫系统。本文将详细介绍Java爬虫能够爬取的淘宝数据类型&#xff0c;并提供具体的代码示例&#xff0c;帮助您快速入门并掌握…...

Chromium for Android 浏览器的编译和安装

Chromium for Android 浏览器的编译和安装 Chromium for Android 浏览器的编译和安装环境要求和配置Chromium for Android源码下载安装 depot_tools获取代码转换现有的Linux检出安装额外的构建依赖运行钩子 Chromium for Android源码编译设置编译环境 编译 ChromiumChromium fo…...

实景视频与模型叠加融合?

[视频GIS系列]无人机视频与与实景模型进行实时融合_无人机视频融合-CSDN博客文章浏览阅读1.5k次&#xff0c;点赞28次&#xff0c;收藏14次。将无人机视频与实景模型进行实时融合是一个涉及多个技术领域的复杂过程&#xff0c;主要包括无人机视频采集、实景模型构建、视频与模型…...

Scala的隐式类

package hfd //隐式类 //任务&#xff1a;给之前的BaseUser添加新的功能&#xff0c;但是不要直接去改代码 //思路&#xff1a;把BaseUser通过隐式转换&#xff0c;改成一个新类型&#xff0c;而这个新类型中有这新的方法 //implicit class一个隐式转换函数类 //作用&#xff1…...

常见软件设计模式介绍:三层架构、MVC、SSM、EDD、DDD

三层架构&#xff08;View Service Dao&#xff09; 三层架构是指&#xff1a;视图层 view&#xff08;表现层&#xff09;&#xff0c;服务层 service&#xff08;业务逻辑层&#xff09;&#xff0c;持久层 Dao&#xff08;数据访问层&#xff09; 表现层&#xff1a;直接跟前…...

Springboot技术栈常见问题及搭建步骤

一. SpringBoot介绍 1.1. 引言 为了使用SSM框架去开发, 准备SSM框架的模板配置 为了使Spring整合第三方框架, 单独的去编写xml文件 导致SSM项目后期xml文件特别多, 维护xml文件的成本是很高的 SSM工程部署也是很麻烦, 依赖第三方的容器 SSM开发方式很是笨重 1.2 SpringBoot …...

session 共享服务器

1.安装 kryo-3.0.3.jar asm-5.2.jar objenesis-2.6.jar reflectasm-1.11.9.jar minlog-1.3.1.jar kryo-serializers-0.45.jar msm-kryo-serializer-2.3.2.jar memcached-session-manager-tc9-2.3.2.jar spymemcached-2.12.3.jar memcached-session-manager-2.3.2.jar …...

vue2:v-for实现的el-radio-group选中时显示角标,并自定义选中按钮的字体颜色和背景色

项目中需要实现一组预定义查询,每一个查询按钮在选中时右上角显示一个角标,展示当前查询返回的数据条目。 1、text-color="#3785FF" fill="#E6EAF1" 处理选中时的字体颜色和背景色,如上图,分别为蓝色和浅灰色。 2、badge中:value="selectedRadio…...

【Linux】-学习笔记10

第八章、Linux下的火墙管理及优化 1.什么是防火墙 从功能角度来讲 防火墙是位于内部网和外部网之间的屏障&#xff0c;它按照系统管理员预先定义好的规则来控制数据包的进出 从功能实现角度来讲 火墙是系统内核上的一个模块netfilter(数据包过滤机制) …...

鸿蒙NEXT开发案例:九宫格随机

【引言】 在鸿蒙NEXT开发中&#xff0c;九宫格抽奖是一个常见且有趣的应用场景。通过九宫格抽奖&#xff0c;用户可以随机获得不同奖品&#xff0c;增加互动性和趣味性。本文将介绍如何使用鸿蒙开发框架实现九宫格抽奖功能&#xff0c;并通过代码解析展示实现细节。 【环境准…...

深度解析:RTC电路上的32.768KHz时钟的频偏及测试

1、什么是RTC RTC是Real-Time Clock&#xff08;实时时钟&#xff09;的缩写&#xff0c;通常在电子产品中&#xff0c;是用时钟电路&#xff08;外部采用时钟芯片&#xff0c;比如AiP8563&#xff09;或时钟模块(SOC内部包含了时钟模块&#xff0c;只需要外接32.768KHz晶振)来…...

Scala的泛型

需求:定义一个名为getMiddleEle 的方法用它来获取当前的列表的中间位置的值中间位置的下标 长度/2目标:getMiddleEle(List(1,2,3,4,5)) > 5/2 2 > 下标为2的元素是:3 getMiddleEle(List(1,2,3,4)) > 4/2 2 > 下标为2的元素是:3格式如下: 定义一个函数的格式:def…...