112 lines
3.5 KiB
C#
112 lines
3.5 KiB
C#
using UnityEngine;
|
|
using System.IO;
|
|
using OfficeOpenXml;
|
|
using System.Collections.Generic;
|
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
|
|
using System;
|
|
|
|
public class ExcelReader : MonoBehaviour
|
|
{
|
|
public List<WorkData> workDatas = new List<WorkData>();
|
|
private void Awake()
|
|
{
|
|
|
|
}
|
|
void Start()
|
|
{
|
|
//string filePath = Path.Combine(Application.streamingAssetsPath, "数据表.xlsx");
|
|
//ReadExcelFile(filePath, "低压公配变");
|
|
//for (int i = 0; i < workDatas.Count; i++)
|
|
//{
|
|
// if (workDatas[i].Tip.Contains("工单详情"))
|
|
// {
|
|
// for (int j = 0; j < workDatas[i].workOrderDatas.Count; j++)
|
|
// {
|
|
// Debug.LogError(workDatas[i].workOrderDatas[j].workOrderNumTip + " " + workDatas[i].workOrderDatas[j].workOrderNum);
|
|
// }
|
|
// }
|
|
//}
|
|
}
|
|
|
|
public void ReadExcelFile(string filePath, string name)
|
|
{
|
|
// 加载文件
|
|
FileInfo file = new FileInfo(filePath);
|
|
|
|
// 检查文件是否存在
|
|
if (!file.Exists)
|
|
{
|
|
Debug.LogError("文件不存在: " + filePath);
|
|
return;
|
|
}
|
|
|
|
// 读取文件
|
|
using (ExcelPackage package = new ExcelPackage(file))
|
|
{
|
|
ExcelWorksheet worksheet = package.Workbook.Worksheets[name]; // 假设只有一个工作表
|
|
|
|
// 获取表格有多少列和行
|
|
int columns = worksheet.Dimension.Columns;
|
|
int rows = worksheet.Dimension.Rows;
|
|
//Debug.Log("共有:" + columns + "列 " + rows + "行");
|
|
|
|
// 从第二行开始读取数据(假设第一行是表头)
|
|
for (int row = 1; row <= 20; row++)
|
|
{
|
|
for (int col = 1; col <= columns; col++)
|
|
{
|
|
// 获取单元格的值
|
|
string cellValue = worksheet.Cells[row, col].Value?.ToString();
|
|
if (!string.IsNullOrEmpty(cellValue))
|
|
{
|
|
////Debug.Log("第" + row + "行,第" + col + "列的值为:" + cellValue);
|
|
if (cellValue.Contains("&"))
|
|
{
|
|
AddExcelPackage(worksheet, row, col, columns);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public void AddExcelPackage(ExcelWorksheet worksheet, int row, int col, int colMax)
|
|
{
|
|
|
|
WorkData workData = new WorkData();
|
|
workData.Tip = worksheet.Cells[row, col].Value?.ToString();
|
|
List<WorkOrderData> workOrderDatas = new List<WorkOrderData>();
|
|
for (int i = col; i < colMax; i++)
|
|
{
|
|
if (worksheet.Cells[row + 1, i].Value?.ToString() != "*")
|
|
{
|
|
WorkOrderData workOrderData = new WorkOrderData();
|
|
workOrderData.workOrderNumTip = worksheet.Cells[row + 1, i].Value?.ToString();
|
|
workOrderData.workOrderNum = worksheet.Cells[row + 2, i].Value?.ToString();
|
|
if (!string.IsNullOrEmpty(workOrderData.workOrderNumTip) || !string.IsNullOrEmpty(workOrderData.workOrderNum))
|
|
{
|
|
workOrderDatas.Add(workOrderData);
|
|
}
|
|
}
|
|
}
|
|
workData.workOrderDatas = workOrderDatas;
|
|
workDatas.Add(workData);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 工单详情,第二行和第三行的所有数据
|
|
/// </summary>
|
|
[Serializable]
|
|
public class WorkOrderData
|
|
{
|
|
public string workOrderNumTip;
|
|
public string workOrderNum;
|
|
}
|
|
[Serializable]
|
|
public class WorkData
|
|
{
|
|
public string Tip;
|
|
public List<WorkOrderData> workOrderDatas;
|
|
} |