Unity3D操作数据之Excel表操作(创建、读取、写入、修改)
叨唠两句:
首先使用Excel需要导入插件,其次在程序运行期间不要打开对应的Excel文件
其次相对于一些程序使用Excel比使用数据库更具有优势
读取主要使用Epplus插件,后续会推出关于Epplus的API讲解
一、前言
读取Excel文件,需要导入一些dll文件,才能进行操作Excel数据:
如果打包发布还需要导入以下dll文件,否则打包后不能操作Excel
在(unity安装目录)C:Program FilesUnityEditorDataMonolibmonounity中可以找到
二、创建Excel文件
- 首先,将需要用到的dll文件全部导入到项目的Plugins(必须此目录)文件夹目录下:
- 添加引用:
- using OfficeOpenXml;
- using System.IO;
- using Excel;
- using System.Data;
- 代码:
public void CreatExcel()
{
//文件地址
FileInfo newFile = new FileInfo(Application.dataPath +"/test.xlsx");
//如果文件存在删除重建
if (newFile.Exists)
{
newFile.Delete();
newFile = new FileInfo(Application.dataPath + "/test.xlsx");
}
//数据操作
using (ExcelPackage package = new ExcelPackage(newFile))
{
//初次创建增加数据操作(重点在于这条操作语句不同)
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("test");
//添加对应列名
worksheet.Cells[1, 1].Value = "列名1";
worksheet.Cells[1, 2].Value = "列名2";
worksheet.Cells[1, 3].Value = "列名3";
//保存
package.Save();
}
}
- 如果只想创建文件不写入表头,数据操作步骤可以省略
- 运行结果
三、写入数据
- 添加数据
public void WriteExcel()
{
//文件地址
FileInfo newFile = new FileInfo(Application.dataPath + "/test.xlsx");
//数据操作
using (ExcelPackage package = new ExcelPackage(newFile))
{
//增加数据操作(重点在于这条操作语句与初次创建添加数据不同)
ExcelWorksheet worksheet = package.Workbook.Worksheets["test"];
//添加第二行数据
worksheet.Cells[2, 1].Value = "名称1";
worksheet.Cells[2, 2].Value = "价格1";
worksheet.Cells[2, 3].Value = "销量1";
//添加第三行数据
worksheet.Cells[3, 1].Value = "名称2";
worksheet.Cells[3, 2].Value = "价格2";
worksheet.Cells[4, 3].Value = "销量2";
//保存
package.Save();
}
}
运行结果:
- 修改、删除数据
public void ChangeExcel()
{
//文件地址
FileInfo newFile = new FileInfo(Application.dataPath + "/test.xlsx");
//数据操作
using (ExcelPackage package = new ExcelPackage(newFile))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets["test"];
//追加
worksheet.Cells[4, 1].Value = "名称3";
worksheet.Cells[4, 2].Value = "价格3";
worksheet.Cells[4, 3].Value = "销量3";
//删除某一列(参数:列的序号)
worksheet.DeleteColumn(1);
//删除某一行(参数:行的序号)
worksheet.DeleteRow(1);
//修改(和添加一样)
worksheet.Cells[4, 1].Value = "修改名称";
worksheet.Cells[4, 2].Value = "修改价格";
worksheet.Cells[4, 3].Value = "修改销量";
//保存
package.Save();
}
}
四、读取文件
public void Reading()
{
//加载文件
FileStream fileStream = File.Open(Application.dataPath + "/test.xlsx", FileMode.Open, FileAccess.Read);
IExcelDataReader excelDataReader = ExcelReaderFactory.CreateOpenXmlReader(fileStream);
DataSet result = excelDataReader.AsDataSet();
// 获取表格有多少列
int columns = result.Tables[0].Columns.Count;
// 获取表格有多少行
int rows = result.Tables[0].Rows.Count;
Debug.Log("共有:" + columns + "列 " + rows + "行");
//第一行为表头,不读取。没有表头从0开始(获取数据)
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
// 获取表格中指定行指定列的数据
string value = result.Tables[0].Rows[i][j].ToString();
Debug.Log(value);
}
}
fileStream.Close();
}
读取结果:
后言
- 写入数据在第一行开始,读取数据在第0行开始
- 遇到的问题欢迎在评论区打出,小编看到会在第一时间回复大家:
- 工程文件地址:
- CSDN:https://download.csdn.net/download/Xz616/87419887