Sylvan.Data.Excel是一个开源、免费、跨平台的.NET库,专注于读取和写入Excel数据文件。支持多种文件格式,并提供高效的数据访问和数据绑定功能。
该库在.NET生态系统中是读取Excel数据文件的最快且内存分配最低的库之一。
可以通过NuGet包管理器安装Sylvan.Data.Excel库,使用命令Install-Package Sylvan.Data.Excel。
读取原始数据 using Sylvan.Data.Excel;// ExcelDataReader derives from System.Data.DbDataReader// The Create method can open .xls, .xlsx or .xlsb files.using ExcelDataReader edr = ExcelDataReader.Create("data.xls");do { var sheetName = edr.WorksheetName; // enumerate rows in current sheet.while(edr.Read()) { // iterate cells in row. // can use edr.RowFieldCount when sheet contains jagged, non-rectangular datafor(int i = 0; i < edr.FieldCount; i++) { var value = edr.GetString(i); } // Can use other strongly-typed accessors // bool flag = edr.GetBoolean(0); // DateTime date = edr.GetDateTime(1); // decimal amt = edr.GetDecimal(2); } // iterates sheets} while(edr.NextResult()); 将Excel数据绑定到对象 using Sylvan.Data;using Sylvan.Data.Excel;using var edr = ExcelDataReader.Create("data.xlsx");foreach (MyRecord item in edr.GetRecords<MyRecord>()){ Console.WriteLine($"{item.Name} {item.Quantity}");}class MyRecord{ public int Id { get; set; } public string Name { get; set; } public int? Quantity { get; set; } public DateTime Date { get; set; }} Excel数据转换为CSV using Sylvan.Data.Excel;using Sylvan.Data.Csv;using var edr = ExcelDataReader.Create("data.xlsx");do { var sheetName = edr.WorksheetName; using CsvDataWriter cdw = CsvDataWriter.Create("data-" + sheetName + ".csv") cdw.Write(edr);} while(edr.NextResult()); 数据写入ExcelDataWriter 类型用于创建 Excel 工作簿并将 DbDataReader 数据写入工作表。
// *critical* to dispose (using) ExcelDataWriter.using var edw = ExcelDataWriter.Create("data.xlsx");DbDataReader dr;dr = GetQueryResults("UserReport");edw.Write(dr, "UserReport");dr = GetQueryResults("SecurityAudit");edw.Write(dr, "SecurityAudit"); 开源地址https://github.com/MarkPflug/Sylvan.Data.Excel