HotXLS-dokumentation

TXLSXRange class

Enhet: lxHandleX
Representerar ett rektangulärt XLSX-kalkylbladsområde som returneras av TXLSXWorksheet.Range, RCRange, UsedRange, EntireRow eller EntireColumn. Ett område är en lättviktsvy över sitt kalkylblad; det äger inte celldata

Declaration

TXLSXBuiltinCellStyle = (
  xbsNormal, xbsGood, xbsBad, xbsNeutral,
  xbsCalculation, xbsCheckCell, xbsExplanatoryText, xbsInput,
  xbsLinkedCell, xbsNote, xbsOutput, xbsWarningText,
  xbsHeading1, xbsHeading2, xbsHeading3, xbsHeading4, xbsTitle, xbsTotal,
  xbsAccent1, xbsAccent2, xbsAccent3, xbsAccent4, xbsAccent5, xbsAccent6);

TXLSXRange = class
  constructor Create(ASheet: TXLSXWorksheet; ARow1, ACol1, ARow2, ACol2: Integer);
  function RefA1: WideString;
  function SaveAsHTML(const FileName: WideString): Integer; overload;
  function SaveAsHTML(const FileName: WideString; Options: TXLSXHtmlExportOptions): Integer; overload;
  function SaveAsHTML(Stream: TStream): Integer; overload;
  function SaveAsHTML(Stream: TStream; Options: TXLSXHtmlExportOptions): Integer; overload;

  property Sheet: TXLSXWorksheet;
  property Row1, Col1, Row2, Col2: Integer;
  property RowCount, ColCount: Integer;

  procedure SetValue(const V: Variant);
  procedure SetFormula(const F: WideString);
  function SetArrayFormula(const F: WideString): Integer;
  procedure ClearValues;
  procedure Clear;
  procedure ClearAll;

  procedure SetFontIndex(AIdx: Integer);
  procedure SetFillIndex(AIdx: Integer);
  procedure SetBorderIndex(AIdx: Integer);
  procedure SetNumberFormatIndex(AIdx: Integer);
  procedure SetAlignmentIndex(AIdx: Integer);
  procedure SetNumberFormat(const Fmt: WideString);
  procedure SetBorders(Kind: TXLSXBorderEdgeKind; Style: TXLSXBorderStyle); overload;
  procedure SetBorders(Kind: TXLSXBorderEdgeKind; Style: TXLSXBorderStyle; Color: LongWord); overload;
  procedure SetLocked(ALocked: Boolean);
  procedure SetFormulaHidden(AHidden: Boolean);

  procedure AutoFitColumns(AMinWidth: Double = 0; AMaxWidth: Double = 0);
  procedure AutoFitRows(AMinHeight: Double = 0; AMaxHeight: Double = 0);
  procedure Merge; overload;
  procedure Merge(Across: OleVariant); overload;
  procedure Unmerge;
  function Offset(DRow, DCol: Integer): TXLSXRange;
  function Resize(NewRowCount, NewColCount: Integer): TXLSXRange;
  procedure Sort(AKeyColumn: Integer; ADescending: Boolean = False); overload;
  procedure Sort(const AKeyColumns: array of Integer; const ADescending: array of Boolean); overload;
  procedure ApplyBuiltinStyle(AStyle: TXLSXBuiltinCellStyle);
  procedure CopyTo(ADestRow, ADestCol: Integer);
  procedure MoveTo(ADestRow, ADestCol: Integer);
  procedure InsertRows;
  procedure DeleteRows;
  procedure InsertCols;
  procedure DeleteCols;
  procedure ApplyFormatPatch(ASource: TXLSXRange; AParts: TXLSXFormatParts);
  function CopyToClipboard: Boolean;
  function SaveAsPDF(const FileName: WideString): Integer; overload;
  function SaveAsPDF(Stream: TStream): Integer; overload;
  function SetDynamicArrayFormula(const F: WideString): Integer;
end;

Members

