unity读取excel文件
时间: 2023-09-13 09:07:28 浏览: 37
Unity中可以使用C#的OpenXML库来读取Excel文件。以下是一个基本示例:
```csharp
using System.IO;
using System.Data;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
public class ExcelReader
{
public static DataTable ReadExcel(string filePath)
{
DataTable dataTable = new DataTable();
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(filePath, false))
{
WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
IEnumerable<Sheet> sheets = workbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>();
WorksheetPart worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheets.First().Id);
Worksheet worksheet = worksheetPart.Worksheet;
IEnumerable<Row> rows = worksheet.GetFirstChild<SheetData>().Elements<Row>();
foreach (Cell cell in rows.ElementAt(0))
{
dataTable.Columns.Add(GetCellValue(workbookPart, cell));
}
foreach (Row row in rows.Skip(1))
{
DataRow dataRow = dataTable.NewRow();
for (int i = 0; i < row.Descendants<Cell>().Count(); i++)
{
dataRow[i] = GetCellValue(workbookPart, row.Descendants<Cell>().ElementAt(i));
}
dataTable.Rows.Add(dataRow);
}
}
return dataTable;
}
private static string GetCellValue(WorkbookPart workbookPart, Cell cell)
{
string value = cell.InnerText;
if (cell.DataType != null && cell.DataType.Value == CellValues.SharedString)
{
return workbookPart.SharedStringTablePart.SharedStringTable.ChildElements[int.Parse(value)].InnerText;
}
return value;
}
}
```
使用示例:
```csharp
string filePath = "path/to/excel/file.xlsx";
DataTable dataTable = ExcelReader.ReadExcel(filePath);
// 遍历dataTable中的数据
foreach (DataRow row in dataTable.Rows)
{
foreach (var item in row.ItemArray)
{
Debug.Log(item.ToString());
}
}
```