Unity读取、新建Excel表格

news/2024/12/20 21:30:43/

把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 ;//获取到excelvar 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}

http://www.ppmy.cn/news/1556738.html

相关文章

MySQL基础笔记(二)

在此特别感谢尚硅谷-康师傅的MySQL精品教程 获取更好的阅读体验请前往我的博客主站! 如果本文对你的学习有帮助&#xff0c;请多多点赞、评论、收藏&#xff0c;你们的反馈是我更新最大的动力&#xff01; 多表查询 多表查询&#xff0c;也称为关联查询&#xff0c;指两个或更…

Yolov8源码分析

1、目录介绍 主要目录ultralitics&#xff08;重点&#xff09; 1、assets目录 这个文件保存了YOLO历史上可以说是最经典的两张图片&#xff0c;供大家测试程序来使用的。 2、cfg 这个文件下面保存了我们的模型配置文件&#xff0c;cfg目录是项目配置的集中地&#xff0c;其…

有关异步场景的 10 大 Spring Boot 面试问题

本文将探讨与 Spring Boot 中的异步场景相关的十大面试问题。这些问题涵盖了广泛的主题&#xff0c;从基本的注释和配置到高级概念&#xff0c;例如使用 Spring WebFlux 进行反应式编程。在本文结束时&#xff0c;您将对如何利用 Spring Boot 中的异步编程来构建强大而高效的应…

C语言(指针练习2)

编写函数,要求用指针做形参&#xff0c;分别实现以下功能&#xff1a; &#xff08;1&#xff09;求一个字符串长度 &#xff08;2&#xff09;在一个字符 串中统计大写字母的个数 &#xff08;3&#xff09;在一个字符串中统计数字字符的个数 #include <stdio.h>int str…

springboot449教学资源共享平台(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统教学资源共享平台信息管理难度大&#xff0c;容错率低&am…

基于ubuntu的mysql 8.0安装教程

文章目录 1.查看版本2.切换到root账户3.下载安装包4.问题的解决5.查看是否解压成功6.安装我们的发布包7.更新包的内容8.下载mysql9.查看mysql的状态10.设置开机自启动11.登录mysql 公司里面的mysql根本不会出现在windows操作系统上面&#xff0c;下面我们演示的就是如何在ubunt…

数据挖掘与机器学习(part 9) 规则挖掘Rules Mining关联规则(Association Rules) Apriori算法

基于规则的分类器&#xff1a;Classification using rule based classifier 互斥规则&#xff08;Mutually exclusive rules&#xff09;&#xff1a; 分类器包含互斥规则&#xff0c;如果这些规则彼此独立。 每条记录最多被一条规则覆盖。 穷尽规则&#xff08;Exhaustive …

D99【python 接口自动化学习】- pytest进阶之fixture用法

day99 pytest使用conftest管理fixture 学习日期&#xff1a;20241216 学习目标&#xff1a;pytest基础用法 -- pytest使用conftest管理fixture 学习笔记&#xff1a; fixture(scope"function") conftest.py为固定写法&#xff0c;不可修改名字&#xff0c;使用c…