کتابخانه منبع باز C برای خواندن فایل‌های Excel XLS

یک کتابخانه منبع باز، سبک و سریع C برای بارگذاری، خواندن و استخراج داده‌ها از فایل‌های Excel XLS بدون نیاز به Microsoft Excel.

libxls چیست؟

کار با فایل‌های Microsoft Excel یک نیاز رایج در بسیاری از برنامه‌های نرم‌افزاری است. در حالی که صفحات گسترده مدرن از فرمت XLSX استفاده می‌کنند، تعداد زیادی از سازمان‌ها هنوز به فایل‌های قدیمی XLS وابسته هستند. خواندن و استخراج داده‌ها از این فایل‌ها می‌تواند چالش‌برانگیز باشد زیرا فرمت باینری XLS مالکیتی و پیچیده است. libxls یک کتابخانه منبع باز C است که به‌طور خاص برای ساده‌سازی این کار طراحی شده است. این کتابخانه راه‌حلی سریع و سبک برای خواندن فایل‌های Excel 97–2003 XLS فراهم می‌کند بدون اینکه نیاز به Microsoft Excel یا هر مؤلفه خارجی Office داشته باشد.

libxls یک کتابخانه قابل حمل C است که به توسعه‌دهندگان امکان می‌دهد اطلاعات را از صفحات گسترده Microsoft Excel XLS بخوانند و استخراج کنند. این کتابخانه از فایل‌های Excel 97–2003 (.xls)، چندین برگه کاری، مقادیر سلول و اطلاعات قالب‌بندی، متن یونیکد، استخراج تاریخ و عدد، توسعه چندپلتفرمی و موارد دیگر پشتیبانی می‌کند. برخلاف روش‌های خودکارسازی اداری، libxls به‌صورت مستقل از Microsoft Office کار می‌کند و برای لینوکس، macOS، ویندوز و محیط‌های توکار مناسب است. به دلیل سادگی، قابلیت حمل و کارایی‌اش، libxls به‌طور گسترده‌ای در ابزارهای مهاجرت داده، مبدل‌های صفحات گسترده، برنامه‌های گزارش‌گیری و پروژه‌های نرم‌افزاری چندپلتفرمی استفاده می‌شود.

Previous Next

شروع کار با libxls

libxls از CMake برای ساخت و نصب کتابخانه پشتیبانی می‌کند. لطفاً از فرمان زیر استفاده کنید.

نصب libxls از طریق CRAN

 mkdir build
cd build

cmake ..
make
 

مخزن کد منبع libxls را از GitHub کلون کنید. لطفاً از کد زیر استفاده کنید.

نصب libxls از طریق GitHub

 git clone https://github.com/libxls/libxls.git
# Or use your preferred protocol instead of https 

خواندن فایل‌های قدیمی Excel XLS از طریق کتابخانه C

یکی از بزرگ‌ترین نقاط قوت libxls توانایی آن در تجزیه فایل‌های باینری XLS اکسل 97–2003 است. این کتابخانه ساختار داخلی این صفحات گسترده را درک می‌کند و به برنامه‌ها اجازه می‌دهد ردیف‌ها، ستون‌ها و مقادیر سلول‌ها را بدون نیاز به Microsoft Excel دسترسی پیدا کنند. این قابلیت به‌ویژه برای سازمان‌هایی که هنوز داده‌های تاریخی را در قالب XLS بایگانی می‌کنند، مفید است. توسعه‌دهندگان می‌توانند به‌راحتی ابزارهای واردات بسازند و فرآیندهای استخراج داده را خودکار کنند در حالی که سازگاری با اسناد قدیمی حفظ می‌شود. مثال زیر یک کتاب‌کار Excel XLS را با استفاده از رمزگذاری UTF-8 باز می‌کند. پس از بارگذاری کتاب‌کار، توسعه‌دهندگان می‌توانند به ورق‌های کاری دسترسی پیدا کرده و داده‌های صفحه‌گسترده را استخراج کنند.

چگونه فایل‌های Excel XLS را با استفاده از کتابخانه C بخوانیم

#include 