Member Description
Create(ASheet, ARow1, ACol1, ARow2, ACol2) Skapar ett nytt område som ägs av kalkylbladet och normaliserar omvända hörn så att Row1/Col1 alltid är koordinaten uppe till vänster
RefA1 Returnerar områdesreferensen som A1-text. Områden med en enda cell returnerar en enkel cellreferens som B2
SaveAsHTML Alternativ-overloaderna accepterar TXLSXHtmlExportOptions för Title, WriteDocument, IncludeStyles, IncludeBOM och TableClass. Sätt WriteDocument till False för ett tabellfragment; sätt IncludeBOM till False när utdata bäddas in i ett befintligt UTF-8-svar. Samma alternativ finns för HTML-export av markerat område. Exporterade utdata bevarar cellhyperlänkar som <a>-ankare och förankrade bilder som inline data:-bild-URI:er när de ligger inom det valda rektangelområdet. Cellkommentarer inom den valda rektangeln genereras också som escapade <td>-title-attribut. När IncludeStyles är aktiverat skrivs explicita ColWidth-värden som <col>-bredder och explicita RowHeight-värden som <tr>-högdastilar. Rich-text-cellkörningar skrivs som escapade <span>-element med inline stilar för typsnitt, färg, betoning och understrykning när IncludeStyles är aktiverat. Cellkanter skrivs som CSS-reglerna border-left, border-right, border-top och border-bottom när IncludeStyles är aktiverat. Dolda rader och kolumner markerade med RowHidden / ColHidden, plus explicita nollbreddskolumner, hoppas över i den genererade tabellen och <colgroup>. Inställningar för vertikal justering skrivs som CSS-regler för vertical-align när IncludeStyles är aktiverat
SetValue / SetFormula Skriver samma värde eller formeltext till varje cell i området via kalkylbladets cellsamling
SetArrayFormula Sätter en CSE-matrisformel över flera celler för området. Den övre vänstra cellen lagrar formeltexten och förankrar spillområdet, medan övriga celler pekar tillbaka till den roten så att varje cell utvärderar sitt eget element i matrisresultatet. Ange formeltexten utan de omgivande klamrarna
ClearValues / Clear / ClearAll ClearValues och Clear tar bort värden och formler och bevarar stilindexen. ClearAll rensar även stilindexen
SetFontIndex / SetFillIndex / SetBorderIndex / SetNumberFormatIndex / SetAlignmentIndex Tillämpar ettbaserade index i arbetsbokens palett på varje cell i området. Ange 0 för att rensa motsvarande index per cell
SetNumberFormat Slår upp eller lägger till en talformatssträng i arbetsbokens palett och tillämpar sedan det resulterande 1-baserade indexet på området. Ett tomt format rensar indexet per cell
SetBorders Bygger kantedgar över området. TXLSXBorderEdgeKind accepterar xlsxEdgeAll, xlsxEdgeOutline, xlsxEdgeInside, xlsxEdgeInsideHorizontal, xlsxEdgeInsideVertical, xlsxEdgeTop, xlsxEdgeBottom, xlsxEdgeLeft, xlsxEdgeRight, xlsxEdgeDiagonalUp och xlsxEdgeDiagonalDown. Använd ytter- och innerkantväljare för att bygga tabellkantlinjer utan att ersätta orelaterade kantinställningar
SetLocked / SetFormulaHidden Tillämpar cellskyddsflaggor på varje cell i området genom att återanvända arbetsbokens skyddsstils-pool
AutoFitColumns / AutoFitRows Vidarebefordrar till kalkylbladets autoanpassningshjälpare över områdets kolumn- eller radgränser. Valfria gränser för bredd och höjd skickas vidare för att hålla rapportlayouter inom designgränserna
Merge / Unmerge Merge och Merge(False) skapar en sammanfogad rektangel. Merge(True) skapar ett sammanfogat område per rad, i linje med Excels sammanslagning över kolumner. Unmerge tar bort en exakt matchande sammanfogning
Offset / Resize Returnerar ett annat område som ägs av kalkylbladet, flyttat från de aktuella gränserna eller ändrat till önskat antal rader och kolumner
Sort Sorterar raderna i det här området efter en nyckelkolumn eller efter flera nyckelkolumner i prioritetsordning. ADescending väljer stigande eller fallande ordning per nyckel; utelämnade poster blir stigande som standard. Tomma värden sorteras sist
ApplyBuiltinStyle Tillämpar det synliga utseendet hos en inbyggd Excel-cellstil på varje cell i området. Hjälparen skriver direkt formatering genom att lägga till motsvarande typsnitt och fyllnad i arbetsbokens pooler och tilldela de resulterande indexen till cellerna
CopyTo / MoveTo Kopierar eller flyttar hela området till målets övre vänstra cell. Värden, formler, rich-text-nyttolaster, stilindex, kommentarer, hyperlänkar och ritningsankare vidarebefordras via kalkylbladets hjälpare för kopiering och flytt av områden
InsertRows / DeleteRows / InsertCols / DeleteCols Utför infogning och borttagning av hela rader eller kolumner över områdets gränser. Dessa hjälpare vidarebefordrar till kalkylbladets skiftoperationer för rader/kolumner så att formler, referenser, filter, sidinställningsområden, diagramområden, namn, bilder och diagramankare hålls i linje med det redigerade rutnätet
ApplyFormatPatch Tillämpar valda formatstilar från ett annat källområde på det här området med TXLSXFormatParts-flaggor
CopyToClipboard Kopierar områdets värden och stilar till Windows urklipp
SaveAsPDF Exporterar cellområdet som PDF-fil eller ström med PDF-renderingsmotorn i processen
SetDynamicArrayFormula Anger en dynamisk matrisformel för området, med stöd för Excels dynamiska spillbeteende

Ownership and bounds

Områden ägs av kalkylbladet som skapade dem och frigörs med det kalkylbladet Applikationskod ska inte anropa Free on a TXLSXRange och bör inte behålla en områdesreferens efter att kalkylbladet eller arbetsboken har förstörts
Numeriska koordinater är 1-baserade. Vid skapande av område normaliseras omvända hörn och gränserna kläms till XLSX-kalkylbladets gränser

Exempel

var
  Wb: TXLSXWorkbook;
  Ws: TXLSXWorksheet;
  Body: TXLSXRange;
begin
  Wb := TXLSXWorkbook.Create;
  try
    Ws := Wb.Sheets.Add('Report');
    Body := Ws.Range['B2:D20'];
    Body.SetNumberFormat('#,##0.00');
    Body.SetBorders(xlsxEdgeOutline, xlsxBorderThin, $FF808080);
    Body.Sort(2);
    Body.ApplyBuiltinStyle(xbsAccent1);
    Ws.Range['F2:G3'].SetArrayFormula('MMULT(A2:B3,D2:E3)');
    Body.AutoFitColumns;
    Body.SaveAsHTML('report-fragment.html');
  finally
    Wb.Free;
  end;
end;

Se även