把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}