HotXLS-dokumentation

Översikt över XLSX-fasad (lxHandleX)

lxHandleX är den dedikerade fasadenheten för kalkylbladsarbetsflöden i Excel 2007+ (.xlsx) och OpenDocument Spreadsheet (.ods). Den samexisterar med den ursprungliga lxHandle-fasaden så att befintlig kod fortsätter att fungera utan några ändringar

Klasshierarki

XLSX-fasaden exponerar följande klasser

type
  TXLSXWorkbook           = class  // arbetsbok på toppnivå med SaveAs / Open
  TXLSXHtmlExportOptions  = class  // alternativ för HTML-dokument, stil, BOM och tabellklass
  TODSExportOptions        = class  // ODS-exportalternativ för generator, diagram och bildupplösning
  TXLSXSheets             = class  // kalkylbladssamling i arbetsboken
  TXLSXFonts              = class  // teckensnittspalett på arbetsboksnivå
  TXLSXFont               = class  // enskild teckensnittsbeskrivning
  TXLSXFills              = class  // fyllningspalett på arbetsboksnivå
  TXLSXFill               = class  // enskild fyllning (mönster + för- och bakgrundsfärg)
  TXLSXBorders            = class  // kantlinjespalett på arbetsboksnivå
  TXLSXBorder             = class  // fyra kanter + diagonal kantlinje
  TXLSXNumberFormats      = class  // anpassade formatkoder på arbetsboksnivå
  TXLSXDefinedNames       = class  // namngivna områden på arbetsboksnivå
  TXLSXWorksheet          = class  // enskilt kalkylblad med celler och dekorationer
  TXLSXCells              = class  // cellsamling i kalkylbladet
  TXLSXCell               = class  // enskild cell (värde, formel, *Index stilreferenser)
  TXLSXRange              = class  // rektangulärt kalkylbladsområdesomslag
  TXLSXMergedCells        = class  // samling av sammanfogade områden
  TXLSXHyperlinks         = class  // samling av hyperlänkar
  TXLSXComments           = class  // samling av cellkommentarer
  TXLSXImages             = class  // bildsamling (ritningar + media)
  TXLSXConditionalFormats = class  // regler för villkorsstyrd formatering
  TXLSXDataValidations    = class  // datavalideringsregler
  TXLSXTables             = class  // tabellsamling i Excel-stil
  TXLSXCharts             = class  // diagramsamling (förankrade eller på helsida)
  TXLSXChart              = class  // enskilt diagram (stapel / liggande stapel / linje / paj / spridning / bubbel / radar)
  TXLSXChartSeries        = class  // diagramserier med områden för kategori, värde och bubbelstorlek
  TXLSXTextBox            = class  // fristående ritad textruta på kalkylbladet
  TXLSXRichText           = class  // rich text-innehåll per körning för celler
  TXLSXAlignment          = class  // celljustering / radbrytning / indrag / rotation
  TXLSXExternalLinks      = class  // samling av externa arbetsbokslänkar
  TXLSXExternalLink       = class  // enskild extern arbetsboksreferens (mål-URL + kalkylbladsnamn)
      

Dessa klasser är oberoende av lxHandle.TXLSWorkBook och lxHandle.TXLSWorksheet. Program som behöver båda formaten kan använda båda fasaderna sida vid sida

uses
  lxHandle,   // XLS / HTML / RTF / CSV-arbetsbok (TXLSWorkBook)
  lxHandleX;  // XLSX-arbetsbok (TXLSXWorkbook)
      

Snabbstart

XLSX-fasaden följer samma anropskonventioner som BIFF-fasaden — SaveAs / Open på arbetsboken, Sheets.Add / Sheets[i] på kalkylbladssamlingen och Cells.Item[Row, Col].Value på cellsamlingen. Exemplet nedan skapar en liten arbetsbok som använder alla funktioner som för närvarande stöds

uses lxHandleX;

var
  wb: TXLSXWorkbook;
  ws: TXLSXWorksheet;
  bold, yellow, box, currency: Integer;
begin
  wb := TXLSXWorkbook.Create;
  try
    bold     := wb.Fonts.Add('Calibri', 12, True, False);
    yellow   := wb.Fills.AddSolid($FFFFFF00);
    box      := wb.Borders.AddBox(xlsxBorderThin);
    currency := wb.NumberFormats.Add('"$"#,##0.00');

    ws := wb.Sheets.Add('Demo');
    ws.Cells.Item[1, 1].Value := 'Hello';
    ws.Cells.Item[1, 1].FontIndex := bold + 1;
    ws.Cells.Item[1, 2].Value := 123.45;
    ws.Cells.Item[1, 2].NumberFormatIndex := currency + 1;
    ws.Cells.Item[2, 1].Value := Now;                 // taggad som datum
    ws.Cells.Item[2, 2].Formula := 'SUM(B1:B1)';
    ws.Cells.Item[3, 1].FillIndex := yellow + 1;      // framhäv cell
    ws.Cells.Item[3, 2].BorderIndex := box + 1;       // inramad cell
    ws.ColWidth[1] := 24;
    ws.RowHeight[1] := 28;
    ws.MergeCells(4, 1, 4, 3);
    ws.Range['A8:C10'].Merge(True);                  // sammanfoga radvis
    ws.AddHyperlink(5, 1, 'https://www.loslab.com', 'Visit losLab');
    ws.AddComment(5, 2, 'Important note', 'Kevin');
    ws.AddImageFromFile(6, 1, 'logo.png');
    ws.AddConditionalFormat('B1:B10', xlsxCfOpGreaterThan, '100');
    ws.AddListValidation('C1:C5', 'Yes,No,Maybe');
    wb.DefinedNames.Add('SalesData', 'Demo!$A$1:$B$10');
    wb.SaveAs('demo.xlsx');
  finally
    wb.Free;
  end;
end;
      

Funktioner som stöds

API:er för fasadens underordnade samlingar

Fasadens samlingsklasser hanterar villkorsstyrda format, datavalideringar, namngivna områden, bilder och tabeller. Här är kärnmedlemmarna i varje samling

Funktioner som stöds

Gemensam infrastruktur

Båda fasaderna delar en gemensam uppsättning hjälpfunktioner på lägre nivå, vilket innebär att stilbeskrivningar, hashtabeller, AVL-träd, ZIP- och XML-in/utdata, RGB-till-HLS-konverteringar och strängbyggare skrivs en gång och används av båda kodsökvägarna. De delade hjälpfunktionerna inkluderar

Se även