int main()
{
    xlsWorkBook *workbook;
    workbook = xls_open("sample.xls", "UTF-8");

    if(workbook)
    {
        printf("Workbook opened successfully\n");
        xls_close_WB(workbook);
    }

    return 0;
}

دسترسی به چندین برگه کاری از طریق کتابخانه C

بسیاری از فایل‌های اکسل شامل چندین ورق کاری هستند که اطلاعات را در بخش‌های مختلف سازماندهی می‌کنند. libxls APIهایی را برای پیمایش و خواندن هر ورق کاری به‌صورت مستقل فراهم می‌کند. این ویژگی هنگام پردازش گزارش‌های مالی، فاکتورها، برگه‌های موجودی یا مجموعه‌های داده علمی مفید است. توسعه‌دهندگان می‌توانند به‌صورت حلقه‌ای تمام ورق‌ها را مرور کرده و اطلاعات را به‌صورت خودکار بدون دخالت کاربر استخراج کنند. کد زیر یک کتاب‌کار را باز می‌کند و تعداد کل ورق‌های کاری موجود در فایل را بازیابی می‌نماید.

چگونه تعداد کل ورق‌های کاری در فایل XLS را با استفاده از C دریافت کنیم؟

#include 

int main()
{
    xlsWorkBook *wb = xls_open("report.xls", "UTF-8");

    if(wb)
    {
        printf("Number of sheets: %d\n", wb->sheets.count);

        xls_close_WB(wb);
    }

    return 0;
}

خواندن مقادیر سلول‌ها از طریق کتابخانه C

کتابخانه منبع باز libxls به برنامه‌ها امکان دسترسی به سلول‌های منفرد و بازیابی محتویات آن‌ها را می‌دهد. چه جدول‌محور شامل متن، عدد یا تاریخ باشد، این کتابخانه دسترسی ساده‌ای به اطلاعات سلول‌ها فراهم می‌کند. این قابلیت libxls را برای وارد کردن داده‌های جدول‌محور به پایگاه‌های داده، تولید گزارش‌ها یا تبدیل اسناد Excel به فرمت‌های CSV و JSON مناسب می‌سازد. مثال کد زیر اولین سلول در برگه کاری را می‌خواند و مقدار آن را در کنسول چاپ می‌کند.

چگونه به سلول‌های ورق کاری دسترسی پیدا کنیم و مقدار آن‌ها را با استفاده از کتابخانه C چاپ کنیم؟

#include 

int main()
{
    xlsWorkBook *wb = xls_open("sample.xls", "UTF-8");

    if(wb)
    {
        xlsWorkSheet *sheet = xls_getWorkSheet(wb, 0);
        xls_parseWorkSheet(sheet);

        xlsCell *cell = xls_cell(sheet, 0, 0);

        if(cell)
            printf("Cell value: %s\n", cell->str);

        xls_close_WS(sheet);
        xls_close_WB(wb);
    }

    return 0;
}

پشتیبانی از یونیکد و رمزگذاری کاراکترها

برنامه‌های مدرن اغلب با جدول‌محورهای چندزبانه کار می‌کنند. libxls از متن یونیکد از طریق تنظیمات قابل پیکربندی رمزگذاری کاراکترها پشتیبانی می‌کند و امکان پردازش فایل‌هایی که شامل زبان‌های بین‌المللی و کاراکترهای ویژه هستند را فراهم می‌سازد. این ویژگی به‌ویژه برای برنامه‌های تجاری که نام‌ها، آدرس‌ها و گزارش‌های مشتریان را به زبان‌های مختلف مدیریت می‌کنند، مفید است. با تعیین رمزگذاری UTF-8، کتابخانه متن یونیکد ذخیره‌شده در فایل‌های Excel را به‌درستی تفسیر می‌کند همان‌طور که در مثال کد زیر نشان داده شده است.

چگونه متن یونیکد ذخیره‌شده در فایل‌های Excel را با استفاده از C تفسیر کنیم؟

 
xlsWorkBook *wb = xls_open("employees.xls", "UTF-8");

if(wb)
{
    printf("Workbook loaded using UTF-8 encoding\n");
}

 فارسی