当前位置: 首页 > 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}
http://www.lryc.cn/news/505043.html

相关文章:

  • 智能高效的IDE GoLand v2024.3全新发布——支持最新Go语言
  • OpenCV相机标定与3D重建(21)投影矩阵分解函数decomposeProjectionMatrix()的使用
  • Flink State面试题和参考答案-(下)
  • 111.【C语言】数据结构之二叉树的销毁函数
  • [论文阅读] |智能体长期记忆与反思
  • 【Trouble Shooting】Oracle ADG hung,出现ORA-04021
  • 基于springboot的招聘系统
  • 国科大智能设备安全-APK逆向分析实验
  • 使用SpaceDesk实现iPad成为电脑拓展屏(保姆级教程)
  • Unity UI Button 事件优先级调整技术方案
  • 算法训练营day1 | 704二分查找,27移除元素, 34, 35
  • 66 基于单片机的太阳能充电、温度检测、档位PWM调速系统
  • RK3576 Android14,内存大于4G时UVC应用无法申请内存
  • 12.12 深度学习-卷积的注意力机制-通道注意力SENet
  • H5 scss 移动端的样式适配
  • 【JAVA】Java项目实战—移动端项目:天气查询APP
  • SpringBoot - 动态端口切换黑魔法
  • Java爬虫技术:挖掘淘宝数据的利器
  • Chromium for Android 浏览器的编译和安装
  • 实景视频与模型叠加融合?
  • Scala的隐式类
  • 常见软件设计模式介绍:三层架构、MVC、SSM、EDD、DDD
  • Springboot技术栈常见问题及搭建步骤
  • session 共享服务器
  • vue2:v-for实现的el-radio-group选中时显示角标,并自定义选中按钮的字体颜色和背景色
  • 【Linux】-学习笔记10
  • 鸿蒙NEXT开发案例:九宫格随机
  • 深度解析:RTC电路上的32.768KHz时钟的频偏及测试
  • Scala的泛型
  • OpenGL ES详解——glUniform1i方法是否能用于设置纹理单元