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或是更新版本才能打开
在进行打包的时候会进行报错。
原因: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
在VS中创建一个“控制台应用程序”,在解决方案中点击引用,“右键 / 管理NuGet程序包 / 浏览 / EPPlus”
推荐安装4.5.3版本
引入命名空间: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();
}
}