HotXLS Docs

Przegląd

HotXLS Logo
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
Przykład obliczania formuły

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ą TXLSWorksheetsAddChartSheet i TXLSXChart

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ą TXLSHTMLExport i TXLSXHtmlExportOptions
  • 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
Przykład obsługi znaków Unicode

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ż