مستندات HotXLS

مرور کلی

لوگوی HotXLS
کتابخانه خواندن/نوشتن Excel در HotXLS یک کامپوننت با کارایی بالا برای خواندن و نوشتن فایل‌های Excel برای Delphi و C++Builder است این کتابخانه می‌تواند صفحات گسترده Excel جدید ایجاد کرده و کتاب‌های کار XLS و XLSX موجود را بدون نیاز به نصب Microsoft Excel یا Office بر روی دستگاه بخواند یا تغییر دهد
HotXLS به طور کامل به زبان Object Pascal نوشته شده است. فایل‌های Excel را مستقیماً در سطح باینری و OOXML می‌خواند و می‌نویسد، بنابراین هیچ سربار اتوماسیون COM/OLE وجود ندارد و هیچ وابستگی به نصب یا مجوز Office نیست. HotXLS از Delphi و C++Builder نسخه XE5 تا ۱۳ Florence پشتیبانی می‌کند
قالب‌بندی رنگ XLS کلاسیک عمداً مبتنی بر پالت رنگ باقی می‌ماند. برای تصمیم ThemeColor / TintAndShade به مدل رنگ کلاسیک XLS مراجعه کنید

معماری رابط دوگانه

HotXLS دو واحد رابط همزیست را در اختیار می‌گذارد تا کد قدیمی XLS و کد جدید XLSX بتوانند کنار یکدیگر بدون نیاز به بازسازی کد قرار گیرند:
lxHandle رابط اصلی برای فرمت Excel 97–2003 BIFF8 (.xls)، به علاوه صادرات HTML، RTF، CSV، و TSV تمام کد موجود کاربران بدون تغییر به استفاده از این واحد ادامه می‌دهد. نقاط ورود: TXLSWorkbook، TXLSWorksheet، IXLSWorkbook، IXLSRange
lxHandleX رابط اصلی برای فرمت Excel 2007+‏ OOXML (.xlsx) و صفحه گسترده OpenDocument (.ods) برای خواندن/نوشتن. انواع کتاب کار و برگه کار مختص خود را فراهم می‌کند تا رفتارهای خاص XLSX روی مسیر کد BIFF بازطراحی نشوند. نقاط ورود: TXLSXWorkbook، TXLSXWorksheet، TXLSXCell
هر دو رابط موتور فرمول، لایه پشتیبانی Unicode، و خط لوله صادرات یکسانی را به اشتراک می‌گذارند برای مشاهده سلسله مراتب کامل کلاس‌های در معرض نمایش توسط lxHandleX به مرور کلی رابط XLSX مراجعه کنید

شروع سریع

قطعه کدهای زیر حداقل کد لازم برای ایجاد یک کتاب کار با یک برگه کار و نوشتن یک مقدار در یک سلول را نشان می‌دهند.

XLS کلاسیک (lxHandle)

uses lxHandle;

var
  Book: IXLSWorkbook;
  ws:   TXLSWorksheet;
begin
  Book := TXLSWorkbook.Create;
  // افزودن یک برگه کار و نام‌گذاری آن
  ws := Book.Sheets.Add;
  ws.Name := 'Sheet1';

  // نوشتن مقادیر در سلول‌ها با استفاده از نماد A1
  ws.Range['A1'].Value := 'Hello';
  ws.Range['B1'].Value := 42;
  ws.Range['C1'].Formula := '=B1*2';

  // اعمال قالب‌بندی پایه
  ws.Range['A1'].Font.Bold := True;
  ws.Range['A1'].Interior.Color := clYellow;

  Book.SaveAs('output.xls');
end;

XLSX (lxHandleX)

uses lxHandleX;

var
  Book: TXLSXWorkbook;
  ws:   TXLSXWorksheet;
  cell: TXLSXCell;
begin
  Book := TXLSXWorkbook.Create;
  try
    ws := Book.Sheets.Add('Sheet1');

    // نوشتن یک مقدار رشته‌ای و یک مقدار عددی
    ws.Cells[1, 1].Value := 'Product';
    ws.Cells[1, 2].Value := 'Price';
    ws.Cells[2, 1].Value := 'Widget';
    ws.Cells[2, 2].Value := 9.99;

    // اعمال قالب اعداد ارزی
    cell := ws.Cells[2, 2];
    cell.NumberFormat := '$#,##0.00';

    Book.SaveAs('output.xlsx');
  finally
    Book.Free;
  end;
end;
برای یک آموزش جامع‌تر که هر دو رابط را در یک پروژه نمایشی واحد پوشش می‌دهد، به نمونه تور API مراجعه کنید

