当前位置: 首页 > 工具软件 > EPPlus > 使用案例 >

Unity读写Excel文件 —— EPPlus

葛兴发
2023-12-01

Excel


概述:

EPPlus是一个使用Open Office XML(xlsx)文件格式,能够读写Excel 2017/2010文件的开源组件,在导出Excel时无需安装Office

官网:http://epplus.codeplex.com/

需要使用Epplus的DLL文件,其缺点是不支持导出2013版的Excel

​ 【原因】.xlsx是Office2007使用的,用新的基于XML的压缩文件格式取代了其目前专用的默认格式,在传统的文件扩展名后面添加了字母x(即:.docx取代了.doc,.xlsx取代了.xls)使其占用空间小,.xls文件是所有的Office程序都能够打开的,但是.xlsx只有Office2007或是更新版本才能打开

解决Unity打包问题(仅在Unity工程中报错):

在进行打包的时候会进行报错。

原因:EPPlus是依赖于.NET 2.0的,也就是说只有在.NET 2.0环境下Unity才能够正常使用EPPlus,Unity默认是使用的为.NET 2.0 Subset(Player Setting / Api Commpatibility Level)

.NET 2.0与.NET 2.0 Subset的区别:.NET 2.0 Subset仅有.NET 2.0的部分内容,使用.NET 2.0 Subset打出来的包会更小

解决:将Player Setting / Api Commpatibility Level更改为 .NET 2.0

获取EPPlus.dll文件:

在VS中创建一个“控制台应用程序”,在解决方案中点击引用,“右键 / 管理NuGet程序包 / 浏览 / EPPlus”

推荐安装4.5.3版本

读取Excel:

引入命名空间:using OfficeOpenXml;

创建ExcelPackage对象:ExcelPackage excelPackage = new ExcelPackage();

​ 构造函数:public ExcelPackage(FileInfo fileInfo); ----> 通过Excel表格的文件信息,打开Excel文件

ExcelPackage用来与一个Excel建立连接的,简单的认为这个对象可以打开一个Excel文件

​ 【注】这一句代码需要放在using语句中,为了能够在读完Excel文件之后能够将资源进行释放

​ 【注】文件找不到的即不会报错,也不会进行创建

获取Excel文件中的表: Worksheet worksheet = excelPackage.Workbook.Worksheets[表的索引];

​ 【注】通过Workbook.Worksheets就能够得到Excel文件中的所有表,这里表的索引是从1开始的

​ 【原因】一个Excel文件中能够存放多个Excel表

获取指定的单元格:worksheet.Cells[行,列].Value.ToString();

​ 【注】worksheet.Cells中存储了指定表中所有的单元格,通过在索引器中填入指定的行,列则就能够取到对应的单元格,这里的索引是从1开始的,.Value表示取出单元格中的值,但是返回的是Object类型

private void ReadExcel()
{
  FileInfo fileInfo = new FileInfo(@"C:\Users\Administrator\Desktop\Test\Test.xlsx");
  using(ExcelPackage excelPackage = new ExcelPackage(fileInfo))
  {
    Worksheet wordsheet = excelPackage.Workbook.WorkSheets[1];
    string value = worksheet.Cells[1,1].Value.ToString();
    Debug.LogError(value);
  }
}

写入数据:

引入命名空间:using OfficeOpenXml;

创建ExcelPackage对象:ExcelPackage excelPackage = new ExcelPackage(FileInfo类型);

获取Excel文件中的表: Workheet worksheet = excelPackage.Workbook.Worksheets[表的索引];

获取指定的单元格:worksheet.Cells[行,列].Value = 数据;

保存表格:excelPackage.Save()

private void ReadExcel()
{
  FileInfo fileInfo = new FileInfo(@"C:\Users\Administrator\Desktop\Test\Test.xlsx");
  using(ExcelPackage excelPackage = new ExcelPackage(fileInfo))
  {
    Worksheet worksheet = excelPackage.Workbook.WorkSheets[1];
    worksheet.Cells[1,1].Value = "Hello World";
    excelPackage.Save();
  }
}

创建表 / 删除表:

创建表:ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("表名");

​ 表示打开的这个Excel文件若存在,就会向这个文件中添加一张表

​ 若Excel文件不存在,则会先去创建一个Excel文件,然后帮这个Excel文件添加一张表

​ 【注】记得最好需要保存这个文件excelPackage.Save();

删除表:ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Delete("表名");

private void OperationExcel()
{
  FileInfo fileInfo = new FileInfo(@"C:\Users\Administrator\Desktop\Test\Test.xlsx");
  using(ExcelPackage excelPackage = new ExcelPackage(fileInfo))
  {
    //添加表
    ExcelWorksheet worksheet = excelPackage.Workbook.WorkSheets.Add("This is first sheet");
    ExcelWorksheet worksheet = excelPackage.Workbook.WorkSheets.Add("This is second sheet");
    //删除表
    ExcelWorksheet worksheet = excelPackage.Workbook.WorkSheets.Delete("This is first sheet");
    
    excelPackage.Save();
  }
}
 类似资料: