Unity 在运行的时候读取用户配置信息,在应用内导出需要保存的信息到Excel 表格
1、导入Excel 读取插件
2、导入打开Windows文件以及文件夹工具(之前有写过)
3、使用方法
1)、新建脚本,并定义参数
public Button saveBtn;
public Button readBtn;
private Action<string> readAction;
private Action<string> saveAction;
public Text des;
2)、事件的绑定
private void Start()
{
saveBtn.onClick.AddListener(OpenFolder);
readBtn.onClick.AddListener(OpenFile);
saveAction += SaveFile;
readAction += GetFile;
}
3)、功能的实现
public void OpenFile()
{
Mark.OpenDialogHelper.SelectFile(readAction, "Excel文件(*.xlsx*)\0*.xlsx*"); // FBX文件(*.fbx)\0*.fbx\0
}
public void OpenFolder()
{
Mark.OpenDialogHelper.SelectFolder(saveAction);
}
private void GetFile(string filePath)
{
Debug.Log(filePath);
Read(filePath);
}
private void SaveFile(string filePath)
{
Debug.Log(filePath);
Create(filePath);
}
private void Create(string path)
{
if (Directory.Exists(path))
{
string ph = path + "/" + "Tex2.xlsx";
FileInfo newFile = new FileInfo(ph);
if (newFile.Exists)
{
newFile.Delete();
newFile = new FileInfo(ph);
}
using (ExcelPackage package = new ExcelPackage(newFile))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("ModelInfo");//创建worksheet
CreateTitle(worksheet);
CreateContent(worksheet);
package.Save();
}
}
}
private void Read(string path)
{
StringBuilder sb = new StringBuilder();
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
sb.Clear();
using (ExcelPackage ep = new ExcelPackage(fs))
{
//获取所有的表 E:\Test\Text.xlsx
StringBuilder sb1 = new StringBuilder();
ExcelWorksheets worksheets = ep.Workbook.Worksheets;
for (int i = 1; i <= worksheets.Count; i++)
{
//当前工作表
ExcelWorksheet sheet = worksheets[i];
//当前工作表 有多少 列
int columCount = sheet.Dimension.End.Column;
//当前工作表 有多少 行
int rowCount = sheet.Dimension.End.Row;
//从第几行\第几列开始读数据 ,视具体情况决定
int startRow = 2;
int startColum = 1;
for (int j = startRow; j <= rowCount; j++)
{
sb1.Clear();
for (int k = startColum; k <= columCount; k++)
{
if (!string.IsNullOrEmpty(sheet.Cells[j, k].Text))
{
sb1.Append(sheet.Cells[j, k].Text+" ");
}
}
string str = $"当前Excel表的第{i}张表格读取:第 {j} 行数据 :{sb1.ToString()}\n";
sb.Append(str);
}
}
}
des.text = sb.ToString();
}
}
private void CreateTitle(ExcelWorksheet worksheet)
{
worksheet.Cells[1, 1].Value = "序号";
worksheet.Cells[1, 2].Value = "名称";
worksheet.Cells[1, 3].Value = "数量";
worksheet.Cells[1, 4].Value = "单位";
worksheet.Cells[1, 5].Value = "单价";
worksheet.Cells[1, 6].Value = "合价";
worksheet.Cells[1, 7].Value = "备注";
}
private void CreateContent(ExcelWorksheet worksheet)
{
for (int i = 2; i <= 5; i++)
{
for (int j = 1; j <= 5; j++)
{
worksheet.Cells[i, j].Value = i * j;
}
}
}