باز کردن فایل های اکسل به صورت برنامه نویسی در برنامه های C# یک نیاز رایج است، اما بسیاری از توسعه دهندگان با محدودیت های رویکردهای سنتی دست و پنجه نرم می کنند. در این راهنما، ما به شما نشان خواهیم داد که چگونه می‌توانید فایل‌های اکسل را در سی شارپ ** با استفاده از Openize.OpenXML SDK باز کنید - یک کتابخانه رایگان و منبع باز که نیازی به نصب Microsoft Excel ندارد.

نحوه باز کردن فایل های اکسل در سی شارپ بدون نصب اکسل

مشکل با روش های سنتی

اکثر توسعه دهندگان با «Microsoft.Office.Interop.Excel» شروع می کنند، اما این رویکرد دارای محدودیت های جدی است:

  • ❌ به نصب اکسل روی هر ماشینی نیاز دارد
  • ❌ عملکرد ضعیف و نشت حافظه
  • ❌ برای برنامه های کاربردی سرور مناسب نیست
  • ❌ مسائل Threading در برنامه های کاربردی وب
  • ❌ هزینه های گران مجوز

راه حل: Openize.OpenXML SDK

Openize.OpenXML SDK این مشکلات را حل می کند:

  • بدون نیاز به نصب اکسل
  • ✅ کارایی بالا و ایمن در برابر نخ
  • ✅ مناسب برای برنامه های کاربردی وب و سرورها
  • ✅ متن باز و کاملا رایگان
  • ✅ API ساده و شهودی

نصب

Openize.OpenXML SDK را به پروژه خود اضافه کنید:

<PackageReference Include="DocumentFormat.OpenXml" Version="3.2.0" />

مثال اصلی: باز کردن و خواندن فایل اکسل

using Openize.Cells;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        try
        {
            // Open existing Excel file
            using (var workbook = new Workbook("sample.xlsx"))
            {
                // Get the first worksheet
                var worksheet = workbook.Worksheets[0];
                
                Console.WriteLine($"Worksheet Name: {worksheet.Name}");
                Console.WriteLine($"Total Rows: {worksheet.GetRowCount()}");
                Console.WriteLine($"Total Columns: {worksheet.GetColumnCount()}");
                
                // Read specific cell values
                string cellA1 = worksheet.Cells["A1"].GetValue();
                string cellB1 = worksheet.Cells["B1"].GetValue();
                
                Console.WriteLine($"Cell A1: {cellA1}");
                Console.WriteLine($"Cell B1: {cellB1}");
            }
        }
        catch (FileNotFoundException)
        {
            Console.WriteLine("Excel file not found!");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}

قبل از باز کردن، بررسی کنید که آیا فایل اکسل وجود دارد یا خیر

using Openize.Cells;
using System.IO;

public class ExcelFileHandler
{
    public static void OpenExcelSafely(string filePath)
    {
        // Check if file exists
        if (!File.Exists(filePath))
        {
            Console.WriteLine($"File not found: {filePath}");
            return;
        }
        
        try
        {
            using (var workbook = new Workbook(filePath))
            {
                var worksheet = workbook.Worksheets[0];
                Console.WriteLine($"Successfully opened: {filePath}");
                Console.WriteLine($"First cell value: {worksheet.Cells["A1"].GetValue()}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Failed to open Excel file: {ex.Message}");
        }
    }
}

کاربرگ های متعدد را بخوانید

using Openize.Cells;

public class MultiSheetReader
{
    public static void ReadAllWorksheets(string filePath)
    {
        using (var workbook = new Workbook(filePath))
        {
            Console.WriteLine($"Total worksheets: {workbook.Worksheets.Count}");
            
            foreach (var worksheet in workbook.Worksheets)
            {
                Console.WriteLine($"\nWorksheet: {worksheet.Name}");
                Console.WriteLine($"Rows: {worksheet.GetRowCount()}");
                Console.WriteLine($"Columns: {worksheet.GetColumnCount()}");
                
                // Read first few cells
                for (int row = 1; row <= 3; row++)
                {
                    for (int col = 1; col <= 3; col++)
                    {
                        string cellRef = GetCellReference(row, col);
                        string value = worksheet.Cells[cellRef].GetValue();
                        Console.Write($"{value}\t");
                    }
                    Console.WriteLine();
                }
            }
        }
    }
    
    static string GetCellReference(int row, int col)
    {
        return $"{GetColumnLetter(col)}{row}";
    }
    
    static string GetColumnLetter(int columnNumber)
    {
        string columnLetter = string.Empty;
        while (columnNumber > 0)
        {
            columnNumber--;
            columnLetter = (char)('A' + columnNumber % 26) + columnLetter;
            columnNumber /= 26;
        }
        return columnLetter;
    }
}

نتیجه گیری

Openize.OpenXML SDK روشی قابل اعتماد و کارآمد برای باز کردن فایل های اکسل در سی شارپ بدون پیچیدگی های Excel Interop ارائه می دهد. این برای برنامه های دسکتاپ، خدمات وب و پردازش سمت سرور عالی است. مزایای کلیدی:

  • بدون نیاز به نصب اکسل
  • عملکرد بالا
  • ایمن برای برنامه های وب
  • متن باز و رایگان
  • آسان برای استفاده از API آن را در پروژه بعدی خود امتحان کنید و تفاوت را تجربه کنید!