前言
这篇文章实现的是根据一个Excel模板让软件自动导出表格。
本次使用EPPlus.dll这个动态链接库,这个库中有OfficeOpenXml类库,使用其中函数即可实现从Unity3D中调用Excel。
代码部分
using OfficeOpenXml;//添加这两个类库
using OfficeOpenXml.Style;
public void Set_Up_Report(DateTime dt, DateTime dt1)
{
//输出的文件名称
string Time = dt.GetDateTimeFormats('s')[0].ToString() + "至" + dt1.GetDateTimeFormats('s')[0].ToString();//导出区间的时间段定义
Two_Path = "D:/E_Report" + "/" + Char_ + Regex.Replace(Regex.Replace(Time, @"\s", ""), ":", "-") + ".xlsx";//这个定义保存地址
FileInfo fileInfo = new FileInfo(Eg_Two_Path);//对模板地址初始化
FileInfo fileInfo_1 = new FileInfo(Two_Path);//对保存地址初始化
try
{
using (ExcelPackage excelPackage_Eg = new ExcelPackage(fileInfo))//打开Excel模板文件
{
excelPackage_Eg.SaveAs(fileInfo_1);//另存为
using (ExcelPackage excelPackage = new ExcelPackage(fileInfo_1))//在打开模板文件的同时打开保存地址的文件
{
ExcelWorksheet worksheet = excelPackage_Eg.Workbook.Worksheets["sheet1"];
//这里对Excel表格中打开一个新表,在以上的初始化是一个空白的表格文件所以需要添加一个新表
worksheet.Cells[2, 9].Value = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
worksheet.Cells[3, 3].Value = dt.GetDateTimeFormats('F')[0].ToString();
worksheet.Cells[3, 8].Value = dt1.GetDateTimeFormats('F')[0].ToString();
//以上时添入数值的例子,worksheet.Cells[i, j].Value(其中i为行,j为列)。
worksheet.Protection.IsProtected = true;//设置是否进行锁定
worksheet.Protection.SetPassword(Excel_Password.text);//设置密码
worksheet.Protection.AllowAutoFilter = false;//下面是一些锁定时权限的设置
worksheet.Protection.AllowDeleteColumns = false;
worksheet.Protection.AllowDeleteRows = false;
worksheet.Protection.AllowEditScenarios = false;
worksheet.Protection.AllowEditObject = false;
worksheet.Protection.AllowFormatCells = false;
worksheet.Protection.AllowFormatColumns = false;
worksheet.Protection.AllowFormatRows = false;
worksheet.Protection.AllowInsertColumns = false;
worksheet.Protection.AllowInsertHyperlinks = false;
worksheet.Protection.AllowInsertRows = false;
worksheet.Protection.AllowPivotTables = false;
worksheet.Protection.AllowSelectLockedCells = false;
worksheet.Protection.AllowSelectUnlockedCells = false;
worksheet.Protection.AllowSort = false;
excelPackage.Save();//注意要先保存导出文件
}//关闭Excel文件
excelPackage_Eg.Save();//最后保存模板文件
}//关闭Excel_Eg文件
Debug.Log("已导出");
}
catch(Exception ex)
{
Debug.Log(ex);
}
}
结论
本文例举了几个简单的EPPlus库中函数,希望对刚学的朋友们有帮助。
如果在使用EPPlus的时候遇到错误可参照关于UNITY中System.Drawing引用失败的处理方法中。