.NET Maui中如何将Excel(.xlsx)文件转换为对象列表
.NET Maui中如何将Excel(.xlsx)文件转换为对象列表
嘿,我来帮你捋清楚接下来的步骤!你已经用FilePicker拿到了Excel文件,接下来核心就是用合适的工具解析Excel内容,再把数据映射成你需要的对象列表。我给你一步步拆解:
1. 安装Excel处理库
首先得装个能读取.xlsx的NuGet包,EPPlus是个靠谱的选择,对.NET Maui支持很好。你可以:
- 打开NuGet包管理器,搜索「EPPlus」并安装
- 或者用Package Manager Console执行命令:
Install-Package EPPlus
2. 定义你的实体类
先想好你要把Excel数据转换成什么对象,比如假设你要处理学生数据,先定义一个类:
public class Student { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string Grade { get; set; } }
3. 结合FilePicker解析Excel并映射列表
接下来把FilePicker的逻辑和Excel解析结合起来,完整代码大概是这样:
using OfficeOpenXml; using Microsoft.Maui.Storage; public async Task<List<Student>> ConvertExcelToStudentList() { var studentList = new List<Student>(); // 调用FilePicker选择Excel文件 var result = await FilePicker.PickAsync(new PickOptions { PickerTitle = "选择Excel文件", FileTypes = new FilePickerFileType(new Dictionary<DevicePlatform, IEnumerable<string>> { { DevicePlatform.Windows, new[] { ".xlsx" } }, { DevicePlatform.Android, new[] { "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" } }, { DevicePlatform.iOS, new[] { "com.microsoft.excel.xlsx" } } }) }); if (result != null) { // 打开文件流 using var stream = await result.OpenReadAsync(); // 初始化EPPlus(注意:商业用途要遵循EPPlus的许可证要求) ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // 如果是非商业使用 using var package = new ExcelPackage(stream); // 获取第一个工作表(你可以根据实际情况指定工作表名称) var worksheet = package.Workbook.Worksheets.First(); // 获取总行数和列数(跳过表头,假设表头在第一行) int rowCount = worksheet.Dimension.Rows; int colCount = worksheet.Dimension.Columns; // 从第二行开始遍历数据行 for (int row = 2; row <= rowCount; row++) { var student = new Student(); // 按列索引读取值,这里假设第1列是Id,第2列Name,第3列Age,第4列Grade student.Id = int.TryParse(worksheet.Cells[row, 1].Text, out int id) ? id : 0; student.Name = worksheet.Cells[row, 2].Text; student.Age = int.TryParse(worksheet.Cells[row, 3].Text, out int age) ? age : 0; student.Grade = worksheet.Cells[row, 4].Text; studentList.Add(student); } } return studentList; }
一些注意事项
- 许可证问题:EPPlus在非商业场景下可以免费使用,如果是商业项目,需要购买对应的许可证,或者你也可以选择其他开源库比如NPOI(支持.xls和.xlsx)
- 数据类型转换:实际处理时要根据Excel里的单元格类型做合适的转换,避免出现格式错误
- 表头处理:如果你的Excel表头不是第一行,记得调整循环的起始行;如果表头和实体类属性名对应,还可以用反射来自动映射,减少硬编码
这样你就能把Excel里的数据转换成对象列表啦,是不是清晰多了?
备注:内容来源于stack exchange,提问作者yorick
相关产品推荐
相关产品推荐

