Код IT
← Каталог

Excel парсер на CSharp — Парсер с маппингом

Фрагмент из «Excel парсер на CSharp»: Парсер с маппингом.

C# main.cs
using Система;
using Система.Collections.Generic;
using Система.Globalization;
using ClosedXML.Excel;

public static class TypedExcelParser
{
    public static List<Employee> ParseEmployees(string filePath)
    {
        var employees = new List<Employee>();

        using var workbook = new XLWorkbook(filePath);
        var worksheet = workbook.Worksheet(1);
        var rows = worksheet.RangeUsedRowsUsed();

        // Пропускаем первую строку (заголовки)
        bool firstRow = true;
        foreach (var row in rows)
        {
            if (firstRow)
            {
                firstRow = false;
                continue;
            }

            var cells = row.CellsToList();
            if (cells.Count < 4) continue; // Защита от неполных строк

            var emp = new Employee
            {
                FullName = cells[0].Value?.ToString() ?? "",
                Department = cells[1].Value?.ToString() ?? ""
            };

            // Парсинг числа
            if (int.TryParse(cells[2].Value?.ToString out int salary))
                emp.Salary = salary;

            // Парсинг даты
            if (DateTime.TryParse(cells[3].Value?.ToString out DateTime hireDate))
                emp.HireDate = hireDate;

            employees.Add(emp);
        }

        return employees;
    }
}

// Использование
class Program
{
    static void Main()
    {
        var employees = TypedExcelParser.ParseEmployees("employees.xlsx");
        foreach (var emp in employees)
        {
            Console.WriteLine($"{emp.FullName}, {emp.Department}, {emp.Salary} руб., принят: {emp.HireDate:yyyy-MM-dd}");
        }
    }
}
using Система;
using Система.Collections.Generic;
using Система.Globalization;
using ClosedXML.Excel;

public static class TypedExcelParser
{
    public static List<Employee> ParseEmployees(string filePath)
    {
        var employees = new List<Employee>();

        using var workbook = new XLWorkbook(filePath);
        var worksheet = workbook.Worksheet(1);
        var rows = worksheet.RangeUsedRowsUsed();

        // Пропускаем первую строку (заголовки)
        bool firstRow = true;
        foreach (var row in rows)
        {
            if (firstRow)
            {
                firstRow = false;
                continue;
            }

            var cells = row.CellsToList();
            if (cells.Count < 4) continue; // Защита от неполных строк

            var emp = new Employee
            {
                FullName = cells[0].Value?.ToString() ?? "",
                Department = cells[1].Value?.ToString() ?? ""
            };

            // Парсинг числа
            if (int.TryParse(cells[2].Value?.ToString out int salary))
                emp.Salary = salary;

            // Парсинг даты
            if (DateTime.TryParse(cells[3].Value?.ToString out DateTime hireDate))
                emp.HireDate = hireDate;

            employees.Add(emp);
        }

        return employees;
    }
}

// Использование
class Program
{
    static void Main()
    {
        var employees = TypedExcelParser.ParseEmployees("employees.xlsx");
        foreach (var emp in employees)
        {
            Console.WriteLine($"{emp.FullName}, {emp.Department}, {emp.Salary} руб., принят: {emp.HireDate:yyyy-MM-dd}");
        }
    }
}