Przegląd
![]() |
HotXLS Excel Read/Write Library to wydajny komponent do odczytu i zapisu plików Excel dla Delphi i C++Builder
Umożliwia tworzenie nowych arkuszy kalkulacyjnych Excel oraz odczyt i modyfikację istniejących skoroszytów XLS i XLSX bez konieczności
instalowania programu Microsoft Excel lub pakietu Office na komputerze
HotXLS jest napisany całkowicie w Object Pascal. Odczytuje i zapisuje pliki Excel bezpośrednio
na poziomie binarnym i OOXML, dzięki czemu nie ma narzutu automatyzacji COM/OLE ani zależności od
licencjonowanego lub zainstalowanego pakietu Office. HotXLS obsługuje Delphi i C++Builder XE5 przez 13 Florence
Klasyczne formatowanie kolorów XLS celowo pozostaje oparte na palecie. Zob. Klasyczny model kolorów XLS
w celu zapoznania się z decyzją dotyczącą ThemeColor / TintAndShade
|
Architektura dwóch fasad
HotXLS udostępnia dwie współistniejące jednostki fasady, dzięki czemu starszy kod XLS i nowy kod XLSX mogą współistnieć
bez żadnej refaktoryzacji:
lxHandle |
Główna fasada dla formatu Excel 97–2003 BIFF8 (.xls), a także eksportu HTML, RTF, CSV i TSV
Cały istniejący kod użytkownika nadal korzysta z tej jednostki bez zmian. Punkty wejścia:
TXLSWorkbook, TXLSWorksheet, IXLSWorkbook, IXLSRange
|
lxHandleX |
Główna fasada dla formatu Excel 2007+ OOXML (.xlsx) i OpenDocument Spreadsheet
(.ods) – odczyt i zapis. Udostępnia własne typy skoroszytu i arkusza, aby zachowanie specyficzne dla XLSX
nie było wtórnie wprowadzane do ścieżki kodu BIFF. Punkty wejścia:
TXLSXWorkbook, TXLSXWorksheet, TXLSXCell
|
Obie fasady współdzielą ten sam silnik formuł, tę samą warstwę obsługi Unicode i ten sam potok eksportu
Zob. Przegląd fasady XLSX, aby zapoznać się z pełną hierarchią klas udostępnianych przez
lxHandleX
Szybki start
Poniższe fragmenty kodu pokazują minimalny kod potrzebny do utworzenia skoroszytu z jednym arkuszem i zapisania
wartości w komórce.
Klasyczny XLS (lxHandle)
uses lxHandle;
var
Book: IXLSWorkbook;
ws: TXLSWorksheet;
begin
Book := TXLSWorkbook.Create;
// Dodaj arkusz i nadaj mu nazwę
ws := Book.Sheets.Add;
ws.Name := 'Sheet1';
// Zapisz wartości w komórkach używając notacji A1
ws.Range['A1'].Value := 'Hello';
ws.Range['B1'].Value := 42;
ws.Range['C1'].Formula := '=B1*2';
// Zastosuj podstawowe formatowanie
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');
// Zapisz wartość tekstową i liczbową
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;
// Zastosuj format liczbowy dla waluty
cell := ws.Cells[2, 2];
cell.NumberFormat := '$#,##0.00';
Book.SaveAs('output.xlsx');
finally
Book.Free;
end;
end;
Aby zapoznać się z szerszym omówieniem obejmującym obie fasady w jednym projekcie demonstracyjnym, zob
Demo API Tour
Funkcje
Obsługa plików I/O i strumieni
Odczytuj istniejące pliki Excel, zapisuj nowe lub istniejące pliki Excel, obsługuj klasyczną ochronę hasłem XLS i
szyfrowane przepływy pracy zapisu XLSX oraz szybko wyświetlaj listę nazw arkuszy z plików XLS i XLSX lub strumieni bez
wczytywania całego skoroszytu. Otwieranie pliku CSV jako skoroszytu jest obsługiwane przez
IXLSWorkbook.OpenCSV
Wartości komórek i formuły
Odczytuj i zapisuj wartości komórek wszystkich natywnych typów Excel: liczba, ciąg znaków, data/godzina, wartość logiczna i formuła
Wbudowany silnik obliczeniowy oblicza formuły zarówno w klasycznych skoroszytach XLS, jak i XLSX, obsługując:
- Funkcje tekstowe (
LEFT,MID,TRIM,SUBSTITUTE, …) - Funkcje daty i dni roboczych (
DATE,NETWORKDAYS,WORKDAY, …) - Funkcje inżynieryjne i konwersji podstaw (
BIN2DEC,HEX2DEC, …) - Funkcje bitowe (
BITAND,BITOR,BITXOR, …) - Funkcje statystyczne i agregujące (
AVERAGE,SUMIF,COUNTIFS, …) - Funkcje matematyczne (
ROUND,MOD,POWER, …)
Wywołanie zwrotne
OnUserFunction umożliwia obsługę niestandardowych lub nieobsługiwanych funkcji arkusza w czasie wykonywania
Zob. Wywołanie zwrotne OnUserFunction, aby zapoznać się z sygnaturą i przykładami