ویژگی‌ها

ورودی/خروجی فایل و پشتیبانی از جریان

خواندن فایل‌های Excel موجود، نوشتن فایل‌های Excel جدید یا موجود، مدیریت حفاظت با رمز عبور XLS کلاسیک و جریان‌های کاری ذخیره‌سازی رمزگذاری‌شده XLSX، و فهرست‌برداری سریع نام برگه‌ها از فایل‌ها و جریان‌های XLS و XLSX بدون بارگذاری کل کتاب کار. باز کردن یک CSV به عنوان کتاب کار از طریق IXLSWorkbook.OpenCSV پشتیبانی می‌شود

مقادیر سلول و فرمول‌ها

خواندن و نوشتن مقادیر سلول از تمام انواع بومی Excel: عدد، رشته، تاریخ/زمان، بولی، و فرمول موتور محاسبه داخلی فرمول‌ها را در کتاب‌های کار XLS و XLSX کلاسیک ارزیابی می‌کند و از موارد زیر پشتیبانی می‌کند:
  • توابع متنی (LEFT، MID، TRIM، SUBSTITUTE، …)
  • توابع تاریخ و روزهای کاری (DATE، NETWORKDAYS، WORKDAY، …)
  • توابع مهندسی و تبدیل مبنا (BIN2DEC، HEX2DEC، …)
  • توابع بیتی (BITAND، BITOR، BITXOR، …)
  • توابع آماری و تجمیعی (AVERAGE، SUMIF، COUNTIFS، …)
  • توابع ریاضی (ROUND، MOD، POWER، …)
یک callback به نام OnUserFunction به شما امکان می‌دهد توابع برگه کار سفارشی یا پشتیبانی‌نشده را در زمان اجرا مدیریت کنید برای امضا و مثال‌ها به callback OnUserFunction مراجعه کنید
مثال ارزیابی فرمول

قالب‌بندی سلول

دسترسی کامل به ویژگی‌های ظاهری سلول:
  • فونت‌ها — نام، اندازه، رنگ (RGB یا رنگ تم + سایه)، ضخیم، مورب، زیرخط، خط‌خورده، بالانویس، پایین‌نویس، سایه، و خط‌دار
  • تراز — تراز افقی و عمودی، جهت متن (زاویه)، سطح تورفتگی، شکستن خط، کوچک‌شدن برای جا شدن، و ترتیب خواندن (RTL/LTR)
  • حاشیه‌ها — تمام چهار لبه و قطرها، سبک خط، ضخامت، و رنگ RGB / تم
  • داخلی (پر کردن) — پرکردن جامد، پرکردن با طرح، رنگ‌های پیش‌زمینه و پس‌زمینه شامل رنگ تم با TintAndShade
  • قالب اعداد — رشته‌های قالب داخلی و سفارشی برای تاریخ، زمان، ارز، درصد، و نماد علمی
  • توضیحات / حاشیه‌نویسی — افزودن، خواندن، و قالب‌بندی توضیحات سلول

عملیات محدوده

IXLSRange (رابط کلاسیک) و TXLSXRange (رابط XLSX) مجموعه‌ای غنی از عملیات محدوده را فراهم می‌کنند:
  • ادغام و لغو ادغام سلول‌ها؛ دسترسی به ناحیه ادغام‌شده هر سلول
  • کپی، انتقال، درج، و حذف محدوده‌ها با کنترل جهت جابجایی
  • گروه‌بندی و لغو گروه‌بندی ردیف‌ها یا ستون‌ها برای نماهای طرح کلی/جمع‌شدن
  • تنظیم خودکار ارتفاع ردیف و عرض ستون به محتوای سلول
  • اعمال استایل‌های سلول نام‌دار داخلی (ApplyBuiltinStyle)
  • انتخاب‌های چند ناحیه‌ای (TXLSWorksheet.SelectAreas)
  • callback تکرار ForEachCell برای پردازش دسته‌ای سلول

ویژگی‌های برگه کار