Formatowanie komórek
Pełny dostęp do atrybutów wyglądu komórek:
- Czcionki — nazwa, rozmiar, kolor (RGB lub kolor motywu + odcień), pogrubienie, kursywa, podkreślenie, przekreślenie, indeks górny, indeks dolny, cień i kontur
- Wyrównanie — wyrównanie poziome i pionowe, orientacja tekstu (kąt), poziom wcięcia, zawijanie tekstu, zmniejszanie do dopasowania i kolejność odczytu (RTL/LTR)
- Obramowania — wszystkie cztery krawędzie i przekątne, styl linii, grubość i kolor RGB / motywu
- Wnętrze (wypełnienie) — jednolite wypełnienie, wypełnienia wzorkiem, kolory pierwszego planu i tła w tym kolor motywu z TintAndShade
- Formaty liczb — wbudowane i niestandardowe ciągi formatu dla daty, godziny, waluty, procentu i notacji naukowej
- Komentarze / adnotacje — dodawanie, odczyt i stylizowanie komentarzy komórek
Operacje na zakresach
IXLSRange (klasyczna fasada) i TXLSXRange (fasada XLSX) udostępniają bogaty zestaw
operacji na zakresach:
- Scalanie i rozdzielanie komórek; dostęp do scalonego obszaru dowolnej komórki
- Kopiowanie, przenoszenie, wstawianie i usuwanie zakresów z kontrolą kierunku przesunięcia
- Grupowanie i rozgrupowywanie wierszy lub kolumn dla widoków konspektu/zwijania
- Automatyczne dopasowanie wysokości wiersza i szerokości kolumny do zawartości komórki
- Stosowanie wbudowanych nazwanych stylów komórek (
ApplyBuiltinStyle) - Zaznaczenia wieloobszarowe (
TXLSWorksheet.SelectAreas) - Wywołanie zwrotne iteracji ForEachCell do wsadowego przetwarzania komórek
Funkcje arkusza
Kontrola na poziomie arkusza obejmuje:
- Nazwa arkusza, kolor karty, widoczność (ukryty / bardzo ukryty) i nawigacja oparta na indeksie
- Ochrona arkusza z granularnością poszczególnych uprawnień; ochrona na poziomie skoroszytu
- Zablokowane okienka, podzielone okienka i pozycja przewijania
- Zakresy autofiltra z kryteriami; reguły sprawdzania poprawności danych listy
- Formatowanie warunkowe: skale kolorów (2 i 3 kolory), paski danych i zestawy ikon
- Znajdowanie i zastępowanie tekstu w arkuszu
- Opcje widoku: kolor linii siatki, tryb wyświetlania formuł, wyświetlanie zer, wyświetlanie nagłówków, wyświetlanie od prawej do lewej, wyświetlanie symboli konspektu i poziom powiększenia
- Tabele strukturalne (
TXLSTable/TXLSXTable): dodawanie, dostęp i stylizowanie tabel Excel z wierszami nagłówka i wierszami naprzemiennymi - Wykresy: dodawanie arkuszy wykresów i wykresów osadzonych za pomocą
TXLSWorksheetsAddChartSheetiTXLSXChart
Hiperłącza i nazwane zakresy
Dodawaj i odczytuj hiperłącza (URL, mailto i odwołania do komórek w skoroszycie) za pomocą
IXLSHyperLinks. Definiuj i rozwiązuj nazwane zakresy na poziomie skoroszytu i arkusza za pomocą
IXLSNames / TXLSXDefinedNames. Nazwane zakresy mogą być używane w formułach i
rozwiązywane z powrotem do zakresu komórek za pomocą RefersToRange
Obrazy i kształty
Osadzaj obrazy rastrowe (BMP, JPG, PNG, GIF) w arkuszach za pomocą
TXLSShapes.AddPicture / TXLSXWorksheet.AddImage. Twórz samodzielne pola tekstowe
w klasycznym XLS za pomocą TXLSShapes.AddTextBox. Zachowuj reguły łączników i solverów OfficeArt utworzonych w programie Excel
w rysunkach BIFF8 i udostępniaj nieprzetworzone opcje FOPT kształtu za pomocą
TXLSShape.OfficeArtOptions dla zaawansowanych przepływów pracy rysowania
Ustawienia strony i drukowanie
Pełny dostęp do układu wydruku przez
IXLSPageSetup:
- Rozmiar papieru (A4, Letter, Legal i wiele innych; zob. PaperSize)
- Orientacja (pionowa / pozioma), marginesy, wyśrodkowanie poziome / pionowe
- Ciągi nagłówka i stopki z kodami formatowania programu Excel (pogrubienie, kursywa, numer strony, data itp.; zob. Kody formatowania nagłówka/stopki)
- Ręczne poziome i pionowe podziały stron
- Skalowanie dopasowania do stron; procent powiększenia; obszar wydruku; tytuły wydruku (powtarzaj wiersze / kolumny)
- Jakość robocza; czarno-biały; drukuj linie siatki; drukuj nagłówki; drukuj notatki
Formaty eksportu
Eksportuj całe skoroszyty, poszczególne arkusze lub dowolne zakresy komórek do:
- HTML — pełny dokument lub fragment tabeli inline do podglądu lub przepływów pracy poczty e-mail;
konfigurowalny za pomocą
TXLSHTMLExportiTXLSXHtmlExportOptions - RTF — tekst sformatowany do importu do edytora tekstu
- CSV — wartości rozdzielone przecinkami z konfigurowalnym separatorem i kodowaniem
- TSV — wartości rozdzielone tabulatorami
- ODS — OpenDocument Spreadsheet za pomocą fasady
lxHandleX
Eksport baz danych i siatek
Eksportuj dowolny zestaw danych zgodny z TDataSet lub TDBGrid bezpośrednio do programu Excel, HTML lub RTF za pomocą
komponentów
TDataToXLS lub
TGridToXLS
Oba komponenty wyzwalają zdarzenia AfterCell, AfterRow, AfterTitle i
AfterGroup umożliwiające precyzyjną kontrolę wyjścia oraz obsługują wielopoziomowe pola grupowania
Zachowanie projektu VBA
HotXLS zachowuje ładunki projektów VBA podczas przetwarzania skoroszytów z obsługą makr. Inspekcja modułów
tylko do odczytu jest dostępna przez
TXLSVBAProject i TXLSVBAModule
Wywołaj IXLSWorkbook.HasVBAProject, aby wykryć ładunek, oraz
LoadVBAProjectFromFile / SaveVBAProjectToFile, aby przenosić go między plikami
Tekst Unicode i międzynarodowy
Całe przetwarzanie ciągów znaków jest natywnie obsługiwane w standardzie Unicode. HotXLS odczytuje i zapisuje pliki Excel tworzone w dowolnym języku,
w tym CJK, arabskim, hebrajskim, tajskim i innych skryptach, z poprawnym dwukierunkowym tekstem i obsługą
kolejności odczytu

Tabele przestawne (klasyczny XLS)
Twórz tabele przestawne z zakresu źródłowego za pomocą
TXLSWorksheet.AddPivotTable, konfiguruj rozmieszczenie pól i formaty liczb pól danych oraz
sprawdzaj model przestawny za pomocą TXLSWorksheet.PivotTables
Zob. Klasyczny interfejs API tabel przestawnych XLS, aby zapoznać się ze szczegółami pól i filtrów
Zalety
| No Office dependency | Odczytuje i zapisuje pliki XLS i XLSX bezpośrednio na poziomie binarnym. Nie ma potrzeby instalowania, licencjonowania ani uruchamiania programu Microsoft Excel lub pakietu Office. Eliminuje to narzut automatyzacji COM/OLE, unika ograniczeń wątkowania narzucanych przez interop pakietu Office i umożliwia używanie HotXLS w kontekstach po stronie serwera i usługach, gdzie instalacja pakietu Office na komputerze stacjonarnym jest niepraktyczna |
| High performance | Parsery BIFF8 i OOXML są napisane w natywnym Object Pascal bez pośredniej alokacji DOM XML dla gorącej ścieżki. Duże skoroszyty z setkami tysięcy wierszy można odczytywać i zapisywać przy niskim szczytowym zużyciu pamięci. Deduplikacja udostępnionych ciągów i kompresja udostępnionych formuł są stosowane automatycznie, aby pliki były małe |
| OLE migration path | Powierzchnia interfejsu API klasycznej fasady (skoroszyt, arkusz, zakres, czcionka, obramowania, wnętrze, ustawienia strony) ściśle odzwierciedla model obiektowy programu Excel znany z automatyzacji OLE. Dzięki temu migracja istniejących projektów opartych na OLE jest prosta: zastąp wywołania COM wywołaniami HotXLS, usuń zależność od pakietu Office i zyskaj natywną wydajność |
| Dual-facade design |
Starszy kod XLS nadal kompiluje się i działa bez zmian względem lxHandle, podczas gdy nowy kod XLSX
używa bogatszej fasady lxHandleX. Migracja jednego formatu pliku na raz jest bezpieczna i
przyrostowa
|
| Formula engine included |
Wbudowany wieloprzebiegowy silnik obliczeniowy obsługuje najczęstsze funkcje arkusza bez konieczności
ponownego obliczania przez program Excel po otwarciu. Niestandardowe funkcje są obsługiwane za pomocą wywołania zwrotnego OnUserFunction
|
| Easy to use |
Komponenty Delphi typu drop-in (TDataToXLS, TGridToXLS) nie wymagają kodu dla
typowych zadań eksportu. Płynny interfejs API zakresu obsługuje notację A1, notację R1C1 i indeksowanie
wierszy/kolumn oparte na zerze
|
| Thread-safe file I/O |
Ponieważ nie ma wspólnego procesu pakietu Office, wiele instancji TXLSXWorkbook może być
tworzonych i zapisywanych jednocześnie w niezależnych wątkach bez synchronizacji, co sprawia, że HotXLS
nadaje się do wielowątkowych serwerów generowania raportów
|
Zgodność
HotXLS jest zgodny z następującymi wersjami 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 32-bit i 64-bit |
| Excel file formats | XLS (BIFF8, Excel 97–2003), XLSX (OOXML, Excel 2007+), ODS (OpenDocument 1.2) |
| Export-only formats | HTML, RTF, CSV, TSV |
Zobacz też
- Przegląd fasady XLSX (lxHandleX) — pełna hierarchia klas i elementy interfejsu API specyficzne dla XLSX/ODS
- Demo API Tour — pierwsze demo do uruchomienia podczas nauki HotXLS od podstaw
- IXLSWorkbook — klasyczny interfejs referencyjny skoroszytu XLS
- TXLSWorksheet — klasyczna referencja klasy arkusza XLS
- IXLSRange — interfejs zakresu: dostęp do komórek, formatowanie i operacje
- TXLSXWorkbook — referencja klasy skoroszytu XLSX
- TXLSXWorksheet — referencja klasy arkusza XLSX
- TGridToXLS — komponent drop-in do eksportu DBGrid do Excel
- TDataToXLS — komponent drop-in do eksportu zestawu danych do Excel
- Wywołanie zwrotne OnUserFunction — punkt rozszerzenia niestandardowych funkcji arkusza
- Klasyczny model kolorów XLS — uzasadnienie projektu kolorów opartych na palecie i kolorów motywu
- Klasyczne dodatkowe elementy interfejsu API XLS — właściwości obliczeniowe, właściwości dokumentu, tabele przestawne i inne
- Przykłady — przegląd przykładowych projektów
- Przykład zamówienia zakupu — w pełni funkcjonalny przykład tworzenia XLS z kodem źródłowym