کنترل در سطح برگه کار شامل موارد زیر است:
  • نام برگه، رنگ زبانه، دید (پنهان / بسیار پنهان)، و ناوبری بر اساس فهرست
  • حفاظت از برگه با دقت مجوز به ازای هر مجوز؛ حفاظت در سطح کتاب کار
  • قفل کردن صفحه، تقسیم صفحه، و موقعیت اسکرول
  • محدوده‌های فیلتر خودکار با معیارها؛ قوانین اعتبارسنجی داده‌های فهرستی
  • قالب‌بندی شرطی: مقیاس‌های رنگی (۲ و ۳ رنگ)، نوارهای داده، و مجموعه‌های آیکون
  • جستجو و جایگزینی متن در سراسر برگه کار
  • گزینه‌های نما: رنگ خطوط شبکه، حالت نمایش فرمول، نمایش صفرها، نمایش عناوین، نمایش راست به چپ، نمایش نمادهای طرح کلی، و سطح بزرگ‌نمایی
  • جداول ساختاریافته (TXLSTable / TXLSXTable): افزودن، دسترسی، و قالب‌بندی جداول Excel با ردیف‌های سرستون و ردیف‌های نواری
  • نمودارها: افزودن برگه‌های نمودار و نمودارهای تعبیه‌شده از طریق TXLSWorksheetsAddChartSheet و TXLSXChart

لینک‌های فراپیوند و محدوده‌های نام‌دار

افزودن و خواندن لینک‌های فراپیوند (URL، mailto، و مراجع سلول داخل کتاب کار) از طریق IXLSHyperLinks. تعریف و حل محدوده‌های نام‌دار در دامنه کتاب کار و برگه کار از طریق IXLSNames / TXLSXDefinedNames. محدوده‌های نام‌دار می‌توانند در فرمول‌ها استفاده شده و از طریق RefersToRange به یک محدوده سلول برگردانده شوند

تصاویر و اشکال

تعبیه تصاویر رستری (BMP، JPG، PNG، GIF) در برگه‌های کار از طریق TXLSShapes.AddPicture / TXLSXWorksheet.AddImage. ایجاد جعبه‌های متن مستقل در XLS کلاسیک از طریق TXLSShapes.AddTextBox. حفظ اتصال‌دهنده‌های OfficeArt ایجادشده توسط Excel و قوانین حل‌کننده در نقاشی‌های BIFF8، و نمایش گزینه‌های خام FOPT شکل از طریق TXLSShape.OfficeArtOptions برای جریان‌های کاری نقاشی تخصصی

تنظیم صفحه و چاپ

دسترسی کامل به طرح‌بندی چاپ از طریق IXLSPageSetup:
  • اندازه کاغذ (A4، Letter، Legal، و بسیاری دیگر؛ به PaperSize مراجعه کنید)
  • جهت‌گیری (عمودی / افقی)، حاشیه‌ها، توسط افقی / عمودی
  • رشته‌های سرصفحه و پاصفحه با کدهای قالب‌بندی Excel (ضخیم، مورب، شماره صفحه، تاریخ، و غیره؛ به کدهای قالب‌بندی سرصفحه/پاصفحه مراجعه کنید)
  • شکست‌های صفحه افقی و عمودی دستی
  • مقیاس‌بندی جا شدن در صفحات؛ درصد بزرگ‌نمایی؛ ناحیه چاپ؛ عناوین چاپ (تکرار ردیف‌ها / ستون‌ها)
  • کیفیت پیش‌نویس؛ سیاه و سفید؛ چاپ خطوط شبکه؛ چاپ عناوین؛ چاپ یادداشت‌ها

فرمت‌های صادرات

صادرات کتاب‌های کار کامل، برگه‌های کار فردی، یا محدوده‌های سلولی دلخواه به:
  • HTML — سند کامل یا یک جزء جدول درون‌خطی برای پیش‌نمایش یا جریان‌های کاری ایمیل؛ قابل کنترل از طریق TXLSHTMLExport و TXLSXHtmlExportOptions
  • RTF — متن غنی برای وارد کردن در پردازنده‌های متنی
  • CSV — مقادیر جداشده با کاما با جداکننده و رمزگذاری قابل تنظیم
  • TSV — مقادیر جداشده با تب
  • ODS — صفحه گسترده OpenDocument از طریق رابط lxHandleX

صادرات پایگاه داده و شبکه

صادرات هر مجموعه داده سازگار با TDataSet یا TDBGrid مستقیماً به Excel، HTML، یا RTF با استفاده از TDataToXLS یا TGridToXLS هر دو کامپوننت رویدادهای AfterCell، AfterRow، AfterTitle، و AfterGroup را برای کنترل دقیق خروجی فعال می‌کنند و از فیلدهای گروه‌بندی چند سطحی پشتیبانی می‌کنند

حفظ پروژه VBA

HotXLS محتوای پروژه VBA را هنگام انتقال کتاب‌های کار با قابلیت ماکرو حفظ می‌کند. بررسی ماژول فقط-خواندنی از طریق TXLSVBAProject و TXLSVBAModule در دسترس است IXLSWorkbook.HasVBAProject را برای تشخیص محتوا و LoadVBAProjectFromFile / SaveVBAProjectToFile را برای انتقال آن بین فایل‌ها فراخوانی کنید

Unicode و متن بین‌المللی

تمام پردازش رشته‌ها به صورت بومی Unicode است. HotXLS فایل‌های Excel تألیف‌شده به هر زبانی را می‌خواند و می‌نویسد، از جمله CJK، عربی، عبری، تایلندی، و سایر خطوط، با پشتیبانی صحیح از متن دو جهته و ترتیب خواندن
مثال پشتیبانی از کاراکترهای Unicode

جداول محوری (XLS کلاسیک)

ایجاد جداول محوری از یک محدوده منبع با TXLSWorksheet.AddPivotTable، پیکربندی جای‌گذاری فیلد و قالب‌های اعداد فیلد داده، و بازرسی مدل محوری از طریق TXLSWorksheet.PivotTables برای جزئیات فیلد و فیلتر به API جدول محوری XLS کلاسیک مراجعه کنید

مزایا

No Office dependency فایل‌های XLS و XLSX را مستقیماً در سطح باینری می‌خواند و می‌نویسد. نیازی به نصب، مجوز، یا اجرای Microsoft Excel یا Office نیست. این امر سربار اتوماسیون COM/OLE را حذف می‌کند، از محدودیت‌های رشته‌سازی تحمیل‌شده توسط interop Office جلوگیری می‌کند، و امکان استفاده از HotXLS را در زمینه‌های سمت سرور و سرویس فراهم می‌کند که در آنها نصب Office در سطح دسکتاپ غیرعملی است
High performance تجزیه‌گرهای BIFF8 و OOXML به زبان Object Pascal بومی بدون تخصیص واسط XML DOM برای مسیر اصلی نوشته شده‌اند. کتاب‌های کار بزرگ با صدها هزار ردیف می‌توانند با حافظه اوج پایین خوانده و نوشته شوند. حذف تکراری رشته‌های مشترک و فشرده‌سازی فرمول‌های مشترک به طور خودکار اعمال می‌شود تا اندازه فایل‌ها کوچک بماند
OLE migration path سطح API رابط کلاسیک (کتاب کار، برگه کار، محدوده، فونت، حاشیه‌ها، داخلی، تنظیم صفحه) به دقت مدل شیء Excel آشنا از OLE Automation را منعکس می‌کند. این امر مهاجرت پروژه‌های مبتنی بر OLE موجود را آسان می‌کند: فراخوانی‌های COM را با فراخوانی‌های HotXLS جایگزین کنید، وابستگی به Office را حذف کنید، و کارایی بومی به دست آورید
Dual-facade design کد قدیمی XLS بدون تغییر در مقابل lxHandle کامپایل و اجرا می‌شود در حالی که کد جدید XLSX از رابط غنی‌تر lxHandleX استفاده می‌کند. مهاجرت یک فرمت فایل در یک زمان ایمن و تدریجی است
Formula engine included یک موتور محاسبه چند مرحله‌ای داخلی رایج‌ترین توابع برگه کار را بدون نیاز به محاسبه مجدد Excel هنگام باز شدن مدیریت می‌کند. توابع سفارشی از طریق callback OnUserFunction مدیریت می‌شوند
Easy to use کامپوننت‌های آماده استفاده Delphi (TDataToXLS، TGridToXLS) برای وظایف صادرات رایج نیازی به کد ندارند. API محدوده روان از نماد A1، نماد R1C1، و فهرست‌بندی ردیف/ستون مبتنی بر صفر پشتیبانی می‌کند
Thread-safe file I/O از آنجایی که هیچ فرآیند Office مشترکی وجود ندارد، چندین نمونه TXLSXWorkbook می‌توانند به طور همزمان بر روی رشته‌های مستقل بدون همگام‌سازی ایجاد و ذخیره شوند، که HotXLS را برای سرورهای تولید گزارش چند رشته‌ای مناسب می‌کند

سازگاری

HotXLS با نسخه‌های زیر RAD Studio سازگار است:
Delphi XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence
C++Builder XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence
Target platforms Windows ۳۲ بیتی و ۶۴ بیتی
Excel file formats XLS (BIFF8، Excel 97–2003)، XLSX (OOXML، Excel 2007+)، ODS (OpenDocument 1.2)
Export-only formats HTML, RTF, CSV, TSV

همچنین ببینید