HotXLS releaseopmerkingen
Versiegeschiedenis voor zichtbare HotXLS-functies, herstelt, XLS/XLSX-verbeteringen, exportupdates, compatibiliteitswijzigingen en documentatie-updates
Laatste release
- Laatste versie: 2.136.0; Releasedatum: 2026-07-05
Versie 2.136.0
Added
- Chart axes are now fully programmable: a new
TXLSXChartAxismodel on each chart'sCategoryAxisandValueAxisexposesLogBase(logarithmic scale, e.g. 10 for base-10 log),Orientation(normal / reversed),MajorGridlines/MinorGridlines,MinValue/MaxValue(NaN = auto),MajorUnit/MinorUnit,CrossesAt,TickLblPos, andDispUnits(display units: hundreds / thousands / millions / billions / trillions). All default to Excel's auto behaviour, so existing charts emit the same XML as before; the writer adds<c:logBase>,<c:orientation>,<c:majorGridlines>,<c:majorUnit>,<c:crossesAt>,<c:tickLblPos>, and<c:dispUnits>only when the caller sets a non-default value, and reopening such a chart restores every setting
Versie 2.135.0
Added
- Chart error bars are now programmable and round-trip on the XLSX engine: each
TXLSXChartSeriesgainsAddErrorBar(dir)returning aTXLSXChartErrBarwithValueType(fixed / percentage / stdDev / stdErr / custom),Value,PlusValue/MinusValue(custom), andNoEndCap; one error-bar slot per direction (X / Y) is stored, the writer emits the matching<c:errBars>block, and reopening restores the direction, type, and magnitude so scientific / engineering charts keep their uncertainty indicators
Versie 2.134.0
Added
- Chart data labels are now programmable and round-trip on the XLSX engine: each
TXLSXChartSeriesgainsShowValue,ShowCategoryName,ShowSeriesName,ShowLegendKey,ShowPercent,ShowBubbleSize, andSeparatorproperties that emit the matching<c:dLbls>block with its<c:show*/>children; reopening such a chart restores the switches so 'show value' / 'show percent' settings survive a save-edit-save cycle
Version 2.133.0
Added
- Vector image formats EMF and WMF are now first-class image types on the XLSX engine:
TXLSXImageFormatgainsxlsxImageEmf/xlsxImageWmf, the writer emits the matchingimage/x-emf/image/x-wmfcontent types and.emf/.wmfextensions, and the format sniffer recognises EMF (01 00 00 73), placeable WMF (D7 CD C6 9A), and standard WMF headers — so images pasted from Word or PowerPoint that Excel embeds as vector data now round-trip instead of being dropped
Fixed
- BIFF8 chart substreams whose GELFRAME record (
$1066) spans the 8224-byte continuation boundary no longer lose fill/line geometry: the reader now accepts GELFRAME self-continuation (Excel writes another$1066instead of the standard$003CCONTINUE) and also lets standard CONTINUE records stitch inside chart context, matching the writer's existing multi-chunk dispatch - BIFF8 header/footer background pictures (
$0866) whose payload spans continuation records no longer corrupt: each continuation segment repeats a 14-byte MSO header that the reader now strips before concatenating, so the embedded image data is no longer shifted by 14 bytes per segment
Version 2.132.19
Fixed
- Legacy XLS and encrypted XLSX storage cleanup now releases compound-file streams deterministically, preventing temporary files from staying locked after save, load, VBA, or encrypted-package operations
- Formatted display of extended integer variant values now applies the requested number format consistently, matching the existing behavior for standard integer values
- Shared strings, data validation, chart sheets, ZIP archives, PNG drawing, and repeated text formulas now clean up temporary buffers more defensively during error paths and large text operations
Version 2.132.18
Fixed
- Internal string builder value assignment now clears previous text when assigned an empty string, preventing reused XML and text buffers from retaining stale content
Version 2.132.17
Fixed
- XLS chart sheet creation now accepts quoted source sheet names that contain an exclamation mark, rejects oversized row references before they can wrap into a valid BIFF row, and caps trendline legend names to the BIFF short-text limit so generated chart records stay well formed
Version 2.132.16
Fixed
- Internal string-key and object-key lists now remove stale lookup keys when an existing slot is overwritten, preventing old keys from resolving to replacement entries
- Internal object-list replacements and transformed unique-key caches now release owned entries on overwrite, clear, and destruction, preventing leaks during repeated workbook and style operations
Version 2.132.15
Fixed
- Direct XLSX streaming reads now decode boolean cells that store OOXML literal values such as true and false
- Internal string-list index updates now remove stale keys when an existing slot is overwritten, preventing old names from resolving to the new value
Version 2.132.14
Fixed
- BIFF8 data-validation prompt and error messages whose first character is NUL now preserve record boundaries instead of writing a mismatched DV length
Version 2.132.13
Fixed
- XML text parsing now rejects nested entity starts such as && instead of silently dropping the unfinished entity
- Decompiled formulas now write numeric constants with an invariant dot decimal separator so formula text remains portable across regional settings
Version 2.132.12
Fixed
- Palette PNG transparency now ignores transparent colors that are not present in the image palette instead of marking an arbitrary palette index as transparent
- SUMPRODUCT formulas now stop scanning remaining rows after the first out-of-used-range row in long range arguments, avoiding unnecessary cell reads while preserving the calculated result
Version 2.132.11
Fixed
- TEXT formulas now return #VALUE! when an invalid or oversized number format cannot be applied instead of being swallowed as a blank successful result
- Shared-string table truncation now frees the correct tail blocks and keeps the table reusable after large delete cycles
Version 2.132.10
Fixed
- MATCH exact lookups now honor Excel wildcards, and classic XLS row-offset metadata now ignores out-of-block rows instead of corrupting saved workbook structure
- PNG compressed text metadata now releases temporary buffers safely if chunk processing raises
Version 2.132.9
Fixed
- PNG compressed text metadata, chunk-list insertion, and CRC byte-order handling now remain stable across supported Windows platforms
Version 2.132.8
Fixed
- LEFT and RIGHT formulas now report #VALUE! when num_chars cannot be converted to a valid integer
Version 2.132.7
Fixed
- SEARCH formulas now support Excel-style ?, *, and ~ wildcards
- Worksheet name validation now rejects invalid Excel sheet-name characters when renaming sheets
- Manual page break deletion now works after inserting a break before existing breaks
Version 2.132.6
Fixed
- DATE formulas now match Excel-compatible month and day rollover behavior, including calls such as DATE(2008,14,2)
- Column-range Hidden reads now report each column's visibility instead of mixing in row visibility state
- BIFF row metadata at the Excel 97-2003 row limit now loads correctly so settings for row 65536 are preserved
Version 2.132.5
Fixed
- BIFF workbook loading now tolerates malformed worksheet tab colors, truncated pivot labels, and invalid pivot-cache date fragments without raising exceptions
- Workbook package and stream loading now cleans up failed archive and storage setup paths more consistently, avoiding leaked resources on malformed input or failed stream-backed storage opens
Version 2.132.4
Fixed
- ZIP archive handling now finalizes the current package before reusing the same archive object for another package, and file-based archive opening now allows concurrent shared readers
Version 2.132.3
Fixed
- Workbook package writing now preserves non-ASCII ZIP entry names with UTF-8 metadata, preventing mojibake when package part names contain Unicode text
- XML output now writes raw text and attribute values as UTF-8 bytes when escaping is disabled, matching the declared document encoding
- Formula evaluation now clears its in-progress state after callback exceptions and correctly handles large-number cancellation on Unicode Delphi builds
- Array-formula matrix extraction now respects non-zero Variant array lower bounds instead of raising for valid one-based arrays
Version 2.132.2
Changed
- Range sorting now uses a stable O(n log n) ordering pass for large sorted ranges, while preserving existing row content round-trip behavior
- ODS and XLSX numeric parsing and formatting now reuse invariant formatting state instead of creating it repeatedly in hot paths
Fixed
- XML parsing now accepts valid CDATA blocks and UTF-8 processing instructions without corrupting text or failing on valid markup
- Formula parsing now accepts signed scientific notation and rejects malformed or truncated formula bytes cleanly
- Classic workbook open and save paths now release streams and storages reliably after errors, preventing temporary files from remaining locked
- Binary buffer handling now validates copy and read bounds, grows destination buffers before copying, and rejects malformed VBA compression back-references cleanly
Version 2.132.1
Fixed
- Corrected the error message raised when an encrypted workbook uses an unsupported encryption scheme: it previously claimed ECMA-376 Agile Encryption could not be read, although Agile decryption (AES-128/192/256) has been supported since 2.119.0. The message now lists the actually supported schemes
- Open now points callers at TXLSXWorkbook.OpenEncrypted when it refuses an encrypted OOXML package, instead of stating that encrypted workbooks are not supported
Version 2.132.0
Changed
- XLSX loading is substantially faster: the XML reader now interns repeated element names and converts text and attribute values straight from its scan buffer, cutting per-cell memory allocations by more than half. Multi-threaded opening (2.128.0) benefits the most — the allocations removed were the ones serializing the worker threads — with multi-sheet workbooks now opening close to twice as fast as the single-threaded path on multi-core machines; single-threaded opening also gains a few percent
Version 2.131.0
Added
- Worksheet extension blocks that HotXLS does not model —
<ext>entries in a worksheet's<extLst>other than sparklines, as written by Excel for features like x14 conditional formatting or slicers — are now preserved verbatim when a workbook is opened and written back on save, so opening and resaving a file no longer strips those extensions. The captured blocks are visible read-only throughWorksheet.RawWorksheetExtsand travel with the sheet when it is copied to another workbook
Version 2.130.0
Added
- Saved workbooks that contain formulas now carry the
xl/calcChain.xmlcalculation-chain part, letting Excel seed its dependency engine from the recorded order instead of rebuilding it on load. After aRecalculatecall the chain follows the dependency graph's topological order; otherwise formula cells are listed in document order (a valid hint Excel refines on the fly). The part, its content type, and its workbook relationship are emitted together and survive open/save round-trips
Version 2.129.0
Added
- New
Workbook.ParallelParseThreadsproperty tunes the worker count for the multi-threaded Open path introduced in 2.128.0 (0 = automatic, one worker per CPU core). Worksheet parsing allocates heavily and memory allocation is serialized across threads, so on some workloads a small explicit cap performs as well as — or better than — the full core count; the property lets integrators pick what measures best for their files
Version 2.128.0
Added
- Multi-threaded XLSX loading: opening a workbook now parses each worksheet's XML — the dominant cost on large files — on worker threads, so multi-sheet workbooks open faster on multi-core machines. Sheet parts are extracted from the package up front and each worker touches only its own sheet, so the loaded workbook is identical to the serial result
- New
Workbook.ParallelParseproperty (defaultTrue) switches back to single-threaded parsing when set toFalsebeforeOpen— a one-line opt-out for constrained environments
Changed
- The
OnProgressreading callback still fires once per worksheet on the calling thread, now as each sheet is dispatched for parsing rather than strictly between sheets
Version 2.127.0
Added
- Incremental recalculation on the XLSX engine: the new
Workbook.Recalculatemethod builds a formula dependency graph, evaluates every formula cell once in dependency order, and stores each result in the cell's cached value. Subsequent calls re-evaluate only the cells affected by value changes since the last pass — on chained models (financial sheets, report cascades) editing one input recomputes just its downstream formulas instead of the whole workbook - Volatile functions (
NOW,TODAY,RAND,OFFSET,INDIRECT) recalculate on every pass, as do formulas whose references cannot be resolved statically (multi-area names, external workbooks) — the engine over-recalculates rather than risk a stale result - Reference cycles are detected instead of looping:
Recalculatereturns an error code when formulas form a circular chain, skips the cycle members, and still evaluates every formula outside the cycle. Cross-sheet references, named ranges, and CSE array formulas (results spilled across the anchored range) participate fully in the dependency graph
Changed
- The existing on-demand
Calculatepath is unchanged;Recalculateis a separate opt-in API and workbooks that never call it behave exactly as before
Version 2.126.0
Added
- Sparklines on the XLSX engine: worksheets now carry sparkline groups — the in-cell mini charts Excel renders from a data range — with the three Excel types (line, column, win/loss stacked). Create one with
Worksheet.AddSparklineGroupor build groups manually through the newWorksheet.SparklineGroupscollection, adding any number of sparklines per group with a source range and a display cell each - Sparkline groups expose the full option set Excel offers: line weight, data-point markers, high/low/negative/first/last point emphasis toggles, eight ARGB colour slots (series, negative, axis, markers, first, last, high, low), per-group or per-sparkline vertical-axis scaling, and gap/zero/span handling for empty source cells
- Sparklines survive a full save→open round-trip: saving emits the worksheet
extLstextension block ([MS-XLSX] §2.3.6) so Excel 2010 and later render the sparklines, and opening such a workbook — whether written by HotXLS or Excel — rebuilds every group, option, and range so they persist through edit cycles. Copying a sheet to another workbook clones its sparkline groups as well
Version 2.125.0
Added
- Seven DBCS byte-counting text functions from the XLSSuit gap analysis now evaluate on both engines:
LEFTB,RIGHTB,MIDB,LENB,FINDB,SEARCHB, andREPLACEB. Each treats its input as a byte string under the system ANSI code page so CJK (Chinese/Japanese/Korean) characters occupy 2 bytes while ASCII occupies 1; operations that would split a DBCS lead/trail byte pair snap back to the nearest character boundary, matching Excel's behaviour
Version 2.124.0
Added
- Five hypothesis-testing and distribution functions from the XLSSuit gap analysis now evaluate on both engines:
Z.TEST(one-tailed right-tail probability that the sample mean is at leastxunder the null hypothesis),T.TEST(paired two-sample t-test p-value; unpaired equal/unequal-variance types are deferred),CHISQ.TEST(goodness-of-fit p-value via the upper-tail chi-square CDF),HYPGEOM.DIST(hypergeometric PMF/CDF with the cumulative flag), andNEGBINOM.DIST(negative-binomial PMF/CDF). The p-value math reuses the engine's existing normal/Student-t/chi-square CDF helpers via self-contained nested routines, so no existing Calc method changes
Version 2.123.0
Added
- Fourteen formula functions that a comparison with XLSSuit identified as gaps now evaluate on both engines:
AVERAGEIF(single-criterion average, the SUMIF/COUNTIF sibling the engine was missing),WORKDAY.INTLandNETWORKDAYS.INTL(custom weekend masks via the number 1-17 codes or a 7-character Mon-Sun string),XIRRandXNPV(internal-rate-of-return and net present value for irregular-date cash flows, solved by bracketing bisection),CEILING.PRECISE/FLOOR.PRECISE/ISO.CEILING(sign-agnostic rounding),PERCENTRANK.INC/PERCENTRANK.EXC(percentile rank with the matching inclusive/exclusive interpolation),MODE.MULT(spills every value tied for the highest frequency),ERF.PRECISE(Gauss error function via its alternating series),ACCRINT(accrued interest), andISPMT(period interest for constant-principal amortization)
Version 2.122.0
Added
- Threaded comments (Excel 365) now round-trip on the XLSX engine:
AddThreadedCommentandAddThreadedReplyon a worksheet build a parent→child reply tree anchored at a cell, auto-register every author on a new workbook-levelPersonslist, and emit the dedicatedxl/threadedComments/threadedCommentN.xmlpart per sheet plus the workbook-scopedxl/person/person.xml; reopening such a package rebuilds the conversation tree and participant list from those parts, so reply chains, identifiers, and display names survive a full read→write cycle
Version 2.121.0
Added
- The formula evaluator now computes the Excel 365 dynamic-array functions
XMATCH,SORT,UNIQUE, andSEQUENCE, joining the already-supportedXLOOKUPandFILTER; results spill as 2-D arrays soSEQUENCE(3;2;1;1)returns a 3×2 grid,SORTreorders rows by any key column ascending or descending,UNIQUEcollapses duplicate rows keeping the first occurrence, andXMATCHreports the 1-based position of a lookup value with the same exact/wildcard/next-smaller/next-larger match modes asXLOOKUP
Version 2.120.0
Added
- New
PasteFromClipboardmethod on both engines' worksheets reads tab-delimited text off the Windows clipboard — the payload Excel places there when a range is copied, or a plain selection from any other application — and writes it into cells starting at the given row and column, with the same number/date/boolean type promotion the CSV loader already uses; leading=text becomes a live formula, matching how Excel itself pastes
Version 2.119.0
Added
- Reading of ECMA-376 Agile Encryption — the password protection Excel 2010 and later apply by default:
OpenEncryptednow parses the XML encryption descriptor, derives the keys with SHA-512 spin-count hashing, verifies the password, and decrypts the AES-CBC segmented package (AES-128/192/256), so workbooks password-protected directly in Excel open without Excel installed OpenEncryptedhandles all three cases through one entry point: plain unencrypted.xlsx, Standard Encryption (ourSaveAsEncryptedround trip), and Agile Encryption; a wrong password raises the same clear error in every scheme
Fixed
- Saving an
.xlsxworkbook whose worksheet XML exceeded roughly 116 KB — about 3,000 rows of typical string data — crashed with a stack overflow; the ZIP writer's CRC-32 checksum now processes data in 64 KB slices, which keeps the compression backend off its large-input code path that allocates an oversized scratch buffer on the stack. The checksum result is unchanged
Changed
- Shared-string deduplication now runs through a hash table instead of scanning the string list, and the
sharedStrings.xmlpart is assembled through the pre-grown string builder instead of repeated concatenation — together with the constant-time cell index this brings saving 120,000 string cells from tens of seconds down to about a third of a second
Versie 2.117.0
Gewijzigd
- XLSX cel access is now constant-time: werkblad cel collectie carries hash index over (rij, kolom), replacing previous linear scan — so populating, reading back, van loading large blad scales linearly met cel count instead van quadratically; filling 100,000 cellen now takes well under second where it previously took minutes
- speedup applies across engine:
Cells[r, c],HasCell, werkmap loading, saving, cross-werkmap copies, auto-fit, en elke helper dat touches cellen door position all benefit; rij en kolom insertion van deletion rebuilds index in single pass
Versie 2.116.0
Toegevoegd
- PDF export in het klassiek XLS engine: new
SaveAsPDFmethoden on werkblad en werkmap render gebruikt bereik (van caller-supplied bereik viaTXLSPDFExport) as paginated grid — cel display tekst via number indeling, gridlines, kolom widths derived van Excel widths en scaled naar fit pagina, en automatic multi-pagina pagination - Output is self-contained PDF 1.4 bestand met no external dependencies, met built-in Helvetica lettertype met WinAnsi tekst encoding; portrait van landscape A4 orientation, pagina margin, en lettertype size zijn configurable on exporter
- deze is data-presentation export alongside HTML en RTF: it reproduces tabular content en layout voor reports en document handoff rather than full per-cel styling
Versie 2.115.0
Toegevoegd
- één-call chart creation van data bereik in het XLSX engine: new
AddChartFromRangebuilds complete chart en derives its series automatically van rectangular data block — equivalent van Excel's "insert chart van selection" — met series-in-kolommen van transposed series-in-rijen layout - Named shortcuts
AddColumnChart,AddBarChart,AddLineChart,AddPieChart, enAddAreaChartpick chart type door naam over same één-call flow, reading series names van header rij en category labels van first kolom - Series references zijn qualified met source blad's quoted naam, so generated chart keeps working wanneer placed on any blad en survives save en reload
Versie 2.114.0
Toegevoegd
- RTF import in het klassiek XLS engine, inverse van de bestaand
SaveAsRTFexport: newOpenRTFmethoden on werkblad en werkmap read RTF document's table naar werkblad cellen —\celladvances kolom,\rowadvances rij — starting at A1 - Recovers tabular data van bestanden produced door
SaveAsRTF, Word, van WordPad: numeric tekst is stored as nummers so formules keep working, hex (\'hh) en Unicode (\uN) escapes decode correctly, en header groups (lettertype table, kleur table, stylesheet, info) zijn skipped - Documents met no table fall back naar paragraph mode, importing each
\paras next rij in kolom
Versie 2.113.0
Toegevoegd
- Reading van encrypted
.xlsxwerkmappen:OpenEncryptednow decrypts ECMA-376 Standard Encryption (AES-128) packages, completing round trip met bestaandSaveAsEncrypted— it reads compound-bestand container, derives key van wachtwoord, verifies it, en loads recovered werkmap - wrong wachtwoord raises clear "wachtwoord is incorrect" error, en
OpenEncryptedon plain unencrypted.xlsxcontinues naar load it directly, so callers kan route elke bestand via één item point
Gewijzigd
- unsupported-encryption message now names ECMA-376 Agile Encryption specifically as remaining unsupported scheme, since Standard Encryption reading en writing zijn both beschikbaar
Versie 2.112.0
Toegevoegd
- New
TaggedTexteigenschap on XLSX cellen converts between rich tekst en lightweight markup:<b>,<i>,<u>,<s>,<sub>,<sup>,<color=#RRGGBB>,<font=Name>, en<size=N>, met</>/&escapes — so multi-indeling cel content kan be produced van template String instead van assembling run objecten door hand - Writing markup builds run list en keeps
Valueas concatenated plain tekst; markup zonder tags stores plain String met no rich payload; reading serializes each run's attributes as complete tag stelt in; unknown tags pass via as literal tekst
Opgelost
- rich-tekst run consisting entirely van whitespace (voor example single styled space between words) now survives save en reload; previously space was dropped wanneer bestand was reopened
Versie 2.111.0
Toegevoegd
- New
OnProgressgebeurtenis on XLSX werkmap reports load en save progress: it fires once per werkblad as it is parsed duringOpenvan emitted duringSaveAs, carrying phase (reading van writing), current 1-gebaseerd blad number, en total — so applications kan drive progress bar over long multi-blad operations at negligible callback cost
Versie 2.110.0
Toegevoegd
- New
TXLSRowCursordataset-stijl rij cursor voor.xlsx/.xlsmbestanden:Open,SelectSheet, thenFindFirst/FindNextwalk werkblad één rij at time met alleen current rij's cellen in memory — pull-driven alternative naarTXLSDirectReader's callbacks voor sequentially processing multi-million-rij bladen - Each rij exposes its 1-gebaseerd werkblad rij number, populated cellen in document order (getypeerd waarde, formule tekst, stijl index), en
ValueByCollookup dat retourneertNullvoor kolommen not populated on dat rij; rijen met no populated cellen zijn skipped - blad names en count zijn beschikbaar after
Open(bestand en stream overloads), met shared strings en date-indeling detection handled same way as streaming reader
Versie 2.109.0
Toegevoegd
- New
TXLSXCellFormat"indeling brush" voor XLSX engine: describe lettertype, fill, rand, alignment, number indeling, en protection once, then stamp any number van targets metApply(single cel),ApplyRange,ApplyRows,ApplyCols, vanApplySheet - alleen aspects actually touched zijn applied — brush dat stelt in just
Font.Boldleaves targets' fills, randen, en number indelingen untouched — so brushes compose met bestaand formatting like Excel's indeling painter - Each apply resolves touched aspects naar werkmap stijl pools once en then writes alleen pool indices per cel, so formatting large bereiken costs één pool lookup per aspect rather than per cel;
ApplyRangematerializes missing cellen terwijl rij/kolom/blad forms stamp bestaand cellen alleen
Versie 2.108.0
Toegevoegd
- Localizable Boolean display tekst: new
XLSBooleanTrueText/XLSBooleanFalseTextvariables control how Boolean cel waarden render wherever display tekst is produced —FormattedText, HTML export, en auto-fit measurement — so localized applications kan show voor example WAHR/FALSCH van VRAI/FAUX
Gewijzigd
- Boolean cellen now display as
TRUE/FALSEdoor default, matching Excel's grid, instead van de runtime'sTrue/Falsecapitalization
Versie 2.107.0
Toegevoegd
- New
OnPasswordgebeurtenis on klassiek XLS werkmap: wanneerOpenmeets encrypted werkmap en supplied wachtwoord is missing van wrong, gebeurtenis asks application voor wachtwoord en retries open (up naar three attempts) — so interactive tools kan prompt user instead van pre-loading passwords van inspecting error codes - gebeurtenis receives current wachtwoord door referentie en
Retryflag; leavingRetryatFalsegives up en retourneert original wachtwoord error
Versie 2.106.0
Toegevoegd
- New
TXLSFileMonitorklasse watches werkmap bestand on disk en firesOnFileChangedwanneer another process — typically Excel — saves over it, so applications kan reload en refresh their view automatically - Polling-gebaseerd (last-write time plus size,
IntervalMsconfigurable, 1 s default), so it works on local disks en network shares alike zonder message loop;SynchronizeEventchooses between main-thread delivery voor UI handlers (default) en direct watcher-thread delivery voor console van service code - bestand dat briefly disappears during save cycle does not fire false gebeurtenis; change is reported once new content is in place
Versie 2.105.0
Toegevoegd
- Bounded auto-fit in het klassiek XLS engine, matching limits XLSX engine already offers: new
AutoFit(Columns, AMin, AMax),ColumnsAutoFit(AMinWidth, AMaxWidth), enRowsAutoFit(AMinHeight, AMaxHeight)overloads clamp elke fitted kolom breedte (Excel breedte units) van rij hoogte (points) naar given bereik — 0 leaves side unbounded, en all-empty kolom van rij still receives requested minimum
Versie 2.104.0
Toegevoegd
- New Alleen-lezen
FormattedTexteigenschap Retourneert een cel's display tekst — stored waarde rendered via its number indeling, way Excel shows it in het grid — covering thousands separators, decimals, percentages, date en time masks, multi-section positive/negative/zero masks, en Boolean indelingen - beschikbaar in both engines: on
IXLSRangein het klassiek XLS engine (multi-cel bereiken render their anchor cel) en onTXLSXCellin het XLSX engine (rich-tekst cellen retourneren their concatenated run tekst)
Versie 2.103.0
Toegevoegd
- New
DetectExcelContentFormatfunctie (bestand naam en stream overloads) identifies werkmap's container van its leading bytes rather than bestand extension — reporting BIFF/OLE compound bestand, OOXML.xlsxpackage, OpenDocument.odspackage, van plain delimited tekst — so applications kan route renamed van extension-less bestanden naar right loader
Gewijzigd
TXLSWorkbook.Opennow sniffs content signature en rejects ZIP-gebaseerd packages (.xlsxvan.odsrenamed naar.xls) met clear message naming right loader, instead van failing met opaque error codeTXLSXWorkbook.Opennow recognizes OLE compound-bestand content (legacy.xlsrenamed naar.xlsx, van encrypted package) en reports what bestand actually is, instead van surfacing ZIP parser error
Versie 2.102.0
Toegevoegd
- Cross-werkmap werkblad copy in het klassiek XLS (BIFF8) engine now brings werkmap-level defined names formule uses over naar destination — same thing Excel does wanneer blad moves between werkmappen: naam destination already has is bound as-is (no duplicate is created), missing naam is registered met its original definition en visibility so formule recompiles against it, en naam whose definition cannot resolve in het destination (voor example, it points at blad dat does not exist there) leaves formule on its computed waarde as before
Versie 2.101.0
Toegevoegd
- Cross-werkmap werkblad copy in het klassiek XLS (BIFF8) engine now re-points formules at source werkmap as external link wanneer destination has no blad van de referenced naam en source has been saved naar bestand: copied cel stays live formule (its references switch naar [SourceBook]blad form), source's computed waarde is kept as cached result so reads keep working until link is refreshed, en external werkmap referentie round-trips via save en reload; formules carrying defined-naam references, en copies van unsaved source werkmappen, keep computed waarde as before
Versie 2.100.0
Toegevoegd
- Array formules now survive werkblad copies in het klassiek XLS (BIFF8) engine: each array bereik is rebuilt as whole in het copy — within same werkmap en across werkmappen alike — met root formule recompiled against destination's blad names; array destination cannot recompile keeps its computed waarden instead
Opgelost
- Copying bereik dat bevat array-formule cellen between klassiek XLS werkbladen no longer risks crash on spill cellen (which carry no formule tree van their own); such cellen now transfer their computed waarde
Versie 2.99.0
Toegevoegd
- Chart bladen kan now be copied between klassiek XLS (BIFF8) werkmappen: chart record stream is cloned naar destination, series category / waarde / naam references zijn recompiled against destination's blad names (series whose blad has no same-naam counterpart falls back naar empty referentie so bestand still opens), chart lettertype references migrate door waarde naar destination lettertype table, en pagina setup, tab kleur, zoom, en visibility van de chart blad come along; deze removes last documented limitation van de cross-werkmap werkblad copy
Versie 2.98.0
Toegevoegd
- Cross-werkmap werkblad copy in het klassiek XLS (BIFF8) engine now preserves rich-tekst formatting inside cellen: each formatting run's lettertype is migrated door waarde naar destination werkmap's lettertype table en run is rewritten naar point at it, so mixed-lettertype strings keep their appearance instead van falling back naar plain tekst; phonetic (Far-East) auxiliary data travels met String as well
Opgelost
- lettertypen referenced alleen door rich-tekst runs (en not door any cel indeling) zijn no longer dropped van lettertype table wanneer saving klassiek XLS werkmap, en runs now follow same lettertype reordering as cel indelingen on save, so rich-tekst strings keep correct lettertypen after save/reload cycle
Versie 2.97.0
Toegevoegd
- Cross-werkmap werkblad copy in het klassiek XLS (BIFF8) engine now also clones embedded pictures: image bytes migrate naar destination werkmap's picture store (identical images zijn shared rather than duplicated), en each picture frame keeps its cel anchor, size, visibility, en transparent kleur; new CrossWorkbookCopyXls sample project demonstrates klassiek-engine copy end naar end
Gewijzigd
- klassiek XLS cross-werkmap copy limitations zijn now documented: chart bladen zijn not copied (AddCopy retourneert nil voor them), en formule whose blad referentie has no same-naam blad in het destination keeps source's computed waarde instead van becoming external referentie
Versie 2.96.0
Toegevoegd
- Cross-werkmap werkblad copy in het klassiek XLS (BIFF8) engine now also clones conditional indelingen (cel-is en expression rules, data bars, kleur scales, icon stelt in, en their differential styles), data validations (list, numeric, date, tekst-length, en custom rules met prompt en error boxes), AutoFilter definition met its per-kolom criteria (dropdown buttons zijn rebuilt in het copy), en tabellen (ids en names zijn re-issued so they stay unique in het destination werkmap); rule formules zijn recompiled against destination's blad names, matching behavior van cel formules
Versie 2.95.0
Toegevoegd
- klassiek XLS (BIFF8) werkbladen kan now be copied van één werkmap naar another: TXLSWorksheets.AddCopy voegt toe new blad naar destination werkmap en copies source blad's cel waarden, formules (re-encoded as tekst so destination recompiles them against its own blad names, keeping same-naam 3D references live), merged cellen, opmerkingen, hyperlinks, rij heights, kolom widths, outline levels, frozen panes, blad protection, pagina setup, manual pagina breaks, tab kleur, en view settings; cel, rij, en kolom indelingen zijn migrated door waarde naar destination werkmap's indeling table, so styled source produces independently styled copy
- Cross-werkmap indeling migration in het klassiek XLS engine now carries full-precision RGB en thema kleuren alongside each indeling item, so fills, lettertypen, en randen keep their exact kleuren instead van falling back naar palette approximations; deze also applies naar bereik-level paste between werkmappen
Versie 2.94.0
Toegevoegd
- Cross-werkmap werkblad copy now clones conditional indelingen (met their differential styles en dataBar / colorScale / iconSet visual payloads), tabellen, data validations, en charts (met elke series); each sub-object deep-copies its own state naar destination werkblad
- Cross-werkmap formule references zijn rewritten: referentie whose blad naam exists in het destination resolves as-is, otherwise it becomes external referentie back naar source werkmap (which is registered as external link) van #REF! wanneer source has no bestand identity; rewrite applies naar cel formules, conditional-indeling rules, data-validation formules, en chart series bereiken alike
Versie 2.93.0
Toegevoegd
- werkblad kan now be copied van één werkmap naar another: TXLSXSheets.AddCopy voegt toe new blad naar destination werkmap en copies source blad's cellen, formules, merged bereiken, kolom/rij sizing, hidden/collapsed/outline flags, freeze panes, view state, protection, pagina setup, AutoFilter bereik, en tab colour onto it; six per-cel stijl indices zijn remapped naar destination werkmap's own lettertype/Fill/rand/NumberFormat/Alignment/Protection pools via waarde-equality lookup, so styled source produces independently-styled copy rather than indices pointing at wrong pool
- six per-attribute stijl pools (lettertypen, Fills, randen, NumberFormats, Alignments, Protections) each expose 1-gebaseerd LookupOrAdd dat deduplicates door waarde; new CrossWorkbookCopy sample project demonstrates cross-werkmap copy met stijl behoud
Versie 2.92.0
Toegevoegd
- XLSX werkmappen now ondersteuning draaitabellen: TXLSXWorksheet.AddPivotTable scans flat source bereik, auto-builds pivot cache, en Retourneert een getypeerd draaitabel voor rij / kolom / pagina / data-axis wiring, mirroring long-standing BIFF8 (XLS) engine API so same code targets either indeling; PivotSetDataFieldFormat assigns number indeling naar each aggregated waarde field
- Excel-created draaitabellen heen-en-terug zonder loss via Open then Save: XLSX engine preserves each pivot cache definition, cache records, en draaitabel part verbatim en replays original bytes on save, so re-saving werkmap never drops van alters its pivots even wanneer they use functies getypeerd model does not expose
Versie 2.91.0
Toegevoegd
- Een werkblad-AutoFilter kan nu worden toegepast op de gegevens, zodat de opgeslagen werkmap opent met de niet-overeenkomende rijen al verborgen, wat overeenkomt met wat Excel doet wanneer een waarde wordt gekozen uit de filtervervolgkeuzelijst
- Ingesloten afbeeldingen stellen hun geometrie bloot in echte eenheden (centimeters, inches, punten) naast de EMU-waarden, en kunnen worden vergroot of verkleind met een schaalfactor met optionele aspectratio-vergrendeling
- Pagina-instelling marges kunnen direct in centimeters worden ingesteld, als een metrisch gemak bovenop de inch-gebaseerde marges
- Beveiligde XLSX-werkbladen bieden nu vijftien fijnmazige machtigingsschakelaars (cellen opmaken, rijen en kolommen invoegen/verwijderen, sorteren, AutoFilter, vergrendelde/ontgrendelde cellen selecteren en meer) via een nieuwe AllowOption-eigenschap, overeenkomend met Excel's Controleren > Blad beveiligen selectievakjes; de instellingen per actie maken een retourvlucht door het bestand
- XLSX-werkbladen kunnen nu worden gedupliceerd (TXLSXSheets.Duplicate): een nieuw blad wordt toegevoegd en de cellen, samengevoegde bereiken, kolom-/rijgrootte, bevroren deelvensters, weergavestatus, beveiliging, pagina-instelling en tabkleur van de bron worden ernaartoe gekopieerd, in navolging van Excel's rechtermuisklik > Verplaatsen of kopiëren > Een kopie maken
- Tweeëntwintig nieuwe voorbeeldprojecten behandelen mogelijkheden die de bibliotheek ondersteunt: werkmapversleuteling, celopmerkingen, hyperlinks, gedefinieerde namen, AutoFilter-evaluatie, ingesloten afbeeldingen, een factuursjabloon, geavanceerde XLSX voorwaardelijke opmaak, samengevoegde cellen, rij-/kolomoverzicht, bevroren deelvensters, lay-out met meerdere bladen, matrixformules, bereik kopiëren/verplaatsen, zoeken/vervangen, datumsystemen, rijke tekst, geavanceerde CSV, HTML-exportopties, aangepaste getalnotaties, verborgen rijen/kolommen en werkbladbeveiliging
Versie 2.90.29
Gewijzigd
- De streaming directe lezer telt nu elke gevulde cel, zelfs wanneer er geen handler per cel is gekoppeld, zodat een eenvoudige ReadFile-aanroep kan worden gebruikt om snel de grootte van een werkblad te bepalen; het geretourneerde aantal en de eigenschap CellCount rapporteren het aantal gescande gevulde cellen
Versie 2.90.28
Toegevoegd
- Formules kunnen nu stap voor stap worden geëvalueerd, het equivalent van de Excel-opdracht 'Formule evalueren': een nieuwe tracer verkleint een expressie één substap per keer, te beginnen bij de binnenste, en rapporteert elke verkleining met de oorspronkelijke sub-expressie, dezelfde sub-expressie nadat de operanden zijn vervangen door hun waarden, en de resulterende waarde, zodat toepassingen kunnen laten zien hoe een resultaat wordt opgebouwd; het respecteert de prioriteit van operators, houdt bereikverwijzingen intact voor functies zoals SUM, en hergebruikt de rekenmachine van het werkblad zodat elke stap overeenkomt met een volledige herberekening
Versie 2.90.27
Toegevoegd
- XLSX-werkmappen kunnen nu cel voor cel worden geproduceerd via een nieuwe streaming directe schrijver die elk werkblad rechtstreeks in het pakket uitzendt naarmate er rijen binnenkomen, zonder een volledige celboom in het geheugen op te bouwen, waardoor zeer grote bestanden kunnen worden gegenereerd met een vrijwel constante geheugenvoetafdruk; de schrijver verwerkt inline tekenreeksen, getallen, booleans, datums en formules over meerdere bladen en werkt samen met de streaming directe lezer
Versie 2.90.26
Toegevoegd
- XLSX-werkmappen kunnen nu cel voor cel worden gescand via een nieuwe streaming directe lezer die gebeurtenissen per cel en per blad genereert zonder een volledige celboom in het geheugen op te bouwen, waardoor de geheugenvoetafdruk vrijwel constant blijft voor zeer grote bestanden; elke gerapporteerde cel bevat zijn waarde, type (getal, tekenreeks, boolean, datum of fout), formletekst en stijlindex, met optionele datumdetectie en ondersteuning voor vroegtijdig afbreken
Versie 2.90.25
Toegevoegd
- Klassieke XLS-werkbladen kunnen nu hyperlinks toevoegen vanaf A1-stijl celverwijzingen met behoud van URL-normalisatie, subadressen van werkmapdoelen, weergavetekst en schermtips
Versie 2.90.24
Toegevoegd
- Klassieke XLS-pagina-einden kunnen nu worden toegevoegd vanaf 1-gebaseerde rij- of kolomposities en A1-stijl celverwijzingen via pagina-einde-collectie en werkblad-helper-overloads
Versie 2.90.23
Toegevoegd
- Klassieke XLS-werkbladen en vormencollecties kunnen nu rechthoek-, ovaal-, lijn- en getypeerde autovorm-tekenobjecten maken van A1-stijl bereiktekenreeksen
Versie 2.90.22
Toegevoegd
- Klassieke XLS-vormencollecties kunnen nu tekstvakken maken van A1-stijl bereiktekenreeksen via een AddTextBox-overload
Versie 2.90.21
Toegevoegd
- Klassieke XLS-tekstvakken kunnen nu worden verplaatst vanaf A1-stijl bereiktekenreeksen via een nieuwe SetArea-overload
Versie 2.90.20
Toegevoegd
- Klassieke XLS-werkbladtekstvakken kunnen nu worden gemaakt van A1-stijl bereiktekenreeksen via een AddTextBox-overload
Versie 2.90.19
Toegevoegd
- Klassieke XLS-werkbladen kunnen nu direct teken-tekstvakken maken van rij- en kolomankers via een nieuwe AddTextBox-methode
Versie 2.90.18
Toegevoegd
- Klassieke XLS-werkbladen kunnen nu celopmerkingen direct maken van rij- en kolomcoördinaten via nieuwe AddComment-overloads
Versie 2.90.17
Toegevoegd
- Klassieke XLS-gedefinieerde namen kunnen nu worden gemaakt van een werkbladnaam en rij/kolomcoördinaten via nieuwe Names.Add-overloads
Versie 2.90.16
Toegevoegd
- Klassieke XLS-afbeeldingsinvoeging kan nu bestand- en TBitmap-afbeeldingen in een opgegeven werkbladcel plaatsen zonder de huidige selectie te wijzigen
Versie 2.90.15
Toegevoegd
- Klassieke XLS-autofilterkolommen kunnen nu worden gevonden op veldindex via de AutoFilterColumns-collectie
Versie 2.90.14
Toegevoegd
- Klassieke XLS-gedefinieerde namen kunnen nu worden gelokaliseerd via een werkbladcel door nieuwe FindByCell-overloads op de Names-collectie
Versie 2.90.13
Toegevoegd
- Klassieke XLS-bereiken ondersteunen nu het maken van een opmerking met tekst en auteur in een enkele AddComment-aanroep
Versie 2.90.12
Toegevoegd
- Klassieke XLS-opmerkingen bieden nu een Author-eigenschap voor het instellen en lezen van de opgeslagen opmerkingauteur via de getypeerde API
Versie 2.90.11
Opgelost
- Klassieke XLS-bereikkopie behoudt nu gekopieerde opmerkingauteurs samen met de opmerkingtekst
Versie 2.90.10
Opgelost
- Klassieke XLS AddHyperlink bewaart nu werkbladceldoelen als interne subadressen in plaats van externe bestandspaden
Versie 2.90.9
Opgelost
- Klassieke XLS-bereikkopie behoudt nu celhyperlinks op de bestemming, inclusief adres, scherminfo en weergegeven tekst
Versie 2.90.8
Opgelost
- XLS- en XLSX-hyperlinks normaliseren nu kale www-adressen naar absolute http-URL's vóór het opslaan, met behoud van de weergegeven tekst
Versie 2.90.7
Opgelost
- Klassieke XLS ApplyAutoFilter negeert nu veldindexen buiten het bereik vóór het herbouwen van het filterbereik, waardoor bestaande criteria behouden blijven in plaats van ze te wissen
Versie 2.90.6
Opgelost
- Klassieke XLS-grafiekreeksen weigeren nu grafiekblad-zelfverwijzingen hoofdletterongevoelig, wat ongeldige Area3D-gegevensbronnen voorkomt wanneer het hoofdlettergebruik van de bladnaam verschilt
Versie 2.90.5
Opgelost
- Klassieke XLS-grafiekbladen gebruiken nu de normale werkbladnaambeveiliging bij het toepassen van aangepaste grafiekbladnamen, waardoor dubbele namen die alleen in hoofdletters verschillen worden voorkomen
Versie 2.90.4
Opgelost
- Klassieke XLS-draaitabellen komen nu hoofdletterongevoelig overeen met de namen van bronwerkbladen bij het maken of hergebruiken van draaitabelcaches
Versie 2.90.3
Opgelost
- Klassieke XLS-werkbladhernoeming weigert nu hoofdletterongevoelige duplicaten, waardoor de opzoekfunctionaliteit na een hernoeming eenduidig blijft
Versie 2.90.2
Opgelost
- Klassieke XLS-werkbladnaamopzoeking is nu hoofdletterongevoelig over SheetByName, TryGetSheetByName, Index en IDByName
Versie 2.90.1
Opgelost
- Klassieke XLS-gedefinieerde naamopzoeking is nu hoofdletterongevoelig, zodat namen die via de werkmap Names-collectie worden opgelost consequent werken na opslaan en heropenen
Versie 2.90.0
Gewijzigd
- INGRIJPENDE WIJZIGING — de XLSX-werkbladcollectie is nu 1-gebaseerd.
Workbook.Sheets[i],Sheets.IndexByNameen de integer-eigenschapActiveSheettellen nu van 1, overeenkomstig met de XLS-engine, zodat het eerste werkbladSheets[1]is in plaats vanSheets[0]; de positionele hulpfunctiesActiveIndex,Activate,Moveen het bladindexargument vanSaveAsCSV/SaveAsHTML/SaveAsRTFblijven 0-gebaseerd - INGRIJPENDE WIJZIGING — FreezePanes krijgt de rij eerst op beide engines. De XLS- en XLSX-engines delen nu
FreezePanes(ARow, ACol); de XLSX-methodeFreezePane(ACol, ARow)en de XLS-overload met omgekeerde twee argumenten zijn verwijderd, zodat een aanroep die N kolommen en M rijen bevroor zijn twee argumenten moet omwisselen - INGRIJPENDE WIJZIGING — de XLS-werkbladklassen zijn hun misleidende I-voorvoegsel kwijtgeraakt.
IXLSWorksheetenIXLSWorkSheetswordenTXLSWorksheetenTXLSWorksheets(het waren altijd klassen, nooit interfaces); de echte interfacesIXLSWorkbookenIXLSRangeblijven ongewijzigd - INGRIJPENDE WIJZIGING — de XLS-gegevensvalidatie-operator-enum is hernoemd. De leden van
TXLSDvOperatorveranderen vanxlsDv...naarxlsDvOp...(bijvoorbeeldxlsDvOpBetween), zodat ze niet langer een voorvoegsel delen met de validatietype-enum en aansluiten bij de XLSX-namenxlsxDvOp...
Versie 2.89.46
Opgelost
- Aangepaste thema's overleven een XLSX-retourvlucht. Een werkmap openen die een eigen thema meedraagt en opnieuw opslaan behoudt dat thema in plaats van het te vervangen door het ingebouwde Office-thema, zodat op thema gebaseerde kleuren niet langer stilzwijgend worden overschreven
- Overlappende samengevoegde gebieden worden geweigerd. Het samenvoegen van een celbereik dat een bestaand samengevoegd gebied doorsnijdt, wordt nu geweigerd in plaats van overlappende vermeldingen te schrijven die Excel ertoe brengen het opgeslagen bestand als beschadigd te melden
- Een datum die als celwaarde is geschreven, wordt weergegeven als datum. Het toewijzen van een datum of tijd aan een cel die nog het Algemeen-getalformaat heeft, past nu een standaard datumopmaak toe, zodat het in Excel als datum wordt weergegeven in plaats van als ruw serienummer; een getalopmaak die u zelf hebt ingesteld, blijft ongewijzigd
Beveiliging
- Diep geneste formules kunnen de stapel niet langer uitputten. De .xls-formule-lezer beperkt hoe diep formule-tokens mogen nesten, zodat een misvormde of kwaadaardige werkmap met extreme nesting wordt geweigerd in plaats van een crash te riskeren
Versie 2.89.45
Opgelost
- ZIP-vermeldingsnamen gemarkeerd als UTF-8 worden correct gelezen. Wanneer een archief een lid-naam als UTF-8 markeert (algemeen-doel-bit 11), wordt de naam gedecodeerd als UTF-8 in plaats van de lokale codepagina van het archief
- Letterlijke foutcellen in .xls worden bewaard. Een cel die direct is opgeslagen als foutwaarde (een BOOLERR-record met de foutvlag ingesteld) behoudt zijn foutcode in plaats van leeg terug te worden gelezen
- Het versleutelen van een pakket groter dan 2 GB mislukt netjes. Standaardversleuteling weigert een te grote payload in plaats van zijn 32-bits grootterekening te laten overlopen
Versie 2.89.44
Opgelost
- ODS-formule-export behoudt gedefinieerde namen intact. Een gedefinieerde naam die lijkt op een celverwijzing (bijv.
TaxRate2) wordt niet langer herschreven als een ongeldig ODF-celadres, en het parseren van_xlnm.Print_Titlessplitst een bladnaam die een komma bevat niet langer - ODS-import is veilig voorbij de laatste kolom. Een rij waarvan de herhaalde opgemaakte-tekst-cellen zich uitstrekken voorbij de laatste werkbladkolom, hergebruikt geen vrijgegeven rijke-tekst-prototype meer
Versie 2.89.43
Opgelost
- RTF-export behoudt niet-ASCII-tekst. Celtekst wordt geschreven met
\uUnicode-escapetekens en de koptekst geeft een codepagina aan, zodat CJK- / Cyrillische / geaccentueerde tekens intact worden geëxporteerd in plaats van te worden samengevouwen tot "?" op basis van de codepagina van de schrijver - Het meerpagina's HTML-navigatieframe escapet bladnamen. Bladnamen op de index-/framesetpagina zijn HTML-ge-escaped en niet-ASCII-tekens worden numerieke tekenverwijzingen, zodat een tabblad met opmaaktekens of niet-ASCII-letters correct wordt weergegeven
Versie 2.89.42
Opgelost
- Getallen in wetenschappelijke notatie in formules worden geparseerd. Een letterlijk getal zoals
1E3of2.5E-3in een formule wordt nu getokeniseerd als één getal in plaats van een getal gevolgd door een zwervende naam - SEARCH is Unicode-veilig. De hoofdletterongevoelige SEARCH-functie voudt hoofdletters niet langer via de ANSI-codepagina, zodat niet-ASCII-zoekopdrachten / binnen-tekst-overeenkomsten op de juiste tekenpositie plaatsvinden
Versie 2.89.41
Opgelost
- Het datumsysteem van 1904 wordt toegepast op XLSX-celdatums. Het lezen of schrijven van een werkmap die de Mac-datumbasis van 1904 gebruikt, verschuift nu datumserienummers met 1462 dagen, zodat datums in dergelijke werkmappen overeenkomen met Excel in plaats van ongeveer vier jaar af te wijken
Versie 2.89.40
Opgelost
- Datums in XLSX-bestanden van derden worden geladen als datums. Een cel waarvan de stijl een ingebouwd of aangepast datum/tijd-getalopmaak gebruikt — niet alleen de eigen datumstijl van HotXLS — wordt nu teruggegeven als datumwaarde in plaats van als ruw serienummer, inclusief de CJK-locale datum/tijd-indelingen
Versie 2.89.39
Opgelost
- Datum-getalformaten worden nauwkeuriger herkend. Een opmaakcode wordt alleen als datum/tijd herkend door niet-ge-escaped datumtokens buiten tekenreeksliteralen en haakjessecties, zodat een letterlijke waarde zoals
#,##0 "MM"niet langer als datum wordt behandeld en enkeletekencodes zoalsm/dniet langer worden gemist - ZIP-archieven met een grote opmerking lezen hun einde-van-directory-record correct. Het einde-van-centraal-directory-record wordt alleen uit de scanbuffer geparseerd wanneer het volledig is vastgelegd, en anders opnieuw uit het bestand gelezen, waardoor een mogelijke verkeerde lezing wordt verholpen wanneer een opmerking het record over het scanvenster splitst
Versie 2.89.38
Opgelost
- Versleuteld XLSX geschreven met Standaardversleuteling opent nu in Excel. Het versleutelde pakket wordt versleuteld met AES-128 in ECB-modus zoals het formaat vereist, in plaats van CBC, wat alles na het eerste blok onleesbaar had achtergelaten
- Wachtwoordbeveiligd BIFF8 (.xls) RC4-ontsleuteling is gecorrigeerd. De sleutelstroom wordt nu opnieuw gekeyed en verbruikt in stap met de stroompositie, zodat een correct wachtwoord de werkmaptekst ontsleutelt in plaats van verminkte cellen te produceren
Versie 2.89.37
Opgelost
- Het verwijderen van een werkblad houdt gedefinieerde namen consistent. Het verwijderen van een blad verwijdert nu werkmap-gedefinieerde namen die daaraan zijn gekoppeld en schuift namen gekoppeld aan latere bladen één naar beneden, zodat een opgeslagen werkmap een bladgebonden naam (zoals een afdrukgebied of afdruktitel) niet langer naar het verkeerde werkblad verwijst
Versie 2.89.36
Opgelost
- Het lezen van beschadigde .xls-bestanden is robuuster. Meercellnummer- / lege records en het kleurenpalet lezen niet langer te ver wanneer hun lengdevelden beschadigd zijn, en de werkmaplezer wordt vrijgegeven in plaats van gelekt wanneer het openen van een bestand een fout genereert
- Afbeeldinginvoeging lekt niet meer bij mislukking. Het laden van een beschadigde of onleesbare afbeelding (BMP / WMF / EMF / JPEG / PNG) maakt de tijdelijke stroom en bitmap vrij in plaats van ze te lekken
- Dubbele stijlrecords worden vermeden bij opslaan. Een stijl waarvan de eerste overeenkomst de allereerste tabelvermelding is, wordt nu correct gedeeld in plaats van tweemaal te worden geschreven tijdens BIFF-stijloptimalisatie
- HTML-export escapet lettertypenamen, zodat een lettertypenaam met
&,<,>of"het geëxporteerde celstijlattribuut niet langer verbreekt
Versie 2.89.35
Opgelost
- Verschillende werkbladfuncties komen nu overeen met Excel.
EXPgeeft zijn resultaat terug in plaats van een fout "niet ondersteund", éénargument-WEEKDAYnummert zondag als 1,MODbehoudt het teken en het gedeelte achter de komma van de deler, enLEFT/RIGHT/MIDretourneren#VALUE!bij negatieve lengtes of het verkeerde aantal argumenten - Niet-ASCII numerieke tekenverwijzingen in XLSX worden nu correct gelezen. Numerieke XML-entiteiten zoals
中in gedeelde tekenreeksen, celtekst en attributen worden gedecodeerd naar het volledige teken in plaats van één afgekapte byte - Tekstregels voor voorwaardelijke opmaak overleven dubbele aanhalingstekens. Tekst die
"bevat in containsText- / beginsWith- / endsWith-regels wordt ge-escaped zodat de opgeslagen werkmap geldig blijft - Bereikbewerkingen voor voorwaardelijke opmaak laten geen zwervend bereik achter. Het wissen of verplaatsen van een kolom uit een voorwaardelijk opmaakgebied produceert niet langer een overlappend fantoombereik
- Geïndexeerde bladtabkleuren gelezen uit .xls gebruiken het juiste palet-item, en datums met getalopmaak in meercell-records (MULRK) behouden hun datumdetectie onder het datumsysteem van 1904
- AutoFilter-criteria voor top/bodem percentage maken een retourvlucht. Het laden van een "top N percent"- of "bodem N percent"-filter uit .xls degradeert dit niet langer naar een gewone itemtelling
- mailto:-hyperlinks worden herkend als URL's, en hyperlink ScreenTips (tooltips) worden geschreven zodat ze een retourvlucht maken in plaats van te worden weggegooid
- HTML-export geeft geldige lettergroottes in landinstellingen met komma als decimaalteken, zodat geëxporteerde cellettertypen niet langer terugvallen op de browserstandaard
- Het lezen van misvormde of afgekapte bestanden is robuuster. Beschadigde OfficeArt-tekeningen, buiten-bereik stijl- / kleur- / palet- / thema-indices en niet-basislijn-JPEG's veroorzaken geen crash of leveren geen garbage-afmetingen meer op, en een geheugenlek bij gedeelde tekenreeksen bij het laden van rijke tekst is verholpen
Versie 2.89.34
Toegevoegd
- XLSX-werkblad-tekstvakken zijn eenvoudiger te beheren.
TXLSXWorksheetvoegtIndexOfTextBoxAt,FindTextBoxAt,DeleteTextBox,DeleteTextBoxAt,DeleteTextBoxesInRangeenClearTextBoxestoe, waarmee aanroepers zelfstandige teken-tekstvakken kunnen vinden en verwijderen op basis van ankerce of doorsnijdend bereik - Handmatige pagina-einden in XLSX kunnen per bereik worden gevonden en verwijderd.
TXLSXWorksheetvoegtIndexOfRowBreak,IndexOfColBreak,RemoveRowBreaksInRangeenRemoveColBreaksInRangetoe voor direct rij- / kolom-pagina-eindbeheer
Opgelost
- XLSX-werkbladen met alleen tekstvakken schrijven nu de teken-relatie. Een werkblad met alleen zelfstandige teken-tekstvakken maar zonder afbeeldingen, grafieken, opmerkingen, hyperlinks of tabellen geeft nu de bijbehorende
xl/worksheets/_rels/sheetN.xml.rels-teken-relatie uit zodat het opgeslagen pakket zijn<drawing r:id="...">-verwijzing oplost
Versie 2.89.33
Gewijzigd
- De C++Builder-werkbankdemo's sluiten nu aan bij de Delphi-reviewfuncties. De C++Builder WorkbookAudit-sample leidt dezelfde ernst, aanbevolen actie en reviewbewijsmateriaal af als de Delphi-versie in de werkmaplijst en in de JSON-, CSV- en HTML-rapporten, en de C++Builder ConversionWorkbench-sample registreert bronopmaak, actie en reviewnotitie per conversietaak, inclusief de geaggregeerde actietellingen in het HTML-rapport
Versie 2.89.32
Gewijzigd
- De ConversionWorkbench-demo werkt nu onbeheerd vanaf de opdrachtregel. Het aanroepen van
ConversionWorkbench.exe <map> [/targets=xlsx,csv,html] [/persheet] [/skip] [/quiet]scant de map, converteert elke bron naar de gevraagde doelformaten, schrijft de conversierapportages en sluit af;/quiethoudt het venster verborgen zodat conversies vanuit scripts en geplande taken kunnen worden uitgevoerd - Batchconversies blijven interactief. Een voortgangsbalk houdt de takenlijst bij (gecontroleerde bronnen maal gecontroleerde doelen), een Annuleer-knop onderbreekt de batch met rapporten over de voltooide taken, en dubbelklikken op een resultaatrij opent het geproduceerde bestand (of de uitvoermap voor CSV-sets per blad)
- Werkbankopties blijven behouden tussen sessies. De map, doelformaten, scheidingsteken, HTML-opties, ODS-schakelaars, CSV per blad, sla bestaande over en streamingkeuzes worden opgeslagen in een INI-bestand naast het uitvoerbare bestand; het versleutelingswachtwoord wordt bewust niet bewaard
Versie 2.89.31
Gewijzigd
- De WorkbookAudit-demo werkt nu onbeheerd vanaf de opdrachtregel. Het aanroepen van
WorkbookAudit.exe <map> [/r] [/quiet]scant de map (optioneel met submappen), controleert elke werkmap, exporteert de JSON-, CSV- en HTML-rapporten en sluit af;/quiethoudt het venster verborgen zodat de controle vanuit scripts en geplande taken kan worden uitgevoerd - Grote batches blijven interactief. Een voortgangsbalk houdt de batch bij, een Annuleer-knop onderbreekt deze (resterende bestanden worden gemarkeerd als Geannuleerd), en het selecteren van een werkmap vult nu een uitklapvenster per blad met structuur-, formule-, referentie- en beveiligingsdetails
- De controlemap en submapkeuze blijven behouden. Opties worden opgeslagen in een INI-bestand naast het uitvoerbare bestand en hersteld bij de volgende start
Versie 2.89.30
Gewijzigd
- De WorkbookAudit-demo leidt nu reviewernst en aanbevolen acties af. De hoofdlijst plus JSON-, CSV- en HTML-rapporten bevatten ernst, aanbevolen actie en reviewbewijsmateriaal zodat batchcontroles versleutelde, macro-ingeschakelde, extern gekoppelde, beveiligde, stijlzware of formulazware werkmappen kunnen doorsturen zonder elke bladrij te lezen
- De ConversionWorkbench-demo schrijft nu een conversiereviewgrootboek. Elke taak registreert bronopmaak, actie en reviewnotitie, en het HTML-rapport aggregeert actietellingen voor geaccepteerde uitvoer, CSV-sets per blad, hergebruikte bestanden, niet-ondersteunde doelkeuzes, bronherstel, kandidaten voor opnieuw proberen en handmatig-reviewresultaten
Versie 2.89.29
Toegevoegd
- Klassieke XLS-werkmappen lezen nu documenteigenschappen terug bij openen. Het openen van een bestaand .xls-bestand of -stroom vult
Title,Subject,Author,Keywords,Comments,CompanyenManagervanuit de samenvatting van het bestand, overeenkomend met het documenteigenschap-gedrag van het XLSX-model; eigenschappen opgeslagen door Excel zelf, inclusief niet-Latijnse tekst opgeslagen in gelokaliseerde ANSI-codepagina's, worden correct gedecodeerd
Versie 2.89.28
Gewijzigd
- De ConversionWorkbench-demo krijgt vier batchgerichte opties. De Delphi- en C++Builder-samples kunnen nu elk werkblad opsplitsen in zijn eigen CSV-bestand (
<naam>.<blad>.csv, voor zowel klassieke XLS- als XLSX-modelbronnen), wachtwoordbeveiligde XLSX-uitvoer schrijven viaSaveAsEncrypted(inclusief het klassieke-XLS-brugpad), conversies overslaan waarvan de uitvoer al bestaat (gerapporteerd als overgeslagen, niet opnieuw uitgevoerd), en streaming XLSX-schrijven inschakelen voor grote werkmappen
Versie 2.89.27
Gewijzigd
- De WorkbookAudit-demo scant nu dieper en markeert risicomarkeringen. De Delphi- en C++Builder-samples kregen submaprecursie met maprelatiefbestandsnamen, detectie van wachtwoordbeveiligd XLSX via
CanReadEncrypted(gerapporteerd als versleuteld in plaats van een algemene openingsfout), en een Vlaggen-kolom die VBA-projecten, externe verwijzingen, verborgen bladen, beveiligde bladen en versleutelde bestanden in één oogopslag toont in de lijst en in elk rapport - Controlerapporten bevatten rijkere metadata. Het JSON-rapport groepeert de volledige documenteigenschappenset (titel, onderwerp, auteur, trefwoorden, bedrijf, manager, beschrijving, categorie, aangemaakt, gewijzigd, het laatst gewijzigd door) in een
docProps-object, en alle drie de rapportformaten voegen afbeeldingstelling per blad toe; bladgebonden gedefinieerde namen worden nu verzameld naast namen op werkmapniveau voor klassieke XLS-bestanden
Versie 2.89.26
Toegevoegd
- Delphi- en C++Builder-demo's bevatten nu een ConversionWorkbench-batchconverter. De nieuwe sample verzamelt XLS-, XLSX-, CSV- en ODS-bronnen uit een map, converteert de gecontroleerde bestanden in één run naar elke combinatie van XLSX-, CSV-, HTML-, RTF-, ODS- en XLS-doelen, en stuurt elke bron door het overeenkomende objectmodel, inclusief de
SaveXLSWorkbookAsXLSX-brug voor klassiek XLS en een tweestaps XLS-naar-ODS-pad - Conversieopties worden per formaat beschikbaar gesteld. Het formulier biedt een CSV-scheidingstekenkeuze, HTML-titel- en tabelklasse-opties, en ODS-grafiek- en afbeeldinginsluitingsschakelaars; de niet-beschikbare XLSX-naar-XLS-richting wordt gerapporteerd als niet-ondersteund in plaats van stil te mislukken
- Elke run schrijft een conversierapport.
ConversionReport.csvenConversionReport.htmlregistreren per-taakstatus, timing en uitvoergrootte naast de geconverteerde bestanden, en een samplegenerator maakt XLS-, XLSX-, CSV- en ODS-invoer zodat de werkbank direct werkt
Versie 2.89.25
Toegevoegd
- Delphi- en C++Builder-demo's bevatten nu een WorkbookAudit-batchcontroletool. De nieuwe sample scant een map met XLS- en XLSX-werkmappen en vat werkbladstructuur samen, formuletellingen met de gebruikte functienamen, externe werkmapverwijzingen (externe-linkvermeldingen, haakjesformulereferenties en gedefinieerde-naamdoelen), hyperlinks, stijlgebruik, samengevoegde bereiken, opmerkingen, tabellen, voorwaardelijke indelingen, gegevensvalidaties, grafieken, AutoFilter-bereiken, bevroren deelvensters en beveiligingsstatus
- Controleresultaten exporteren als JSON-, CSV- en HTML-rapporten. Eén klik schrijft
AuditReport.json,AuditReport.csvenAuditReport.htmlnaast de gecontroleerde bestanden, met werkmapniveaumetadata, stijlpools, gedefinieerde namen en detailrijen per blad - De controledemo is zelfstandig. Een samplegenerator maakt klassieke XLS- en XLSX-werkmappen met formules, externe koppelingen, verborgen bladen, hyperlinks, opmerkingen, tabellen, grafieken en beveiligde bladen, zodat de volledige controlestroom direct werkt
Versie 2.89.24
Opgelost
- XLSX-CSV-export schrijft nu berekende formuleresultaten.
TXLSXWorkbook.SaveAsCSVevalueert formujecellen via de werkmapformule-engine vóór het schrijven van CSV- of TSV-tekst, zodat cellen met alleen formules hun weergegeven waarden exporteren in plaats van formuletekst
Versie 2.89.23
Toegevoegd
- OpenDocument-export kan nu worden afgestemd met opties. Een nieuw exportoptiesobject laat het opgeslagen
.ods-bestand grafieken of ingesloten afbeeldingen uitsluiten en de generatortekenreeks in de documentmetadata overschrijven, via nieuwe SaveAsODS-overloads die de opties accepteren - Uitgesloten inhoud laat geen spoor achter. Het uitschakelen van grafieken of afbeeldingen verwijdert hun objectmappen, tekenkaders en manifestvermeldingen tegelijkertijd, zodat het opgeslagen pakket nooit een verweesde verwijzing bevat
Versie 2.89.22
Toegevoegd
- OpenDocument-bestanden openen nu via de reguliere openingsaanroep. Het doorgeven van een
.ods-bestand of -stroom aan de algemene openingsmethode detecteert het OpenDocument-pakket en laadt het automatisch, zodat het niet langer nodig is om van tevoren te weten of een bestand.xlsxof.odsis - Een SaveAsODS-snelkoppeling is toegevoegd. Opslaan naar OpenDocument vereist niet langer het doorgeven van de bestandsformaatwaarde, in navolging van de manier waarop andere formaten worden opgeslagen
- Het geladen formaat kan worden bevraagd. Een SourceFormat-eigenschap rapporteert of de geopende werkmap afkomstig is uit een OpenXML- of een OpenDocument-bestand
Versie 2.89.21
Opgelost
- Superscript- en subscriptstromen blijven behouden bij het opslaan van rijke tekst naar
.xlsx. Een stroom die is gemarkeerd als superscript of subscript in een opgemaakte cel schrijft nu zijn verticale positie in de gedeelde tekenreeks en leest deze terug, zodat de verhoogde of verlaagde tekst een.xlsx-retourvlucht overleeft in plaats van terug naar de basislijn te zakken - Superscript en subscript worden meegenomen over formaten. Rijke tekst gelezen uit een
.ods-bestand behoudt zijn superscript- en subscriptstromen wanneer de werkmap opnieuw wordt opgeslagen als.xlsxen heropend
Versie 2.89.20
Toegevoegd
- ODS-export en -import bevatten nu kleurenschaal- en gegevensbalk-voorwaardelijke indelingen. Een twee- of driekleursschaal en een gegevensbalk worden geschreven met hun waardepunten en kleuren en terug gelezen, waardoor de bestaande vergelijkingsregels worden uitgebreid zodat deze grafische indelingen een
.ods-retourvlucht overleven - Op formule gebaseerde voorwaardelijke indelingen worden ondersteund. Een regel aangedreven door een formule wordt geschreven als een is-waar-formule-voorwaarde met de expressie vertaald naar de OpenDocument-syntaxis, en terug gelezen in een formule-regel, naast de bestaande celwaarderegels
Versie 2.89.19
Toegevoegd
- ODS-export en -import bevatten nu invoerprompts voor gegevensvalidatie. De prompttitel en -tekst die worden weergegeven wanneer een gevalideerde cel is geselecteerd, worden geschreven naast de bestaande foutmelding en terug gelezen, zodat het invoerbericht een
.ods-retourvlucht overleeft - De kleur van bladtabbladen blijft behouden. De kleur van een bladtabblad wordt geschreven naar en gelezen uit het
.ods-bestand, en import accepteert zowel het veelgebruikte extensieattribuut als het standaard OpenDocument-tabbladkleurattribuut
Versie 2.89.18
Toegevoegd
- ODS-export en -import bevatten nu rij- en kolomgroepen. Overzichtsgroepen worden geschreven als geneste rij- en kolomgroepelementen en terug gelezen, zodat gegroepeerde rijen en kolommen hun overzichtsniveau behouden door een
.ods-retourvlucht, inclusief meerdere niveaus van nesting - Samengevouwen groepen blijven samengevouwen. Een groep waarvan de rijen of kolommen zijn samengevouwen, wordt gemarkeerd als niet-weergegeven bij opslaan en hersteld bij laden, en groepering bestaat naast verborgen rijen, pagina-einden en rij- of kolomgrootte zonder te interfereren
Versie 2.89.17
Toegevoegd
- ODS-export en -import bevatten nu het afdrukgebied. Het afdrukbereik van een blad wordt geschreven naar en terug gelezen uit het
.ods-bestand, zodat een gedefinieerd afdrukgebied een opslaan en herladen overleeft - Handmatige pagina-einden blijven behouden. Rij- en kolompagina-einden worden geschreven als einde-voor-markeringen op de betreffende rijen en kolommen en terug gelezen bij laden, zodat handmatige paginering een retourvlucht door
.odsmaakt
Versie 2.89.16
Toegevoegd
- ODS-export en -import bevatten nu kop- en voetteksten. Opslaan naar
.odsschrijft elke bladkoptekst en -voettekst met zijn linker-, midden- en rechterregio, en het openen van een.ods-bestand leest ze terug, zodat velden voor paginanummer, paginatelling, datum, tijd en bladnaam plus letterlijke tekst de retourvlucht overleven - Elk blad behoudt zijn eigen kop- en voettekst. Een werkmap waarvan de bladen verschillende kop- of voetteksten hebben, schrijft nu een aparte paginastijl per blad, zodat elk blad herlaadt met zijn eigen kop- en voettekst in plaats van de eerste blad te delen
Versie 2.89.15
Toegevoegd
- ODS-export en -import bevatten nu tekstrotatie. Een cel waarvan de tekst geroteerd is, behoudt zijn hoek door een
.ods-opslaan en herladen, met kloksgewijze en tegen de klok ingaande hoeken correct gekoppeld tussen de spreadsheet- en OpenDocument-conventies - Celinspringing blijft behouden. Het inspringniveau van een cel wordt geschreven als een linkermarge bij opslaan en terug gelezen bij laden, zodat ingesprongen cellen hun diepte behouden door een
.ods-retourvlucht
Versie 2.89.14
Toegevoegd
- ODS-export schrijft nu rijke tekst. Het opslaan van een cel waarvan de tekst meerdere opmaakstromen mengt naar
.odsgeeft één tekstspan per stroom uit met zijn eigen automatische tekststijl, zodat lettertypenaam, -grootte, vet, cursief, onderstreping, doorhaling, kleur en superscript of subscript het opslaan overleven in plaats van te worden afgevlakt tot één indeling - Identieke stroomstijlen worden gedeeld. Stromen met dezelfde opmaak hergebruiken één automatische stijlvermelding in plaats van per stroom een duplicaat uit te geven, en een gewone cel wordt nog steeds geschreven als één alinea zonder span
Versie 2.89.13
Toegevoegd
- ODS-import behoudt nu rijke-tekstopmaak. Het openen van een
.ods-bestand waarvan de cel meerdere tekstspannen met verschillende opmaak mengt, behoudt elke stroom in plaats van de cel af te vlakken tot platte tekst, zodat lettertypenaam, -grootte, vet, cursief, onderstreping, doorhaling, kleur en superscript of subscript per stroom worden meegenomen - Gewone cellen blijven gewoon. Een cel met één niet-opgemaakte stroom, en elke numerieke, datum- of formulecel, wordt gelaten als gewone waarde in plaats van te worden gepromoveerd naar rijke tekst
Versie 2.89.12
Toegevoegd
- ODS-import leest nu grafieken. Het openen van een
.ods-bestand parseert elk ingesloten grafiekobject waarnaar wordt verwezen vanuit een werkblad, zodat kolom-, staaf-, lijn-, cirkel-, vlak-, ring-, scatter-, bel- en radargrafieken worden hersteld op het blad dat ze bevat, waarmee de retourvlucht met grafiekexport is voltooid - Grafiekreeksbereiken worden hersteld. Elke reeks draagt zijn waardebereik mee, en zijn categoriebereik indien aanwezig, teruggezet vanuit de OpenDocument-celbereikspelling zodat de grafiek naar dezelfde werkbladgegevens verwijst
- Een beschadigde of ontbrekende grafiek wordt veilig overgeslagen. Een tekenkader waarvan het grafiekobject afwezig is of geen grafiek is, breekt het laden niet langer af, en elke reserveafbeelding in hetzelfde kader wordt nog steeds geïmporteerd
Versie 2.89.11
Toegevoegd
- ODS-export schrijft nu ingesloten afbeeldingen. Opslaan naar
.odsslaat elke werkbladafbeelding op in de pakketmapPictures/, verwijst ernaar vanuit een tekenkader in de ankerende cel, en registreert het in het manifest, zodat afbeeldingen in een werkmap worden meegenomen in het opgeslagen bestand - Afbeeldingsgrootte blijft behouden. Elke afbeelding schrijft zijn breedte en hoogte in centimeters, zodat een afbeelding opgeslagen naar
.odsen heropend dezelfde schermgrootte behoudt - Afbeeldingen op een samengevoegde cel blijven verankerd. Een afbeelding waarvan het anker binnen een samengevoegd bereik valt, wordt gehost door de linkerbovencell van het bereik, en een afbeelding verankerd buiten het bladraster wordt overgeslagen in plaats van te worden geschreven als een vermelding zonder tekenkader
Versie 2.89.10
Opgelost
- ODS-gegevensvalidatiefoutniveau overleeft nu een retourvlucht. Het opslaan van een validatie waarvan de melding een waarschuwing of informatie is, exporteert dit niet langer zonder zijn meldingstype, zodat het heropenen van het
.ods-bestand het oorspronkelijke niveau behoudt in plaats van het stilzwijgend te downgraden naar een stopmeldingsniveau
Versie 2.89.9
Toegevoegd
- ODS-export schrijft nu grafieken. Opslaan naar
.odsserialiseert elke werkbladgrafiek in zijn eigen ingesloten grafieksubdocument in het pakket, zodat kolom-, staaf-, lijn-, cirkel-, vlak-, ring-, scatter-, bel- en radargrafieken worden meegenomen in het opgeslagen bestand - Grafieken worden gerefereerd vanuit hun blad. Het blad dat een grafiek bezit, koppelt aan het ingesloten grafiekobject via een tekenkader, en elk grafiekobject wordt geregistreerd in het pakketmanifest zodat LibreOffice het document opent zonder het als beschadigd te melden
- Reeksbereiken worden vertaald. Elke grafiekreeks draagt zijn waardebereik mee, en zijn categoriebereik indien aanwezig, omgezet naar de OpenDocument-celbereikspelling zodat de grafiek naar dezelfde werkbladgegevens verwijst
Versie 2.89.8
Toegevoegd
- ODS-import leest nu ingesloten afbeeldingen. Het openen van een
.ods-bestand haalt afbeeldingen op die zijn opgeslagen onder de pakketmapPictures/, waarbij PNG-, JPEG-, GIF- en BMP-afbeeldingen worden herkend op basis van hun inhoud, zodat een tekening verankerd in een cel heropent als een werkbladafbeelding - Afbeeldingsplaatsing blijft behouden. Elke geïmporteerde afbeelding behoudt de ankercel van het tekenkader dat hem bevat, en zijn breedte en hoogte worden geconverteerd vanuit de opgeslagen afmetingen van het kader
- Ontbrekend beeldmateriaal wordt veilig overgeslagen. Een tekenkader waarvan de gerefereerde afbeelding ontbreekt in het pakket, wordt gepasseerd zonder fout, zodat een gedeeltelijk document nog steeds opent
Versie 2.89.7
Toegevoegd
- ODS-export schrijft nu bevroren deelvensters. Opslaan naar
.odsregistreert de bevroren kolommen en rijen van elk bevroren blad in de pakketweergave-instellingen, zodat een blad opgesplitst in een bevroren koptekst bevroren heropent in LibreOffice en viaOpenODS - ODS-export schrijft nu pagina-instelling. De pagina-indeling in het opgeslagen pakket bevat het papierformaat, de afdrukstand (staand of liggend) en de boven-, onder-, linker- en rechtermarge van de pagina-instelling van het werkblad, met terugval op A4 staand wanneer er geen pagina-instelling aanwezig is
Versie 2.89.6
Toegevoegd
- ODS-import leest nu bevroren deelvensters. Het openen van een
.ods-bestand herstelt de bevroren kolommen en rijen die zijn geregistreerd in de pakketweergave-instellingen, zodat een blad opgesplitst in een bevroren koptekst bevroren heropent - ODS-import leest nu AutoFilter-bereiken. Een gefilterd bereik dat in het pakket is opgeslagen als een databasebereik wordt terug gelezen op zijn blad, zodat AutoFilter-bereiken geschreven door
SaveAsworden terug gelezen doorOpenODS
Versie 2.89.5
Toegevoegd
- ODS-import leest nu voorwaardelijke indelingen. Het openen van een
.ods-bestand brengt celwaarde-vergelijkingsregels mee (groter dan, kleiner dan, gelijk, niet gelijk, groter of gelijk, kleiner of gelijk, tussen, en niet tussen), elk toegepast op de cellen die ze als doel hebben - Intervalregels bewaren beide grenzen. Een tussen- of niet-tussen-regel herstelt beide drempelwaarden, zodat de onder- en bovengrens de import overleven
- Vergelijkingsregels maken een retourvlucht. Celwaarde-voorwaardelijke indelingen geschreven naar
.odsworden heropend met hun operator, drempelwaarden en doelbereik intact, zodat regels geschreven doorSaveAsworden terug gelezen doorOpenODS
Versie 2.89.4
Toegevoegd
- ODS-import leest nu gegevensvalidaties. Het openen van een
.ods-bestand brengt celinhoudvalidaties mee: numerieke bereiken (tussen en niet tussen), vervolgkeuzelijsten, tekst-lengtechecks en scalaire vergelijkingen, elk toegepast op de cellen die ernaar verwijzen - Validatiedetails blijven behouden. De vlag voor lege cel toestaan en de foutmelding (haar stop-, waarschuwings- of informatiesstijl en berichttekst) worden meegenomen in het werkmapmodel
- Lijstleden overleven de retourvlucht. Een vervolgkeuzelijst geschreven naar
.odswordt heropend met zijn leden intact, zodat validaties geschreven doorSaveAsworden terug gelezen doorOpenODS
Versie 2.89.3
Toegevoegd
- ODS-export schrijft nu structurele elementen. Opslaan naar
.odsdraagt benoemde bereiken, celhyperlinks, verborgen rijen en kolommen, AutoFilter-bereiken, voorwaardelijke indelingen en gegevensvalidaties mee in het pakket - Benoemde bereiken en hyperlinks maken een retourvlucht. Op werkmapniveau aangeduide namen behouden hun adres, externe en interne celkoppelingen behouden hun doel, weergavetekst en tooltip, en verborgen rijen en kolommen heropenen verborgen
- AutoFilter, voorwaardelijke indelingen en validaties worden uitgevoerd. Een gefilterd bereik wordt geschreven met zijn filterknoppen, celwaarde-vergelijkingsregels en celinhoudgegevensvalidaties worden geschreven zodat consumers zoals LibreOffice ze behouden
Versie 2.89.2
Toegevoegd
- ODS-import leest nu volledige celstijlen. Het openen van een
.ods-bestand brengt de lettertypenaam, -grootte, vet, cursief, onderstreping en doorhaling van opgemaakte cellen mee, naast de reeds ondersteunde gecachte waarden en getalopmaak - Letterkleur, achtergrondvulling en randen worden geïmporteerd. Expliciete letterkleuren worden toegewezen als dekkend RGB, een achtergrondkleur wordt een vaste vulling, en de vier celranden (boven, onder, links, rechts) dragen hun lijnstijl en kleur mee
- Uitlijning wordt geïmporteerd. Horizontale en verticale tekstuitlijning en de optie voor tekstterugloop worden op de cel toegepast
- Overerving van ouderstijlen wordt gerespecteerd. Stijlen lezen hun waarden via de ODS-ouderstijlketen, zodat een kindstijl zijn ouderkenmerk per attribuut overschrijft terwijl het erft wat het ongewijzigd laat
- Sluit de schrijf/lees-lus. Celstijlen geschreven door
SaveAsnaar.odsworden terug gelezen doorOpenODS, waarbij lettertype, kleur, vulling, randen en uitlijning behouden blijven
Versie 2.89.1
Toegevoegd
- ODS-export schrijft nu volledige celstijlen. Opslaan naar
.odsdraagt lettertypenaam, -grootte, vet, cursief, onderstreping, doorhaling en letterkleur mee in het pakket, zodat opgemaakte cellen hun uiterlijk behouden wanneer ze worden heropend - Achtergrondvullingen en celranden worden geschreven. Vaste achtergrondkleuren en de vier celranden (boven, onder, links, rechts) worden uitgegeven met hun breedte, lijnstijl en kleur
- Uitlijning en tekstterugloop blijven behouden. Horizontale en verticale tekstuitlijning plus de tekstterugloop-optie worden meegenomen in de ODS-celstijlen
- Stijlen combineren met getalopmaak. Eén celstijl kan zijn lettertype, vulling en randen koppelen aan een getalopmaak, en identieke stijlcombinaties worden gedeeld zodat het pakket compact blijft
Versie 2.89.0
Toegevoegd
- OpenDocument-spreadsheet (.ods) export.
SaveAsaccepteert nuxlsxOpenDocumentSpreadsheeten schrijft direct een geldig ODF-pakket, zonder een XLSX-tussenstap - Getypte celwaarden worden geschreven. Tekst, getallen, booleans en datums worden uitgegeven met hun ODF-waardetypen zodat de waarden hun betekenis behouden wanneer ze worden heropend
- Getalopmaak blijft behouden. Veelgebruikte indelingen (decimalen, duizendtalgroepering, valuta, percentage, wetenschappelijk en ISO-datums) worden geschreven als ODF-gegevensstijlen en gerefereerd door de cellen die ze gebruiken
- Bladstructuur wordt overgedragen. Werkbladen, kolombreedten en samengevoegde celbereiken worden in het pakket geschreven
- Retourvlucht via HotXLS. Een pakket geschreven door
SaveAskan worden terug gelezen metOpenODS, waarbij waarden, getalopmaak, kolombreedten en samenvoegingen behouden blijven
Versie 2.88.249
Toegevoegd
- Betrouwbaarheidsintervalfuncties berekenen nu in de formule-engine.
CONFIDENCE.NORMgebruikt het normale kwantiel enCONFIDENCE.Thet Student t-kwantiel om de halve breedte van het betrouwbaarheidsinterval van een gemiddelde te berekenen - Moderne statistische namen zijn beschikbaar.
PERCENTILE.INC,PERCENTILE.EXC,QUARTILE.INC,QUARTILE.EXC,RANK.AVG,COVARIANCE.PenCOVARIANCE.Sevalueren de inclusieve en exclusieve percentielen en kwartielen, gemiddelde-gelijke-rangschikking en populatie- en steekproefcovariantie - Aliassen voor de oudere vormen.
MODE.SNGLenRANK.EQworden toegewezen aan de bestaandeMODEenRANK
Versie 2.88.248
Toegevoegd
- Binomiale distributiefunctie berekent nu in de formule-engine.
BINOM.DISTevalueert de kansmasskans en cumulatieve verdeling, waarbij de geregulariseerde onvolledige bèta wordt gebruikt voor de cumulatieve vorm - Poisson-distributiefunctie berekent nu in de formule-engine.
POISSON.DISTevalueert de kansmasskans en cumulatieve verdeling, waarbij de bovenste onvolledige gamma wordt gebruikt voor de cumulatieve vorm - Stabiele evaluatie. Beide massafuncties gebruiken een log-gamma-factoriaalvorm om nauwkeurig te blijven voor grote aantallen, en ongeldige parameters retourneren
#NUM!
Versie 2.88.247
Toegevoegd
- Bèta-distributiefuncties berekenen nu in de formule-engine.
BETA.DISTenBETA.INVevalueren de cumulatieve verdeling, kansdichtheid en inverse over een optioneel interval[A, B] - Student t-distributiefuncties zijn beschikbaar.
T.DIST,T.DIST.RT,T.DIST.2T,T.INVenT.INV.2Tdekken de linkerstaart, rechterstaart, tweezijdige kans en hun inversen - F-distributiefuncties zijn beschikbaar.
F.DIST,F.DIST.RT,F.INVenF.INV.RTevalueren de cumulatieve verdeling, rechterstaart en inversen - Gedeelde evaluatiekern. Alle drie families gebruiken de geregulariseerde onvolledige bèta met gebroken-breuk-evaluatie, de inversen lossen op door bisectie, en ongeldige parameters retourneren
#NUM!
Versie 2.88.246
Toegevoegd
- Gamma- en chi-kwadraat-distributiefuncties berekenen nu in de formule-engine.
GAMMA.DIST,GAMMA.INV,CHISQ.DIST,CHISQ.DIST.RT,CHISQ.INVenCHISQ.INV.RTevalueren de cumulatieve verdeling, kansdichtheid, rechterstaart en hun inversen live viaCalculate - Log-gamma met hoge precisie is beschikbaar.
GAMMALN.PRECISEgeeft de natuurlijke logaritme van de gammafunctie terug - Nauwkeurige en robuuste evaluatie. De cumulatieve waarden gebruiken reeksen en gebroken-breuk-uitbreidingen van de geregulariseerde onvolledige gamma, de inversen lossen op door bisectie, en ongeldige parameters retourneren
#NUM!
Versie 2.88.245
Toegevoegd
- Functies voor continue verdelingen berekenen nu in de formule-engine.
EXPON.DIST,WEIBULL.DIST,LOGNORM.DISTenLOGNORM.INVevalueren de cumulatieve verdeling, kansdichtheid en inverse live viaCalculate - Gesloten-vorm-evaluatie. De exponentiële en Weibull-verdelingen gebruiken hun analytische formules, terwijl de lognormale verdeling de normale cumulatieve verdelingsfunctie en haar inverse hergebruikt; ongeldige parameters retourneren
#NUM!
Versie 2.88.244
Opgelost
- De inverse normale verdeling is nu nauwkeurig in de staarten.
NORMSINV,NORM.S.INVenNORM.INVgebruikten een logaritme met grondtal 10 in de staartvertakkingen (kansen onder circa 0,024 of boven circa 0,976) waar het algoritme de natuurlijke logaritme vereist; resultaten zijn nu correct over het volledige kansbereik
Versie 2.88.243
Toegevoegd
- Normaalverdelingsfuncties met de moderne puntnamen berekenen nu in de formule-engine.
NORM.DIST,NORM.INV,NORM.S.DISTenNORM.S.INVevalueren de cumulatieve verdeling, kansdichtheid en hun inversen live viaCalculate - Statististische aliassen met punten.
STDEV.S,STDEV.P,VAR.SenVAR.Pworden herkend als de Excel 2010+-namen voor de steekproef- en populatiestandaardafwijking en -variantie - Functienamen met punten worden correct geparseerd. De formuleparseerder behandelt nu een naam zoals
NORM.S.DISTals één functie, zodat deze functies werken inCalculateen een retourvlucht maken via het OOXML_xlfn.-voorvoegsel
Versie 2.88.242
Toegevoegd
- Technische complexe-getallenfuncties berekenen nu in de formule-engine.
COMPLEXbouwt een complex getal als tekst en deIM*-familie leest en bewerkt dit, alles evaluerend live viaCalculate - Onderdelen en rekenkundige bewerkingen.
IMREAL,IMAGINARY,IMABS,IMARGUMENTenIMCONJUGATEstellen de componenten beschikbaar, terwijlIMSUM,IMSUB,IMPRODUCTenIMDIVcomplexe rekenkunde uitvoeren - Transcendente functies.
IMPOWER,IMSQRT,IMEXPenIMLNworden via polaire vorm geëvalueerd, en het imaginaire achtervoegsel magiofjzijn
Versie 2.88.241
Toegevoegd
- Dynamische-arrayfuncties
XLOOKUPenFILTERberekenen nu in de formule-engine. Beide evalueren live viaCalculate, waardoor moderne opzoek- en filtermogelijkheden beschikbaar komen in werkbladformules en ad-hoc-evaluatie XLOOKUPmet overeenkomst- en zoekmodi. Exacte (standaard), jokerteken- en benaderende volgende-kleinere of volgende-grotere overeenkomst worden ondersteund, samen met zoeken van eerste-naar-laatste of laatste-naar-eerste en een optioneelif_not_found-resultaatFILTERmet overloppende resultaten. Rijen waarvan de insluitvector WAAR is, worden behouden en overgelopen naar het doelbereik viaSetArrayFormula, met een optioneleif_empty-waarde wanneer niets overeenkomt
Versie 2.88.240
Toegevoegd
- Wiskundige functies
GCD,LCM,MROUND,QUOTIENTenMULTINOMIALberekenen nu in de formule-engine. Ze evalueren live viaCalculate, met dekking voor grootste gemene deler, kleinste gemeenschappelijke veelvoud, afronden naar een veelvoud, integerdeling en de multinomiale coëfficiënt - Radix-conversie en Romeinse cijfers.
BASEcodeert een getal in elke radix van 2 tot 36 met optionele nul-opvulling,DECIMALparseert zo een tekenreeks terug naar een getal, enARABICconverteert een Romein cijfer naar zijn waarde
Versie 2.88.239
Toegevoegd
- Aggregaatfuncties
PRODUCTenSUMSQberekenen nu in de formule-engine.PRODUCTvermenigvuldigt zijn numerieke argumenten enSUMSQtelt hun kwadraten op, beide evaluerend live viaCalculate - A-variant-variantie en -standaardafwijking.
VARA,VARPA,STDEVAenSTDEVPAberekenen de steekproef- en populatiesprijding terwijl tekst als 0 en WAAR als 1 worden geteld, in tegenstelling tot de gewone vormen die niet-getallen negeren
Versie 2.88.238
Toegevoegd
- Statistische aggregaatfuncties berekenen nu in de formule-engine.
VAR,VARP,STDEV,STDEVP,MODE,COUNTBLANKenAVERAGEAevalueren live viaCalculate - Variantie en standaardafwijking.
VARenSTDEVgebruiken de steekproefformule terwijlVARPenSTDEVPde populatieformule gebruiken, over zowel bereiken als inline-argumenten - Meest voorkomende waarde.
MODEgeeft het meest voorkomende getal terug, en rapporteert#N/Awanneer geen waarde zich herhaalt - Leeg tellen.
COUNTBLANKtelt de lege cellen in een bereik, inclusief cellen met een leeg tekstresultaat - Tekstbewust gemiddelde.
AVERAGEAberekent het gemiddelde van waarden terwijl tekst als nul en logisch WAAR als één worden geteld, zodat het verschilt vanAVERAGE, dat tekst negeert
Versie 2.88.237
Toegevoegd
- Bitsgewijze functies berekenen nu in de formule-engine.
BITAND,BITOR,BITXOR,BITLSHIFTenBITRSHIFTevalueren live viaCalculate - Bitsgewijs AND, OR en XOR.
BITAND,BITORenBITXORcombineren twee niet-negatieve gehele getallen bit voor bit - Bit verschuiven in beide richtingen.
BITLSHIFTverschuift de bits van een getal naar links enBITRSHIFTnaar rechts; een negatief verschuivingsbedrag keert de richting om - Excel-compatibele limieten. Operanden moeten gehele getallen zijn van 0 tot 2^48-1 en het verschuivingsbedrag is beperkt tot 53 posities; waarden buiten deze limieten rapporteren
#NUM! - Retourvlucht met het OOXML-voorvoegsel. Bij opslaan naar XLSX worden deze Excel 2013-functies geschreven met het
_xlfn.-voorvoegsel en heropenen ze schoon, zodat ze correct blijven weergeven en herberekenen
Versie 2.88.236
Toegevoegd
- Technische basisconversiefuncties berekenen nu in de formule-engine.
DEC2BIN,DEC2OCT,DEC2HEX,BIN2DEC,OCT2DEC,HEX2DEC,HEX2BIN,BIN2HEX,HEX2OCT,OCT2HEX,BIN2OCTenOCT2BINevalueren live viaCalculate - Conversies tussen binair, octaal, decimaal en hexadecimaal. Getallen worden in beide richtingen geconverteerd over alle vier bases, inclusief kruislingse paren zoals hexadecimaal naar binair
- Getekende waarden via twee-complement. Negatieve getallen worden weergegeven in de standaard 10-cijferige twee-complementvorm, zodat waarden correct over conversies heen en terug gaan
- Optionele uitvoer met vaste breedte. De conversies naar een tekstbasis accepteren een optioneel plaatsargument dat het resultaat met voorloopnullen opvult tot een vaste breedte
- Bereik- en invoervalidatie. Waarden buiten het representeerbare bereik, of tekst met cijfers die niet geldig zijn voor de bronbasis, rapporteren
#NUM!
Versie 2.88.235
Toegevoegd
- Werkdagdatumfuncties berekenen nu in de formule-engine.
WORKDAYenNETWORKDAYSevalueren live viaCalculate - Weekendsbewuste datumstap.
WORKDAYgeeft de datum een gegeven aantal werkdagen voor of na een startdatum terug, waarbij zaterdagen en zondagen worden overgeslagen; een negatief aantal stap achteruit en een aantal van nul geeft de startdatum terug - Tellen van werkdagen.
NETWORKDAYStelt de volledige werkdagen tussen twee datums, inclusief beide eindpunten, en geeft een negatief aantal terug wanneer de startdatum later is dan de einddatum - Optionele verloflijsten. Beide functies accepteren een optioneel verlofargument, opgegeven als één datum of een celbereik, en sluiten die datums uit van de werkdagberekening
Versie 2.88.234
Toegevoegd
- Datum- en tijdfuncties berekenen nu in de formule-engine.
EDATE,EOMONTH,DATEDIF,YEARFRAC,DAYS,WEEKNUMenISOWEEKNUMevalueren live viaCalculate - Maandrekenkunde met afkapping aan einde van maand.
EDATEverschuift een datum met een geheel aantal maanden enEOMONTHgeeft de laatste dag van de verschoven maand terug; beide worden afgekapt naar de kortere maand, bijvoorbeeld een 31e verschoven naar februari DATEDIFintervaleenheden. De volledige-telling-eenheden"Y","M"en"D"plus de rest-eenheden"YM","YD"en"MD"worden ondersteundYEARFRACdagtellingsbases. Alle vijf bases zijn geïmplementeerd: US 30/360, werkelijk/werkelijk, werkelijk/360, werkelijk/365 en Europees 30/360- Weeknummering.
WEEKNUMondersteunt de conventies van zondagstart, maandagstart en ISO (retourtype 21), enISOWEEKNUMgeeft het ISO 8601-weeknummer terug
Versie 2.88.233
Toegevoegd
- Databasefuncties berekenen nu in de formule-engine.
DSUM,DCOUNT,DCOUNTA,DAVERAGE,DMIN,DMAX,DPRODUCT,DGET,DVAR,DVARP,DSTDEVenDSTDEVPevalueren live viaCalculateen herberekenen wanneer een werkmap wordt heropend - Standaard criteriatabelkoppeling. Voorwaarden geplaatst onder de veldkoppen combineren als EN binnen een rij en OF over rijen, ondersteunen vergelijkingsoperatoren zoals
>,<en>=, en staan jokertekenkoppeling*/?toe in tekst; lege criteriacellen voegen geen beperking toe - Flexibele veldselector. Het geaggregeerde veld kan worden opgegeven als kolomkopteksttekst, een 1-gebaseerde kolomindex of een verwijzing naar een kopcell
DGETenkelvoudige-record-opzoeken.DGETgeeft de veldwaarde van het overeenkomende record terug, inclusief tekst, en rapporteert#NUM!wanneer meerdere records overeenkomen of#VALUE!wanneer geen overeenkomen
Versie 2.88.232
Toegevoegd
OpenODSimporteert nu ODS-bladbeveiliging. ODS-tabellen mettable:protected="true"openen nu als beveiligde werkbladen met de bestaande beveiligingsstatus zonder wachtwoord; ODS-beveiligingssleutels worden niet behandeld als XLSX-oude wachtwoord-hashes
Versie 2.88.231
Toegevoegd
OpenODSimporteert nu ODS-benoemde bereiken.table:named-range-vermeldingen mettable:cell-range-addressvullen nuDefinedNamesvan de werkmap, waarbij ODS-blad/cel-verwijzingen zoals$Sheet.$A$1:$Sheet.$B$2worden omgezet naar XLSX-gedefinieerde-naamformules
Versie 2.88.230
Toegevoegd
OpenODSimporteert nu ODS-celbeveiliging-stijlen. Tabelcelstijlen diestyle:cell-protectgebruiken, wijzen nunone,formula-hidden,protectedenhidden-and-protectedtoe aan de geïmporteerdeLocked- enFormulaHidden-celstatus, inclusief waarden die zijn overgeërfd viastyle:parent-style-name
Versie 2.88.229
Toegevoegd
OpenODSimporteert nu eenvoudige ODS-formules. Formulecellen metof:=ofoooc:=behouden nu hun gecachte scalaire waarden en importeren een genormaliseerde XLSX-formule met lokale haakjesverwijzingen zoals[.A1:.B1]en puntkomma-argumentscheidingstekens omgezet naar Excel-syntaxis
Versie 2.88.228
Toegevoegd
OpenODSlost nu overgeerfde ODS-rij- en kolomstijlen op. Tabelrij- en tabelkolomstijlen diestyle:parent-style-namegebruiken, erven nu ouderrij-hoogte, kolombreedten en verborgen zichtbaarheid wanneer ODS-pakketten naar kindstijlen verwijzen vanuitcontent.xml
Versie 2.88.227
Toegevoegd
OpenODSlost nu overgeerfde ODS-tabelcelstijlen op. Tabelcelstijlen diestyle:parent-style-namegebruiken, erven nu de gegevensstijl-toewijzingen van de ouder tijdens ODS-import, zodat kindstijlen geïmporteerde XLSXNumberFormat-waarden behouden zelfs wanneer de gegevensstijl op de ouderstijl is gedeclareerd
Versie 2.88.226
Toegevoegd
OpenODSlaadt nu ODS-rij- en kolomstijlen vooraf die zijn opgeslagen instyles.xml. Tabelrij- en tabelkolomstijleigenschappen uitstyles.xmlvoeden nu de import van verborgen rij/kolom en rijhoogte/kolombreedte wanneercontent.xmlnaar die stijlnamen verwijst
Versie 2.88.225
Toegevoegd
OpenODSgebruikt nu ODS-gegevensstijlen opgeslagen instyles.xml. Benoemde tabelcelstijlen en getal/datum/tijd-gegevensstijlen uitstyles.xmlnemen nu deel aan de XLSXNumberFormat-resolutie bij import, terwijl automatische stijlen incontent.xmlze nog steeds kunnen overschrijven
Versie 2.88.224
Toegevoegd
OpenODSimporteert nu ODS-breukgetalformaten. ODSnumber:fraction-componenten worden nu toegewezen aan XLSX-breukformaten zoals0 ?/??, waarbij breukweergave-instellingen behouden blijven tijdens import
Versie 2.88.223
Toegevoegd
OpenODSimporteert nu ODS-wetenschappelijke getalformaten. ODSnumber:scientific-number-componenten worden nu toegewezen aan XLSX-getalformaten zoals0.000E+00, waarbij weergave-instellingen voor wetenschappelijke notatie behouden blijven tijdens import
Versie 2.88.222
Toegevoegd
OpenODSbehoudt nunumber:text-literals in ODS-numerieke gegevensstijlen. Getal-, percentage- en valutastijlen dienumber:textvoor of nanumber:numberplaatsen, importeren die literals nu in het XLSX-getalformaat, waarbij labels en eenheidssuffixen zoalskgbehouden blijven
Versie 2.88.221
Opgelost
OpenODSimporteert nu negatieve ODS-tijdsduren.office:time-value-waarden zoals-PT02H03M04Sworden nu geïmporteerd als negatieve tijdseriële waarden in plaats van te worden overgeslagen
Versie 2.88.220
Opgelost
OpenODSlost nu standaard celstijlen op per herhaalde kolom. Een herhaalde ODS-cel die kolomstandaardstijlgrenzen overschrijdt, past nu de standaard getalopmaak van elke doelkolom toe in plaats van de indeling van de eerste herhaalde kolom te hergebruiken
Versie 2.88.219
Toegevoegd
OpenODSbehoudt nu gedeeltelijke seconden in ODS-datumwaarden.office:date-value-tijdstempels zoals2026-06-04T12:30:00.250behouden nu hun milliseconde-component in plaats van te worden afgekapt tot hele seconden
Versie 2.88.218
Toegevoegd
OpenODSimporteert nu ODS-bladzichtbaarheid. ODS-tabellen met verborgentable:visibility-waarden zoalscollapseworden nu geïmporteerd als verborgen XLSX-werkbladen in plaats van altijd zichtbare tabbladen te worden
Versie 2.88.217
Toegevoegd
OpenODSpast nu ODS-standaard celstijlen toe.table:default-cell-style-nameop tabellen, kolommen en rijen neemt nu deel aan de getalformaat-resolutie voor cellen zonder directetable:style-name, met prioriteit van cel, rij, kolom en daarna tabel
Versie 2.88.216
Toegevoegd
OpenODSimporteert nu ODS-datum- en tijdstijlcomponenten. Datum- en tijdgegevensstijlen lezen nu veelgebruikte knooppuntennumber:year,number:month,number:day,number:hours,number:minutes,number:seconds,number:am-pmennumber:textzodat geïmporteerde cellen de componentvolgorde en scheidingstekens behouden zoalsdd/mm/yyyyofhh:mm
Versie 2.88.215
Toegevoegd
OpenODSimporteert nu ODS-minimumcijfer-getalformaten. Getal-, percentage- en valutagegevensstijlen metnumber:min-integer-digitsennumber:min-decimal-placesworden nu toegewezen aan XLSXNumberFormat-tekenreeksen met voorloopnullen en optionele afsluitende decimale tijdelijke aanduidingen
Versie 2.88.214
Toegevoegd
OpenODSimporteert nu ODS-gegroepeerde getalformaten. Getal-, percentage- en valutagegevensstijlen metnumber:grouping="true"worden nu toegewezen aan XLSXNumberFormat-tekenreeksen met groeperingsscheidingstekens in de stijl van#,##0
Versie 2.88.213
Toegevoegd
OpenODSbehoudt nu ODS-valutasymbolen in geïmporteerde getalformaten. Valutagegevensstijlen metnumber:currency-symbolgebruiken dat symbool nu als het XLSXNumberFormat-voorvoegsel, zodat formaten zoalsEUR#,##0.00niet langer worden samengevouwen tot$#,##0.00
Versie 2.88.212
Toegevoegd
OpenODSrespecteert nu ODS-decimale plaatsinstellingen in basisgetalformaten. Getal-, percentage- en valutagegevensstijlen metnumber:decimal-placesworden nu toegewezen aan overeenkomende XLSXNumberFormat-tekenreeksen zoals0,0.0%of$#,##0
Versie 2.88.211
Toegevoegd
OpenODSimporteert nu niet-getypte ODS-gecachte scalaire waarden. Cellen zonderoffice:value-typegebruiken nu beschikbareoffice:value-,office:boolean-value-,office:date-value-,office:time-value- enoffice:string-value-attributen voordat ze terugvallen op tekstinhoud
Versie 2.88.210
Toegevoegd
OpenODSbehoudt nu ODS-tekstalinea-grenzen. Meerderetext:p-alinea's worden geïmporteerd met regeleinden, terwijl witruimtebesturingentext:s,text:tabentext:line-breakin de celtekst blijven in plaats van samen te worden afgevlakt
Versie 2.88.209
Toegevoegd
OpenODSimporteert nu ODS-rij- en kolomafmetingen. ODS-tabelkolom- en tabelrijstijlen metstyle:column-width/style:row-heightworden toegewezen aanColWidth/RowHeight, inclusief herhaalde rijen en kolommen
Versie 2.88.208
Toegevoegd
- XLSX-werkmapvenster-chrome en geometriebesturingen.
TXLSXWorkbookstelt nuMinimized,WindowHidden,ShowHorizontalScroll,ShowVerticalScroll,XWindow,YWindow,WindowWidthenWindowHeightbeschikbaar voor de XLSX-facade.SaveAsschrijft de overeenkomende<workbookView>-attributen,Openmaakt er een retourvlucht van, en geometriewaarden worden afgekapt tot het OOXML-compatibele bereik 0..65535
Versie 2.88.207
Toegevoegd
- XLSX-werkmapweergavebesturingen.
TXLSXWorkbookstelt nuShowSheetTabs,TabRatio,FirstSheetenAutoFilterDateGroupingbeschikbaar zodat aanroepers de werkmap-tabbalk en AutoFilter-datumgroepering kunnen besturen via de XLSX-facade.SaveAsschrijft de overeenkomende<workbookView>-attributen,Openmaakt er een retourvlucht van,TabRatiowordt afgekapt tot 0..1000 enFirstSheetwordt afgekapt tot een bestaande 0-gebaseerde bladindex
Versie 2.88.206
Toegevoegd
- Begrensde XLSX AutoFit-hulpfuncties.
TXLSXWorksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRowsen deTXLSXRange-wrappersAutoFitColumns/AutoFitRowsaccepteren nu optionele minimum- en maximumbreedte/hoogte-limieten, zodat aanroepers inhoud kunnen aanpassen terwijl rapportindelingen binnen ontwerpgrenzen blijven
Opgelost
- XLSX-HTML rijke-tekst-lettertypenamen. HTML-export geeft nu rijke-tekst
font-family-CSS uit met dubbel aanhalingstekens voor HTML-escaping, overeenkomend met de gedocumenteerde"..."-uitvoer voor opgemaakte stromen
Versie 2.88.205
Toegevoegd
- Rechthoek-, ovaal- en lijnvormen (XLS). De .xls-teken-API krijgt
Shapes.AddRectangle,Shapes.AddOvalenShapes.AddLine(plus een algemeneAddAutoShape), zodat getypte auto-vormen kunnen worden gemaakt en verankerd aan een celbereik zonder de OfficeArt-records handmatig op te bouwen. Elk geeft een vorm terug waarvan deFill- enLine-opmaak kan worden ingesteld; voorheen konden alleen afbeeldingen, tekstvakken en opmerkingen worden toegevoegd
Versie 2.88.204
Toegevoegd
- Scatter-, bel- en radargrafieken (XLSX).
AddChartaccepteert nuxlsxChartScatter(XY scatter),xlsxChartBubble(met een per-reeks belgroottebereik) enxlsxChartRadar, naast de bestaande kolom-, staaf-, lijn-, cirkel-, vlak- en ringtypes. Scatter- en belreeksen zetten het categoriebereik uit als X en het waardebereik als Y; bel voegt eenBubbleSizeRangetoe
Versie 2.88.203
Toegevoegd
- Getypeerde gegevensvalidatieregels met invoerprompts en waarschuwingen (XLS). De klassieke .xls-engine krijgt
AddWholeNumberValidation,AddDecimalValidation,AddDateValidation,AddTimeValidation,AddTextLengthValidationenAddCustomValidation(voorheen was alleen lijstvalidatie beschikbaar). Elke methode geeft de regel terug, die een invoerprompt kan bevatten, een foutmelding met een stop- / waarschuwings- / informatiepictogram, en een schakelaar voor lege waarden toestaan viaSetPrompt/SetError/AllowBlank
Versie 2.88.202
Toegevoegd
- Invoerprompts en foutmeldingen voor gegevensvalidatie (XLSX). Een gegevensvalidatieregel kan nu een invoerpromptvenster bevatten (titel en bericht weergegeven wanneer de cel geselecteerd is) en een foutmeldingsvenster (titel, bericht en een stop- / waarschuwings- / informatiepictogram weergegeven bij ongeldige invoer), plus het instellen van de vervolgkeuzepijl van de lijst. Stel ze in via
SetPrompt,SetErroren de nieuwe eigenschappenPromptTitle/Prompt/ErrorTitle/ErrorMessage/ErrorStyle/ShowDropDown; voorheen waren alleen de schakelaars voor het tonen van berichten beschikbaar. Ze worden behouden bij opslaan en opnieuw laden
Versie 2.88.201
Toegevoegd
- Meer typen regels voor voorwaardelijke opmaak (XLSX). De XLSX-engine krijgt tekstregels (bevat, bevat niet, begint met, eindigt met), top/onderste N (met optioneel percentage), boven- en ondergemiddeld, dubbele en unieke waarden, en lege / niet-lege / fout / niet-fout waarden — elk via een speciale
AddCondFormat*-methode en elk in staat om een markering te hebben via zijnStyle. Deze regels blijven ook behouden bij opslaan en opnieuw laden
Versie 2.88.200
Toegevoegd
- Formulegestuurde voorwaardelijke opmaak (XLSX). Een nieuwe regel voor voorwaardelijke opmaak markeert cellen op basis van een willekeurige formule via
AddCondFormatExpression: de formule wordt per cel geëvalueerd en de cellen waarvoor deze waar is, nemen de markering van de regel over
Gewijzigd
- Voorwaardelijke opmaak markeert nu cellen in .xlsx. Voorwaardelijke opmaakregels op basis van celwaarden en formules bevatten nu een differentiële stijl — opvulkleur, letterkleur en vet / cursief / onderstrepen — opgeslagen in de stijltabel van het werkboek, zodat Excel de overeenkomende cellen inkleurt. Voorheen werden XLSX-voorwaardelijke opmaakregels opgeslagen zonder markering
Versie 2.88.199
Toegevoegd
- Formulefuncties TEXTJOIN en CONCAT. De ingebouwde formulerekenmachine evalueert nu
TEXTJOIN(tekstwaarden samenvoegen met een scheidingsteken, waarbij lege cellen optioneel worden overgeslagen) enCONCAT(tekstwaarden samenvoegen zonder scheidingsteken), beide waarbij bereikargumenten cel voor cel worden uitgebreid — in tegenstelling tot het oudereCONCATENATE. Opgeslagen.xlsx-bestanden schrijven deze Excel 2016-functies met het voorvoegsel_xlfn.zodat Excel ze als echte functies opent, en het opnieuw openen toont de gewone naam
Versie 2.88.198
Toegevoegd
- Formulefuncties SUMIFS, COUNTIFS, AVERAGEIFS, MAXIFS en MINIFS. De ingebouwde formulerekenmachine evalueert nu deze aggregaties met meerdere voorwaarden, die cellen die aan alle criteria voldoen optellen, tellen, gemiddeld nemen of de grootste of kleinste waarde retourneren voor één of meer parallelle bereiken; criteria accepteren vergelijkingsoperatoren zoals
">=30"en tekstjokertekens. AVERAGEIFS zonder overeenkomende cellen retourneert #DIV/0! en MAXIFS/MINIFS retourneren 0, zoals in Excel, en de nieuwere MAXIFS en MINIFS worden naar.xlsxgeschreven met het voorvoegsel_xlfn.van Excel
Versie 2.88.197
Toegevoegd
- Formulefuncties IFS, SWITCH en IFNA. De ingebouwde formulerekenmachine evalueert nu de moderne logische functies
IFS(de waarde van de eerste voorwaarde die waar is),SWITCH(een expressie matchen met een lijst van gevallen, met optioneel standaard), enIFNA(een waarde vervangen alleen wanneer het resultaat de #N/B-fout is). Omdat deze functies na de oorspronkelijke .xls-functieset zijn geïntroduceerd, schrijft opslaan naar.xlsxze nu met het voorvoegsel_xlfn.van Excel zodat Excel ze als echte functies opent, en het heropenen van zo'n bestand toont opnieuw de gewone functienaam
Versie 2.88.196
Toegevoegd
- Formulefuncties INDEX en OFFSET. De ingebouwde formulerekenmachine evalueert nu
INDEX(een waarde lezen op basis van zijn rij- en kolompositie binnen een bereik) enOFFSET(een waarde lezen op een bepaald aantal rijen en kolommen van een ankercel), beide viaCalculate. Tweerichtings-INDEX/MATCH-zoekopdrachten enOFFSET-verankerde verwijzingen berekenen nu correct, en een positie buiten het bereik retourneert de #VERW!-fout zoals in Excel
Versie 2.88.195
Opgelost
- Geëxporteerde HTML behoudt de randen en arcering van de koprij. Wanneer een cel een benoemd lettertype gebruikte, schreef de XLSX-naar-HTML-export de lettertypenaam tussen dubbele aanhalingstekens binnen een stijlattribuut tussen dubbele aanhalingstekens, waardoor de stijl werd afgekapt en de cel zijn randen, opvulling en grootte verloor. Lettertypenamen worden nu tussen enkele aanhalingstekens gezet, zodat een gestileerde koprij wordt geëxporteerd met zijn rasterlijnen intact — inclusief de lijn die de bovenkant van de tabel sluit — samen met zijn achtergrondkleur
- RTF-export komt nu overeen met de HTML- en Excel-indeling. De XLSX-naar-RTF-export heeft celranden, overlopende samengevoegde cellen en egale opvularcering gekregen, en schaalt nu de kolombreedten verkleind zodat ze op de afdrukbare pagina passen, zodat een brede auto-fit-kolom de tabel niet meer buiten de pagina duwt. Voorheen had de RTF-tabel geen randen, werden samengevoegde titels weggelaten en kon de tabel veel breder zijn dan de pagina
Versie 2.88.194
Opgelost
- Het opnieuw opslaan van een .xls-werkboek met een tekstvak beschadigt het niet meer. Het openen van een XLS-bestand met een tekstvak en het opnieuw opslaan ervan dupliceerde voorheen een interne tekeningrecord, waardoor een werkboek werd gemaakt dat Excel liet crashen wanneer het bestand werd heropend. De tekstvaktekeninggegevens worden nu correct bewaard, zodat het opnieuw opgeslagen werkboek normaal wordt geopend
Versie 2.88.193
Opgelost
- Met wachtwoord beveiligde .xlsx-bestanden worden nu geopend in Excel. Het opslaan van een werkboek met een wachtwoord via
SaveAsEncryptedproduceerde voorheen een ECMA-376 Standard Encryption-pakket waarvan de AES-coderingstekst incorrect werd gegenereerd, zodat Excel het bestand weigerde zelfs met het juiste wachtwoord. De AES-128-versleuteling produceert nu standaard-conforme uitvoer, en het versleutelde werkboek wordt geopend in Excel 2007 en later met het wachtwoord dat is gebruikt om het op te slaan
Gewijzigd
- Hardwareversnelde AES voor XLSX-versleuteling. Het AES-128-cijfer achter XLSX Standard Encryption gebruikt nu AES-NI CPU-instructies op zowel 32-bit als 64-bit Windows wanneer de processor dit ondersteunt, waardoor met wachtwoord beveiligde opslagbewerkingen sneller worden. Processors zonder AES-NI vallen automatisch terug op de draagbare software-implementatie, zodat de uitvoer op elke machine identiek is
Versie 2.88.192
Toegevoegd
- Matrixformules blijven behouden na XLSX-opslaan en heropenen. Een meercellige matrix-(CSE-)formule ingesteld met
SetArrayFormulawordt nu opgeslagen in en herladen uit.xlsx-bestanden als een echte matrixformule, zodat het opslaan van een werkboek en het heropenen ervan het verankerde overloopbereik intact houdt en elke cel nog steeds zijn eigen element van het matrixresultaat evalueert. Voorheen verloor een opgeslagen matrixformule zijn overloopbereik wanneer het bestand werd heropend
Versie 2.88.191
Toegevoegd
- Matrixformules overlopen een celbereik (XLSX). Het bereik van de XLSX-engine krijgt dezelfde
SetArrayFormulaals de XLS-engine: een meercellige matrix-(CSE-)formule zoals{=MMULT(A1:B2;D1:E2)}ingesteld over een blok cellen verspreidt zijn matrixresultaat zodat elke cel zijn eigen element evalueert. Dit voltooit de ondersteuning van meercellsmatrixformules in zowel de XLS- als de XLSX-engine
Versie 2.88.190
Toegevoegd
- Matrixformules overlopen een celbereik (XLS). Een nieuwe methode
SetArrayFormulaop een bereik stelt een meercellige matrix-(CSE-)formule in zoals{=MMULT(A1:B2;D1:E2)}over een blok cellen, en de formulerekenmachine verspreidt nu het matrixresultaat in dat blok zodat elke cel zijn eigen element leest. Voorheen werd een cel met een matrixformule geëvalueerd als niet-ondersteund. De matrix wordt één keer per herberekening berekend en gedeeld over het gehele bereik
Versie 2.88.189
Toegevoegd
- Formulefuncties MINVERSE en MMULT. De ingebouwde formulerekenmachine evalueert nu
MINVERSE(matrixinverse) enMMULT(matrixproduct). Aangeroepen viaCalculategeeft elk de resulterende matrix terug als een tweedimensionaal array dat element voor element kan worden gelezen.MINVERSEvereist een vierkant bereik en retourneert de #NUM!-fout voor een singuliere matrix;MMULTvereist dat de interne dimensies overeenkomen (kolommen van het eerste bereik gelijk aan rijen van het tweede) en retourneert anders de #WAARDE!-fout
Versie 2.88.188
Toegevoegd
- Formulefunctie MDETERM. De ingebouwde formulerekenmachine evalueert nu
MDETERM, die de matrixdeterminant van een vierkant bereik retourneert viaCalculate. Een niet-vierkant bereik, of een bereik dat een lege of niet-numerieke cel bevat, retourneert de #WAARDE!-fout zoals in Excel
Versie 2.88.187
Toegevoegd
- Statistische formulefuncties. De ingebouwde formulerekenmachine evalueert nu
MEDIAN,LARGE,SMALLenRANK, zodat formules die een bereik met getallen samenvatten correct worden herberekend viaCalculate.MEDIANaccepteert een mix van inline getallen en bereiken;LARGEenSMALLretourneren de k-de grootste en k-de kleinste waarde;RANKrapporteert de positie van een getal, standaard gerangschikt in aflopende volgorde of oplopend wanneer een argument met een waarde ongelijk aan nul wordt opgegeven
Versie 2.88.186
Toegevoegd
- Zoekformulevuncties. De ingebouwde formulerekenmachine evalueert nu
CHOOSEenMATCH, zodat formules die een argument per index kiezen of de positie van een waarde in een rij of kolom bepalen correct worden herberekend viaCalculate.MATCHondersteunt alle drie zoektypen — exact (0), de grootste waarde die niet groter is dan de zoekwaarde in een oplopend bereik (1, de standaard), en de kleinste waarde die niet kleiner is dan de zoekwaarde in een aflopend bereik (-1) — en vergelijkt tekst hoofdletterongevoelig
Versie 2.88.185
Toegevoegd
- Financiële formulefuncties. De ingebouwde formulerekenmachine evalueert nu
PV,FV,PMT,NPERenRATE, zodat formules voor huidige waarde, toekomstige waarde, betaling, looptijd en rentevoet correct worden herberekend viaCalculate. De optionele argumenten voor toekomstige/huidige waarde en betalingstiming (type) worden gehonoreerd, enRATEwordt iteratief opgelost
Opgelost
- Decimaaltekens in formuutreeksen. Een probleem opgelost waarbij een formuutreeks doorgegeven aan
Calculatedie een decimaalteken bevatte (bijvoorbeeld=PV(0.05;10;100)) niet kon worden geparseerd; numerieke literals met een fractioneel deel worden nu correct geëvalueerd
Versie 2.88.184
Toegevoegd
- Informatiefuncties voor formules. De ingebouwde formulerekenmachine evalueert nu
ISERROR,ISERR,ISNA,ISNUMBER,ISLOGICAL,ISNONTEXTenISREF, zodat fouttest- en tyPetestformules correct worden herberekend viaCalculate.ISERRsluit #N/B uit terwijlISNAalleen #N/B matcht
Versie 2.88.183
Toegevoegd
- Tekstfuncties voor formules. De ingebouwde formulerekenmachine evalueert nu
FIND,SEARCH,SUBSTITUTE,REPLACE,TRIM,PROPER,CLEAN,CHAR,CODE,T,EXACTenREPT, zodat werkbladen die deze tekstfuncties gebruiken correct worden herberekend viaCalculatein plaats van een niet-ondersteund-functie-resultaat te retourneren.FINDis hoofdlettergevoelig terwijlSEARCHdat niet is
Opgelost
- CHAR-functie herkend. Een naamopzoekprobleem opgelost waarbij de
CHAR-functie was geregistreerd onder de verkeerde letterhoofdletterbehandeling en niet kon worden opgelost in formules
Versie 2.88.182
Gewijzigd
- Formulefunctie IFERROR. De formule-engine herkent en evalueert nu
IFERROR(value, value_if_error), waarbij de terugvalwaarde wordt geretourneerd wanneer het eerste argument evalueert naar een Excel-fout (#NULL!, #DEEL/0!, #WAARDE!, #VERW!, #NAAM?, #GETAL!, #N/B) en anders de waarde zelf. Het wordt ondersteund op beide engines — gecodeerd als een functietoken in .xls (BIFF8) en als een<f>-formuutreeks in .xlsx (OOXML) — zodat werkboeken correct worden geopend en herberekend in Excel
Opgelost
- NA() retourneert nu #N/B. De functie
NA()evalueert naar de #N/B-foutwaarde in plaats van als niet-ondersteund te worden gerapporteerd, zodat foutafhandelingsformules die erop zijn gebaseerd (bijvoorbeeldIFERROR(NA(), 0)) werken zoals verwacht
Versie 2.88.181
Toegevoegd
- Tekstvakken (XLSX). Het nieuwe
TXLSXWorksheet.AddTextBoxvoegt een zelfstandig tekstvak toe dat is verankerd aan een celrechthoek, uitgestoten in de werkbladtekening als een vorm met een tekstlichaam. Dit brengt de XLSX-engine op één lijn met de bestaande ondersteuning voor tekstvakken in de XLS-engine
Versie 2.88.180
Toegevoegd
- Benoemde papierformaatconstanten (XLSX). De XLSX-engine voegt
xlsxPaperLetter,xlsxPaperA4,xlsxPaperA3en de anderexlsxPaper*-constanten toe voor de eigenschapTXLSXWorksheet.PaperSize, overeenkomend met dexlPaper*-constanten van de XLS-engine, zodat het papierformaat op naam kan worden ingesteld in plaats van een onbewerkte Excel-papiercode
Versie 2.88.179
Toegevoegd
- XLS-documenteigenschappen. De XLS-engine krijgt
IXLSWorkBook-eigenschappenTitle,Subject,Author,Keywords,Comments,CompanyenManager, geschreven naar de .xls OLE SummaryInformation / DocumentSummaryInformation-stromen (als Unicode) bij opslaan, zodat het deelvenster Bestand > Info in Excel ze toont. Dit brengt de XLS-engine op één lijn met de bestaande set documenteigenschappen van de XLSX-engine
Versie 2.88.178
Toegevoegd
- Vlak- en ringdiagrammen (XLSX).
TXLSXChartTypevoegtxlsxChartAreaenxlsxChartDoughnuttoe naast de bestaande kolom-, staaf-, lijn- en cirkeltypen, zodatTXLSXWorksheet.AddChartvlak- en ringdiagrammen kan uitstoten. De XLS (BIFF8) diagramengine behoudt zijn kolom / staaf / lijn / cirkel set
Versie 2.88.177
Toegevoegd
- API-pariteit voor bereikbewerkingen tussen engines. De XLSX-engine krijgt Excel-achtige bereikmethoden
TXLSXRange.CopyTo,MoveTo,InsertRows,DeleteRows,InsertColsenDeleteCols; de XLS-engine krijgt werkbladmethoden met coördinatenIXLSWorksheet.CopyRange,MoveRange,InsertRows,DeleteRows,InsertColsenDeleteCols. Beide engines bieden nu bereik kopiëren/verplaatsen en volledige rij-/kolominvoeging/-verwijdering onder overeenkomende namen
Versie 2.88.176
Toegevoegd
- Ingebouwde celstijlen. Nieuwe
TXLSXRange.ApplyBuiltinStyle(XLSX) enIXLSRange.ApplyBuiltinStyle(XLS) reproduceren het uiterlijk van de standaard benoemde celstijlen van Excel — Goed, Slecht, Neutraal, Berekening, Selectiecel, Verklarende tekst, Invoer, Gekoppelde cel, Noot, Uitvoer, Waarschuwingstekst, Koptekst 1-4, Titel, Totaal en Accent 1-6 — in één aanroep door de bijbehorende opvulling en lettertype toe te passen
Versie 2.88.175
Toegevoegd
- Bereiksortering. Nieuwe
TXLSXRange.Sort/TXLSXWorksheet.SortRange(XLSX) enIXLSWorksheet.SortRange(XLS) herordenen de rijen van een rechthoek op één of meer sleutelkolommen, oplopend of aflopend. Volledige rijen verplaatsen samen met waarden en celopmaak; gelijke sleutels behouden hun oorspronkelijke volgorde (stabiel sorteren), en lege cellen worden altijd als laatste gesorteerd
Versie 2.88.174
Toegevoegd
OpenCSVimporteert CSV- en TSV-bestanden in een werkblad. Nieuwe overloadsTXLSWorkbook.OpenCSVenTXLSXWorkbook.OpenCSVlezen gescheiden tekst met automatische scheidingsteken-detectie (komma, puntkomma, tab of sluisteken), BOM-gebaseerde coderingsdetectie (UTF-8 en UTF-16) en RFC 4180-aanhalingstekensverwerking.Openleidt.csv- en.tsv-bestanden nu automatisch door naar de importer
Gewijzigd
- Optionele detectie van waardetypen. Numerieke, ISO-8601-datum- en booleaanse velden worden standaard gepromoveerd naar getypeerde celwaarden; detectie kan worden uitgeschakeld om elk veld als tekst te bewaren, waarbij voorloopnullen, lange cijferreeksen en met
=voorafgegaande tekst worden behouden
Versie 2.88.173
Gewijzigd
OpenODSimporteert nu de zichtbaarheid van verborgen rijen en kolommen. ODStable-row- entable-column-stijlen mettable:visibility-waarden zoalscollapseoffilterworden nu toegewezen aanRowHidden/ColHidden, inclusief herhaalde rijen en kolommen
Versie 2.88.172
Gewijzigd
- XLSX HTML-export behoudt nu verticale uitlijning.
TXLSXWorkbook.SaveAsHTMLenTXLSXRange.SaveAsHTMLstoten CSSvertical-align-regels uit voor boven-, midden-, uitgevulde en gedistribueerde celuitlijning wanneerIncludeStylesis ingeschakeld
Versie 2.88.171
Gewijzigd
- XLSX HTML-export slaat nu verborgen rijen en kolommen over.
TXLSXWorkbook.SaveAsHTMLenTXLSXRange.SaveAsHTMLlaten rijen gemarkeerd doorRowHidden, kolommen gemarkeerd doorColHiddenen expliciete kolommen met nulbreedte weg uit de gegenereerde tabel en<colgroup>
Versie 2.88.170
Gewijzigd
- XLSX HTML-export behoudt nu celranden. Wanneer stijlen zijn opgenomen, stoten
TXLSXWorkbook.SaveAsHTMLenTXLSXRange.SaveAsHTMLcelrandkanten uit als CSS-stijlenborder-left,border-right,border-topenborder-bottom
Versie 2.88.169
Gewijzigd
- XLSX HTML-export behoudt nu opgemaakte tekstreeksen. Wanneer stijlen zijn opgenomen, stoten
TXLSXWorkbook.SaveAsHTMLenTXLSXRange.SaveAsHTMLTXLSXRichText-reeksen uit als ge-escapede<span>-elementen met inline lettertype-, kleur-, nadruk- en onderstrepingsstijlen
Versie 2.88.168
Gewijzigd
- XLSX HTML-export behoudt nu expliciete rij- en kolomgroottes. Wanneer stijlen zijn opgenomen, schrijven
TXLSXWorkbook.SaveAsHTMLenTXLSXRange.SaveAsHTMLexplicieteColWidth-waarden via een<colgroup>en explicieteRowHeight-waarden als hoogtestijlen van<tr>
Versie 2.88.167
Gewijzigd
- XLSX HTML-export bevat nu celopmerkingen als tooltips.
TXLSXWorkbook.SaveAsHTMLenTXLSXRange.SaveAsHTMLschrijven XLSX-opmerkingen naar ge-escapedetitle-attributen van<td>, en export op werkboekniveau breidt zijn tabelbegrenzing uit om opmerkingsankers op te nemen
Versie 2.88.166
Gewijzigd
- XLSX HTML-export behoudt nu hyperlinks en verankerde afbeeldingen.
TXLSXWorkbook.SaveAsHTMLenTXLSXRange.SaveAsHTMLomhullen gekoppelde cellen in ge-escapede<a>-ankers en stoten verankerde afbeeldingen uit als inlinedata:-afbeeldings-URI's. Export op werkboekniveau breidt zijn tabelbegrenzing ook uit om hyperlink- en afbeeldingsankers buiten gevulde cellen op te nemen
Versie 2.88.165
Toegevoegd
TXLSXTablebehoudt nu de zichtbaarheid van de totalenrij. De nieuwe eigenschapTotalsRowShownschrijft en leest de OOXML-vlagtotalsRowShownzodat XLSX-tabellen hun totalenrij ingeschakeld kunnen houden over SaveAs/Open-cycli heen
Versie 2.88.164
Toegevoegd
TXLSXWorksheetheeft nu getypeerde gegevensvalidatiehulpfuncties.AddWholeNumberValidation,AddDecimalValidation,AddDateValidation,AddTimeValidation,AddTextLengthValidationenAddCustomValidationvoegen veelgebruikte XLSX-regels toe zonder handmatigTXLSXDataValidationType-waarden door te geven
Versie 2.88.163
Gewijzigd
OpenODSimporteert nu ODS-teksthyperlinks. ODStext:a-koppelingen metxlink:hrefmaken nuTXLSXHyperlinks-vermeldingen aan, bewaren ankertekst in de geïmporteerde celwaarde en wijzen fragmentdoelen zoals#Sheet.A1toe aan interne werkboekkoppelingen
Versie 2.88.162
Gewijzigd
OpenODSimporteert nu basale celopmerkingen. ODS-cellen metoffice:annotationmaken nuTXLSXComments-vermeldingen aan met opmerkingstekst endc:creatorals auteur, terwijl annotatietekst buiten de celwaarde wordt gehouden
Versie 2.88.161
Gewijzigd
ApiTour-demo's bestrijken nu de huidige XLSX-workflowhelpers. De Delphi- en C++Builder-ApiTour-voorbeelden demonstreren nuWriteRows,ForEachRow,PreviewAutoFilterRows,AutoFilterRowVisible,TXLSXHtmlExportOptionsenOnUserFunctionExnaast werkboekaanmaak, export en heropen-inspectiestromen
Versie 2.88.160
Toegevoegd
OnUserFunctionExvoegt contextbewuste aangepaste formule-callbacks toe.TXLSWorkbook,IXLSWorkbookenTXLSXWorkbookkunnen nu eenTXLSUserFunctionContextontvangen met bladindex, rij en kolom wanneerCalculateeen aangepaste of niet-ondersteunde werkbladfunctie delegeert aan toepassingscode
Versie 2.88.159
Toegevoegd
TXLSXHtmlExportOptionsvoegt configureerbare XLSX HTML-export toe. Werkboek- en bereiks-SaveAsHTML-overloads kunnen de documenttitel overschrijven, een tabel-CSS-klasse toepassen, inline/standaardstijlen weglaten, de UTF-8 BOM onderdrukken of een tabelfragment uitstoten zonder het omringende HTML-document
Versie 2.88.158
Toegevoegd
TXLSXWorksheet.AutoFilterRowVisibleenPreviewAutoFilterRowsvoegen AutoFilter-voorbeeldevaluatie toe. Toepassingen kunnen testen of een rij overeenkomt met de opgeslagen XLSX AutoFilter-criteria van het werkblad of de gefilterde gegevensrijen doorlopen met een zichtbaarheidscallback, zonder de vlaggen voor verborgen rijen te wijzigen
Versie 2.88.157
Toegevoegd
TXLSXWorksheet.WriteRowsvoegt rijbatch XLSX-uitvoer toe. Aanroepers kunnen een numeriek of A1-stijl bereik één rij tegelijk vullen door eenVariant-array te retourneren, met overslaan van gehele rijen, annulering en een telling van geschreven rijen
Versie 2.88.156
Toegevoegd
TXLSXWorksheet.ForEachRowvoegt XLSX-scannen op rijniveau toe. De callback wordt eenmaal per geladen rij uitgevoerd, rapporteert de rij plus de eerste en laatste geladen kolommen, retourneert het aantal bezochte rijen en ondersteunt annulering
Versie 2.88.155
Gewijzigd
OpenODSimporteert nu gecachete scalaire resultaten uit ODS-formulecellen. Wanneer een formuelecel numerieke, booleaanse, datum- of tijdgecachete waarden opslaat zonderoffice:value-type, behoudt de importer de gecachete celwaarde terwijl ODS-formulesyntaxis ongeconverteerd blijft
Versie 2.88.154
Gewijzigd
OpenODSbehoudt nu basale ODS-getal- en datumopmaak. ODS-tabelcelstijlen gekoppeld aan datum-, tijd-, getal-, percentage- of valuta-gegevensstijlen worden nu toegewezen aan XLSX-NumberFormat-reeksen zoalsyyyy-mm-dden0.00, zodat geïmporteerde waarden basale weergaveopmaak behouden
Versie 2.88.153
Gewijzigd
- ODS samengevoegde cellen worden nu als XLSX samengevoegde bereiken geïmporteerd.
OpenODSkoppelttable:number-columns-spannedentable:number-rows-spannedop ODS-cellen aanTXLSXMergedCells, bewaart de waarde in de cel linksboven en laat bedekte cellen leeg
Versie 2.88.152
Gewijzigd
- ODS-bladnamen kunnen nu worden gelezen zonder werkbladen te laden.
TXLSXWorkbook.GetODSSheetNames(FileName, AList)enGetODSSheetNames(Stream, AList)scannencontent.xml-tabelnamen uit.ods-pakketten, decoderen XML-escapes, genereren standaardnamen voor naamloze tabellen en laten de werkboekinstantie ongewijzigd
Versie 2.88.151
Gewijzigd
- Klassieke XLS DIMENSION-records informeren nu lege gebruikte bereiken. Wanneer een door Excel geschreven .xls-werkblad een gebruikt bereik declareert in
DIMENSIONmaar geen celrecords bevat, stelt HotXLS dat bereik nu beschikbaar viaUsedRangeen behoudt het tijdens openen/opslaan in plaats van terug te vallen naarA1
Versie 2.88.150
Opgelost
- BIFF5-externe formuleverwijzingen laden nu correct. De klassieke XLS-parser lost nu positieve Excel5 externe bladindexen op in
tRef3d/tArea3d- entNameX-tokens, zodat verouderde .xls-formules bladgekwalificeerde 3D-bereiken en externe-naamverwijzingen bewaren tijdens openen/opslaan
Versie 2.88.149
Verwijderd
- BIFF8-berekenings- en stijlextensie-records worden nu bewaard. HotXLS behoudt door Excel geschreven
MTRSettings-,ForceFullCalculation-,CrErr-, werkblad-Uncalced-,XFCRC-, onafhankelijkeDXF-,StyleExt- enTableStyles-familierecords tijdens klassieke XLS open/opslaan-cycli, zodat herberekenings- en stijlextensie-metadata niet meer verloren gaat
Versie 2.88.148
Toegevoegd
- C++Builder-demo's komen nu overeen met de Delphi-voorbeelddekking. C++Builder-projecten toegevoegd voor
XlsTables,XlsCondFormat12enXlsCreateChart, met bijbehorende README-pagina's en Win32/Win64-bouwdekking
Versie 2.88.147
Verwijderd
- BIFF8 Aangepaste weergaven overleven nu klassieke XLS-bewaarronden. HotXLS behoudt door Excel geschreven
USERSVIEWBEGIN/USERSVIEWEND-blokken in werkboekglobals en werkbladsubstromen, inclusief niet-gemodelleerde records in het blok, zodat opgeslagen aangepaste weergaven niet worden weggegooid tijdens openen/opslaan
Versie 2.88.146
Verwijderd
- BIFF8-werkboekweergave en -extensieglobals worden nu bewaard. HotXLS behoudt door Excel geschreven
HIDEOBJ-, nulbreedte-TEMPLATE-,TABID- enBOOKEXT-records tijdens openen/opslaan zodat het beleid voor weergave van verborgen objecten, sjabloonmarkeringen, tabblad-ID's en werkboekextensie-metadata niet verloren gaat
Versie 2.88.145
Gewijzigd
- TXLSXWorkbook kan nu basale OpenDocument Spreadsheet-bestanden importeren.
OpenODS(FileName)enOpenODS(Stream)lezencontent.xml-tabellen uit.ods-pakketten in werkbladen, waarbij bladnamen, scalaire waarden, herhaalde rijen en herhaalde kolommen worden bewaard. Stijlen, formules, tekeningen, grafieken en geavanceerde ODS-functies worden niet geconverteerd
Versie 2.88.144
Gewijzigd
- XLSX-rij- en kolomwijzigingen werken nu AutoFilter-kolomcriteria bij.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsenDeleteColswijzen nuAutoFilterColumnsColId-offsets opnieuw toe wanneer het filterbereik beweegt en verwijderen criteria die vallen binnen verwijderde kolommen
Versie 2.88.143
Gewijzigd
- XLSX-rij- en kolomwijzigingen werken nu handmatige pagina-einden bij.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsenDeleteColsverplaatsen nu rij- en kolompagina-einden met het bewerkte raster en verwijderen einden die vallen binnen verwijderde rijen of kolommen
Versie 2.88.142
Gewijzigd
- XLSX-rij- en kolomwijzigingen werken nu afdrukinstelling-verwijzingen bij.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsenDeleteColspassen nuPrintArea,PrintTitleRowsenPrintTitleColsaan zodat afgedrukte bereiken en herhaaltitels het bewerkte raster volgen
Versie 2.88.141
Gewijzigd
- XLSX-rij- en kolomwijzigingen werken nu interne hyperlink-doelen bij.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsenDeleteColspassen nu interneTXLSXHyperlink.Location-ankers op het bewerkte blad en bladgekwalificeerde interne doelen elders in het werkboek aan
Versie 2.88.140
Gewijzigd
- XLSX-rij- en kolomwijzigingen werken nu regelformules bij.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsenDeleteColspassen nu A1-verwijzingen aan inTXLSXConditionalFormat.Formula1/Formula2enTXLSXDataValidation.Formula1/Formula2, terwijl numerieke drempelwaarden en letterlijke lijsten ongewijzigd blijven
Versie 2.88.139
Gewijzigd
- XLSX-rij- en kolomwijzigingen werken nu grafiekreeksbereiken bij.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsenDeleteColspassen nuTXLSXChartSeries.CategoriesRangeenValuesRangeaan voor grafieken op het bewerkte blad en grafieken elders die bladgekwalificeerde verwijzingen gebruiken, waardoor grafiekgegevensbindingen na opslaan/heropenen cycli uitgelijnd blijven
Versie 2.88.138
Gewijzigd
- XLSX-rij- en kolomwijzigingen werken nu celformules bij.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsenDeleteColspassen nu A1-verwijzingen aan in overlevende celformules op het bewerkte blad en bladgekwalificeerde formules elders in het werkboek, terwijl teeksen en niet-gerelateerde bladen ongewijzigd blijven
Versie 2.88.137
Gewijzigd
- XLSX-rij- en kolomwijzigingen verplaatsen nu tekeningankers.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsenDeleteColsverplaatsen nu eéncelankers voor afbeeldingen en vergroten of verplaatsen tweecell-grafiekankers mee met het bewerkte raster, inclusief opslaan/heropenen-bewaarronden
Versie 2.88.136
Gewijzigd
- XLSX-rij- en kolomwijzigingen werken nu gedefinieerde namen bij.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsenDeleteColspassen nu werkboek-scoped en blad-scopedTXLSXDefinedName-formules aan die verwijzen naar het bewerkte blad, waarbij absolute A1-markeringen bewaard blijven over opslaan/heropenen-cycli
Versie 2.88.135
Toegevoegd
- Klassieke XLS-tekstvakken ondersteunen nu sub-celanker-offsets.
TXLSTextBoxsteltRow1Offs,Col1Offs,Row2OffsenCol2Offsbeschikbaar, en de offset-bewusteSetArea-overload behoudt BIFF-clientanker-offsets over opslaan/heropenen-cycli
Versie 2.88.134
Gewijzigd
- XLSX-macro-payload-controles hebben nu een alleen-lezen eigenschapsalias.
TXLSXWorkbook.VbaProjectDefinedspiegeltHasVbaProjecten geeft eigenschapsgerichte aanroepers een directe manier om te testen of eenvbaProject.bin-payload aanwezig is
Versie 2.88.133
Gewijzigd
- XLSX-werkbladen stellen nu bereikwaardewissing direct beschikbaar.
TXLSXWorksheet.ClearRangeValuesaccepteert A1-verwijzingen of rij/kolom-grenzen en wist waarden/formules terwijl stijlen worden bewaard, zodat aanroepers niet eerst eenTXLSXRange-wrapper hoeven aan te maken
Versie 2.88.132
Verwijderd
- XLSX-bereiken kunnen nu celinhoud wissen met een expliciete waardegerichte helper.
TXLSXRange.ClearValuesverwijdert waarden en formules over het bereik terwijl stijlindexen worden bewaard, overeenkomend metClearmaar waardoor alleen-inhoud-opruiming gemakkelijker te vinden is
Versie 2.88.131
Gewijzigd
- XLSX-lijstgegevensvalidatie-literals escapen nu ingesloten dubbele aanhalingstekens.
TXLSXDataValidations.AddListenTXLSXWorksheet.AddListValidationverdubbelen aanhalingstekens in kommagescheiden itemtekst voordat het als een Excel-formuutreeks wordt ingepakt, zodat vervolgkeuzelijstwaarden met aanhalingstekens correct worden bewaard
Versie 2.88.130
Verwijderd
- XLSX AutoFilter-criteria kunnen nu direct worden gewist vanuit de criteriacollectie.
TXLSXAutoFilterColumns.ClearCriteriaverwijdert alle opgeslagen per-kolom filtercriteria terwijl het werkblad-AutoFilterRangeintact blijft
Versie 2.88.129
Toegevoegd
- XLSX-samengevoegde bereiken normaliseren nu omgekeerde coördinaten bij toevoeging.
TXLSXMergedCells.Addslaat bereiken op in links-boven / rechts-onder volgorde, zelfs wanneer aanroepers de eindcel eerst doorgeven, wat stabiele verwijzingen zoalsA2:E6oplevert
Versie 2.88.128
Toegevoegd
- XLSX-werkbladcollecties ondersteunen nu direct verwijderen op naam.
TXLSXSheetsvoegtDeleteByNametoe, zodat toepassingen een werkblad op hoofdletterongevoelige naam kunnen verwijderen terwijl de actieve werkbladselectie consistent blijft
Versie 2.88.127
Toegevoegd
- XLSX-grafiekcollecties ondersteunen nu directe titelzoekopdracht en verwijdering.
TXLSXChartsvoegtIndexOfName,FindByName,DeleteByNameenDeletetoe, zodat toepassingen grafieken op titel kunnen vinden of verwijderen zonder handmatige collectiescans
Versie 2.88.126
Toegevoegd
- XLSX externe-linkcollecties ondersteunen nu directe doelzoekopdracht en verwijdering.
TXLSXExternalLinksvoegtIndexOfTarget,FindByTarget,DeleteByTargetenDeletetoe, zodat toepassingen gekoppelde werkboek-metadata kunnen inspecteren of verwijderen zonder handmatige collectiescans
Versie 2.88.125
Toegevoegd
- XLSX samengevoegde-cel-collecties ondersteunen nu directe bereiksopzoeking en verwijdering.
TXLSXMergedCellsvoegtIndexOfCell,FindAt,DeleteAtenDeleteInRangetoe, zodat toepassingen samengevoegde bereiken kunnen inspecteren of verwijderen zonder handmatige collectiescans
Versie 2.88.124
Toegevoegd
- Collecties voor voorwaardelijke opmaak en gegevensvalidatie ondersteunen nu bereikbewuste opzoeking en verwijdering.
TXLSXConditionalFormatsenTXLSXDataValidationsvoegenIndexOfCell,FindAt,DeleteAtenDeleteInRangetoe, zodat toepassingen regels kunnen vinden of verwijderen die een cel bedekken of een bereik doorsnijden zonder handmatigesqref-scans
Versie 2.88.123
Toegevoegd
- XLSX-afbeeldingscollecties ondersteunen nu directe ankeropzoeking en verwijdering.
TXLSXImagesvoegtIndexOfCell,FindAt,DeleteAt,DeleteInRangeenDeletetoe, zodat toepassingen ingesloten afbeeldingen kunnen inspecteren of verwijderen zonder handmatige collectiescans
Versie 2.88.122
Toegevoegd
- XLSX AutoFilter-kolomcollecties ondersteunen nu directe opzoeking en verwijdering.
TXLSXAutoFilterColumnsvoegtFindByColIdenDeleteByColIdtoe, zodat toepassingen per-kolom criteria kunnen inspecteren of verwijderen zonder handmatige collectiescans
Versie 2.88.121
Toegevoegd
- XLSX-tabelcollecties ondersteunen nu directe tabelopzoeking en verwijdering.
TXLSXTablesvoegtIndexOfName,FindByNameenDeleteByNametoe, zodat toepassingen benoemde werkbladtabellen kunnen vinden of verwijderen zonder handmatige collectiescans
Versie 2.88.120
Toegevoegd
- XLSX gedefinieerde-naamcollecties ondersteunen nu directe objectopzoeking en verwijdering.
TXLSXDefinedNamesvoegtIndexOfName(Name, SheetIndex)-,FindByName- enDeleteByName-overloads toe, zodat toepassingen kunnen werken met werkboek-scoped en blad-scoped namen zonder handmatige collectiescans
Versie 2.88.119
Toegevoegd
- XLSX-opmerking- en hyperlinkscollecties ondersteunen nu celopzoeking en verwijdering.
TXLSXCommentsenTXLSXHyperlinksstellenIndexOfCell,FindAt,DeleteAtenDeleteInRangebeschikbaar, zodat toepassingscode werkbladopmerkingen en -koppelingen kan vinden of verwijderen zonder handmatige collectiescans
Versie 2.88.118
Gewijzigd
- ApiTour-demo's inspecteren nu heropende XLSX-werkboekobjecten. De Delphi- en C++Builder-ApiTour-voorbeelden openen het gegenereerde XLSX-werkboek opnieuw en schrijven
reopen-inspect-rijen voor gedefinieerde namen, opmerkingen, hyperlinks, AutoFilter-bereiken en AutoFilter-criteria naarApiTour-XLSX-Modified.xlsx
Versie 2.88.117
Verwijderd
- BIFF8-bestandsdeling en revisiebeveiliging werkboekrecords worden nu bewaard. HotXLS behoudt door Excel geschreven
FILESHARING-,FILESHARING2-,PROT4REV- enPROT4REVPASS-recordlichamen tijdens openen/opslaan zodat aanbeveling voor alleen-lezen, deling en revisiebeveiliging-metadata niet worden weggegooid
Versie 2.88.116
Gewijzigd
- ApiTour-demo's bestrijken nu XLSX-werkboekobjecthelpers. De Delphi- en C++Builder-ApiTour-voorbeelden maken een gedefinieerde naam, werkbladopmerking, hyperlink, AutoFilter-bereik en AutoFilter-criteria aan terwijl de bestaande callback-, tekstvervangings- en exportworkflows worden behouden
Versie 2.88.115
Gewijzigd
- InteractiveFeatures-demo's kunnen nu klassieke XLS-draaiwerkboeken heropenen. De Delphi- en C++Builder-draaitabbladen kunnen een bestaand klassiek XLS-draaiwerkboek openen, opgeslagen draaitabellen op elk werkblad opsommen en het veldaantal, het gegevensveldaantal en het cachebronbereik van elke tabel vastleggen
Versie 2.88.114
Gewijzigd
- InteractiveFeatures-demo's kunnen nu klassieke XLS-werkboeken heropenen voor TextBox-workflows. De Delphi- en C++Builder-formulieren kunnen een bestaand klassiek XLS-werkboek openen, opgeslagen zelfstandige tekeningtekstvakken vinden, ze weergeven en bewerkings-, verwijderings-, bereikverwijderings- en opslagbewerkingen uitvoeren op het geopende bestand
Versie 2.88.113
Gewijzigd
- C++Builder-demo's bevatten nu een InteractiveFeatures-voorbeeld voor geavanceerde werkboekworkflows. Het VCL-formulier biedt hetzelfde interactieve Pivot / TextBox / Macro-pad, met getypeerde klassieke XLS-draaitabelaanmaak, bewerking van zelfstandige tekeningtekstvakken en XLSM
vbaProject.bin-payload laden/exporteren/wissen plus geparseerde module-inspectie
Versie 2.88.112
Gewijzigd
- Delphi-demo's bevatten nu een InteractiveFeatures-voorbeeld voor geavanceerde werkboekworkflows. Het VCL-formulier maakt getypeerde klassieke XLS-draaitabellen aan, bewerkt zelfstandige tekeningtekstvakken en verwerkt XLSM
vbaProject.bin-payload laden/exporteren/wissen plus geparseerde module-inspectie
Versie 2.88.111
Toegevoegd
- Klassieke XLS-werkbladen ondersteunen nu zelfstandige tekstvakken in tekeningen. Gebruik
TXLSShapes.AddTextBoxom eenTXLSTextBoxte maken met een eigen rij/kolom-anker, tekst, tekstlopen, lijn/opvulopmaak en normale verwijdering van vormen zonder een celopmerking aan te maken
Versie 2.88.110
Gewijzigd
- ApiTour-demo's behandelen nu meer patronen voor werkmapautomatisering. De Delphi- en C++Builder ApiTour-voorbeelden demonstreren op callback gebaseerd bereikschrijven met
WriteCells, scannen van geladen cellen metForEachCell, sjabloonupdates metFindTextenReplaceText, HTML-export van geselecteerde bereiken naarApiTour-Range.htmlen aangepaste Delphi-formulecallbacks viaOnUserFunction
Versie 2.88.109
Gewijzigd
- QuickStart-demo's tonen nu een uitgebreider eerste werkmap. De Delphi- en C++Builder QuickStart-voorbeelden maken een gestylede vermenigvuldigingstabel met rij- en kolomtotaalformules, bevroren deelvensters en overeenkomende XLS/XLSX-acties; de demodirectory bevat nu ook nette HTML-leespagina's voor elk voorbeeld
Versie 2.88.108
Gewijzigd
- XLSX-bereiken hebben nu directe HTML-exporthulpfuncties.
TXLSXRange.SaveAsHTML(FileName)enTXLSXRange.SaveAsHTML(Stream)exporteren alleen het geselecteerde XLSX-bereik als een UTF-8 HTML-tabel, met gebruik van de escapinglogica, eenvoudige stijluitvoer en verwerking van samengevoegde-cel-span van de werkmapHTML-renderer
Versie 2.88.107
Toegevoegd
- XLSX-werkbladen bevatten nu hulpfuncties voor zoeken en vervangen in tekst.
TXLSXWorksheet.FindTextenTXLSXWorksheet.ReplaceTextscannen geladen tekstcellen in rijvolgorde, slaan formules en niet-tekstwaarden over, en ondersteunen optionele hoofdlettergevoelige vergelijking voor sjabloonworkflows
Versie 2.88.106
Gewijzigd
- BIFF8 Window2-weergavevlaggen bewaren nu de aangepaste rasterlijn- en bevroren-deelvenster-status. HotXLS wist nu
fDefaultHdrwanneerWindow2.icvHdreen aangepaste rasterlijnkleur opslaat, bewaart door Excel geschrevenfFrozenNoSplitbij openen/opslaan en schrijftfFrozenNoSplitbijFreezePanes-uitvoer
Versie 2.88.105
Gewijzigd
- CF12-formuldre mpeliwaarden doorlopen nu heen en terug via BIFF8 Data Bar-, Color Scale- en Icon Set-regels. Op formules gebaseerde drempelwaarden worden bij opslaan gecompileerd naar CF12 formule-tokenbytes en bij heropenen van een werkmap hersteld naar
TXLSCfValue.Value
Versie 2.88.104
Gewijzigd
- Klassieke XLS-formules en icon-set-drempelwaarden genereren nu compactere BIFF8-records. Integerconstanten in formules gebruiken het compacte
tInt-token wanneer ze in het BIFF unsigned-integer-bereik passen, enTXLSIconSetSpec.ThresholdEqualsInclude[Index]bestuurt nu de CF12 icon-set drempelwaarde equals-byte zodat aanroepers de vergelijkingssemantiek kunnen kiezen (inclusief of exclusief)
Versie 2.88.103
Gewijzigd
- Klassieke XLS-werkbladen bevatten nu een tekstzoekfunctie.
IXLSWorksheet.FindText(SearchText, Row, Col[, MatchCase])zoekt de eerste overeenkomende geladen tekstcel, slaat formules en niet-tekstcellen over, en wist de geretourneerde coördinaten wanneer geen overeenkomst wordt gevonden
Versie 2.88.102
Gewijzigd
- Klassieke XLS-werkbladen bevatten nu een tekstvervangfunctie.
IXLSWorksheet.ReplaceText(SearchText, ReplacementText[, MatchCase])vervangt overeenkomsten in geladen tekstcellen, slaat formules en niet-tekstcellen over, en rapporteert het aantal gewijzigde cellen voor sjabloonfillworkflows
Versie 2.88.101
Gewijzigd
- Bereiken hebben nu directe HTML-exporthulpfuncties.
IXLSRange.SaveAsHTML(FileName)enIXLSRange.SaveAsHTML(Stream)exporteren het geselecteerde bereik via de bestaande HTML-renderer, zodat aanroepers niet langer eenTXLSHTMLExport-instantie hoeven te maken ofxlHTMLexpliciet hoeven door te geven voor veelgebruikte bereikfragmenten
Versie 2.88.100
Gewijzigd
TXLSWorkbook.GetSheetNames(Stream, AList)leest nu ook XLSX-pakketstreams naast klassieke XLS-streams. Applicaties kunnen geheugenstreams, database-BLOB-streams of gedownloade XLSX-streams doorgeven aan de klassieke gevel en ontvangen geordende werkbladnamen zonder eerst naar een bestand op te slaan
Versie 2.88.99
Toegevoegd
- API's voor werkblad opzoeken, hyperlinks maken en meervoudig bereik selecteren zijn nu eenvoudiger in gebruik. Klassieke XLS- en XLSX-bladcollecties voegen
TryGetSheetByNametoe, klassieke XLS-werkbladen voegenAddHyperlink-handigheidsmethoden toe enIXLSWorksheet.SelectAreaskan actieve meervoudige bereikselecties schrijven
Versie 2.88.98
Gewijzigd
- Klassieke XLS-werkmappen stellen nu een
UserName-alias bloot voor het veld 'opgeslagen door'.IXLSWorkbook.UserNameverwijst naar dezelfde WRITEACCESS-waarde alsLastSavedBy, zodat code die de naamgevingsconventieUserNamegebruikt de werkmap-auditnaam rechtstreeks kan lezen en bijwerken
Versie 2.88.97
Gewijzigd
- XLSX-werkbladen delen nu de callback-celscan en bereikschrijfhulpfuncties.
TXLSXWorksheet.ForEachCellsomt geladen cellen op in rijvolgorde met waarde en formule-tekst, terwijlTXLSXWorksheet.WriteCellsnumerieke of A1-stijl bereiken vult vanuit een callback met per-cel overslaan en annulering
Versie 2.88.96
Toegevoegd
- Klassieke XLS-werkbladen ondersteunen nu op callback gebaseerd bereikschrijven.
IXLSWorksheet.WriteCellsvult een op 1 gebaseerd numeriek bereik of A1-stijl bereik in rijvolgorde, laat de callback elke celwaarde opgeven, ondersteunt per-cel overslaan en kan lange schrijflussen vroegtijdig annuleren
Versie 2.88.95
Gewijzigd
- Klassieke XLS-werkbladen kunnen nu geladen cellen via een callback opsommen.
IXLSWorksheet.ForEachCelldoorloopt bestaande werkbladcellen in rijvolgorde, geeft op 1 gebaseerde blad-, rij- en kolomcoördinaten door samen met waarde en formule-tekst, en laat de callback lange scans vroegtijdig annuleren
Versie 2.88.94
Gewijzigd
- Formueleberekening kan nu door de applicatie gedefinieerde functies aanroepen.
TXLSWorkbook.OnUserFunctionenTXLSXWorkbook.OnUserFunctionlatenCalculateaangepaste of niet-ondersteunde werkbladfuncties delegeren naar applicatiecode, waarbij geëvalueerde argumenten worden doorgegeven en het geretourneerdeVariant-resultaat wordt gebruikt wanneer afgehandeld
Versie 2.88.93
Toegevoegd
- Klassieke XLS-werkbladbeveiliging stelt nu per-actie machtigingsvlaggen bloot.
IXLSWorksheetvoegtAllowDeleteRows,AllowInsertRows,AllowFormatCells,AllowSort,AllowAutoFilteren de resterende SheetProtect-machtigingseigenschappen toe, met BIFF8-opties geschreven en teruggelezen via de bestaande beveiligingsrecords
Versie 2.88.92
Gewijzigd
- Klassieke XLS VBA-payloads hebben nu expliciete laad/opslaan/wis-hulpfuncties.
IXLSWorkbook.LoadVBAProjectFromFile,SaveVBAProjectToFile,HasVBAProjectenClearVBAProjectstellen de bewaarde OLE VBA-opslagpayload bloot terwijlVBAProjectde geparseerde alleen-lezen modulesweergave blijft
Versie 2.88.91
Gewijzigd
- Klassieke XLS AutoFilter-criteria kunnen nu worden geïnspecteerd via een veldcollectie.
IXLSWorksheet.AutoFilterColumnsstelt het huidige BIFF8 AutoFilter-veldaantal en op 1 gebaseerde veldonderdelen bloot, inclusief actieve status, operator en opgeslagenCriteria1/Criteria2DOPER-waarden
Versie 2.88.90
Gewijzigd
- Klassieke XLS-werkbladen hebben nu een één-aanroep AutoFilter-criteria-instelling.
IXLSWorksheet.ApplyAutoFilterstelt een werkblad AutoFilter-bereik in en schrijft een veldcriterium in dezelfde aanroep, met A1-stijl en op 1 gebaseerde numerieke bereikoverloads plus optionele twee-criteriaoperatoren
Versie 2.88.89
Verwijderd
- Klassieke XLS-vormen kunnen nu worden verwijderd per celbereik.
TXLSShapes.DeleteInRangeverwijdert verankerde afbeeldingen of vormen waarvan de OfficeArt-clientankers een op 1 gebaseerd werkbladbereik overlappen, en retourneert het aantal verwijderde vormen
Versie 2.88.88
Gewijzigd
- Klassieke HTML-export tabellay-outattributen zijn nu configureerbaar.
TXLSHTMLExport.TableBorderWidth,CellPaddingenCellSpacingbepalen de gegenereerde<table>-attributen voor zowel gestylede als eenvoudige HTML-uitvoer, met standaardwaarden overeenkomstig de vorige nulwaarden
Versie 2.88.87
Toegevoegd
- Klassieke HTML-export ondersteunt nu minimale tabeluitvoer.
TXLSHTMLExport.SimpleExportschrijft een gewone HTML-tabel zonder gegenereerde CSS-klassen, hyperlinkankerpunten of komenopmerkingstitelattributen, met behoud van escaped weergavetekst en samengevoegde-cel-span
Versie 2.88.86
Gewijzigd
- Klassieke HTML-export kan nu een documenttitel schrijven.
TXLSHTMLExport.Titleschrijft een escaped HTML<title>-element voor het gegenereerde stijlblok, terwijl de standaard lege waarde bestaande uitvoer ongewijzigd laat
Versie 2.88.85
Gewijzigd
- Klassieke HTML-export toont celopmerkingen nu als tooltips.
TXLSHTMLExport.Optionsbevat nu standaardxhComments, waardoor tekst van celopmerkingen als escapedtitle-attributen wordt geschreven, terwijl aanroepers de optie nog steeds kunnen verwijderen voor gewone celuitvoer
Versie 2.88.84
Gewijzigd
- Klassieke HTML-export hyperlinkuitvoer is nu configureerbaar.
TXLSHTMLExport.Optionsis standaard ingesteld op[xhHyperlinks]voor bestaand gedrag, en aanroepers kunnenxhHyperlinksverwijderen om gekoppelde cellen als gewone escaped tekst te exporteren
Versie 2.88.83
Gewijzigd
- Klassieke HTML-export bewaart nu celkoppelingen.
SaveAsHTMLomsluit gekoppelde cellen met HTML-ankertags, geeft koppelingsadressen uit als escapedhref-waarden, draagt ScreenTip-tekst over als escapedtitle-attributen en houdt de weergegeven celtekst escaped binnen de koppeling
Versie 2.88.82
Gewijzigd
- Klassieke XLS-werkmappen kunnen nu de opgeslagen gebruikersnaam beheren.
IXLSWorkbook.LastSavedBystelt het WRITEACCESS-veld 'opgeslagen door' bloot zodat gegenereerde of bewerkte werkmappen een expliciete auditnaam kunnen opslaan, terwijl onbewerkte bronwerkmappen hun originele metagegevens blijven bewaren
Versie 2.88.81
Gewijzigd
- Klassieke XLS-werkbladen kunnen nu de weergegeven rasterlijnkleurindex beheren.
IXLSWorksheet.GridlineColorIndexstelt het Window2icvHdr-veld bloot zodat opgeslagen werkbladen kunnen heropenen met een gekozen rasterlijnkleur, zonder de zichtbaarheid van rasterlijnen en afdrukinstellingen voor rasterlijnen te wijzigen
Versie 2.88.80
Gewijzigd
- Klassieke XLS-werkmappen kunnen nu het actieve blad instellen op index.
IXLSWorkbook.ActiveSheetIndexstelt een op 1 gebaseerde actief-tabproperty bloot, ondersteund door het WINDOW1-actieve-bladveld, zodat opgeslagen werkmappen kunnen heropenen op een gekozen werkblad zonder het eerste zichtbare tabblad te wijzigen
Versie 2.88.79
Gewijzigd
- Klassieke XLS-werkbladoverzichten kunnen nu automatische overzichtsstijlen beheren.
TXLSOutline.ApplyStylesstelt de WSBool-overzichtstijlvlag bloot, zodat opgeslagen werkbladen de toepassing van Excel-overzichtsstijlen kunnen behouden of expliciet inschakelen zonder overzichtsniveaus of samenvattingsplaatsing te wijzigen
Versie 2.88.78
Gewijzigd
- Klassieke XLS-pagina-instellingen kunnen nu automatische pagina-einden beheren.
IXLSPageSetup.AutoPageBreaksstelt de werkblad WSBool-automatisch-pagina-eindevlag bloot, zodat opgeslagen werkbladen automatische pagina-einden ingeschakeld kunnen houden of expliciet uitschakelen terwijl handmatige pagina-einden bewaard blijven
Versie 2.88.77
Gewijzigd
- Klassieke XLS-werkmappen kunnen nu AutoFilter-datumgroepering beheren.
IXLSWorkbook.AutoFilterDateGroupingstelt de Window1-datumgroeperingsvlag bloot met een positieve booleaanse API, zodat opgeslagen werkmappen Excel's datumfiltergroepering ingeschakeld kunnen houden of expliciet uitschakelen
Versie 2.88.76
Gewijzigd
- Klassieke XLS-werkmappen kunnen nu werkmapraamposities en -afmetingen rechtstreeks instellen.
IXLSWorkbook.XWindow,YWindow,WindowWidthenWindowHeightstellen de Window1-geometrievelden bloot zodat opgeslagen werkmappen kunnen heropenen met een gekozen vensterkader
Versie 2.88.75
Gewijzigd
- Klassieke XLS-werkmappen kunnen nu de verborgen venstersstatus van de werkmap rechtstreeks opslaan.
IXLSWorkbook.WindowHiddenverwijst naar de Window1-verborgen vlag, zodat opgeslagen werkmappen kunnen heropenen met het werkmapraam verborgen zonder werkbladvisibiliteit te wijzigen
Versie 2.88.74
Gewijzigd
- Klassieke XLS-werkmappen kunnen nu de geminimaliseerde venstersstatus van de werkmap rechtstreeks opslaan.
IXLSWorkbook.Minimizedverwijst naar de Window1-geminimaliseerde vlag, zodat opgeslagen werkmappen kunnen heropenen met het werkmapraam geminimaliseerd
Versie 2.88.73
Gewijzigd
- Klassieke XLS-werkmappen kunnen nu de verticale schuifbalk verbergen of weergeven.
IXLSWorkbook.ShowVerticalScrollverwijst naar de Window1fDspVScroll-vlag, zodat opgeslagen werkmappen kunnen openen met de verticale schuifbalk verborgen of zichtbaar
Versie 2.88.72
Gewijzigd
- Klassieke XLS-werkmappen kunnen nu de horizontale schuifbalk verbergen of weergeven.
IXLSWorkbook.ShowHorizontalScrollverwijst naar de Window1fDspHScroll-vlag, zodat opgeslagen werkmappen kunnen openen met de horizontale schuifbalk verborgen of zichtbaar
Versie 2.88.71
Gewijzigd
- Klassieke XLS-werkmappen kunnen nu de bladtabbalkbalk verbergen of weergeven.
IXLSWorkbook.ShowSheetTabsverwijst naar de Window1fDspTabs-vlag, zodat opgeslagen werkmappen kunnen openen met bladtabs verborgen of zichtbaar zonder werkbladvisibiliteit te wijzigen
Versie 2.88.70
Gewijzigd
- Klassieke XLS-werkmappen kunnen nu de tabbalkverhouding van de werkmap rechtstreeks instellen.
IXLSWorkbook.TabRatiostelt de Window1wTabRatio-waarde bloot zodat aanroepers de ruimte kunnen aanpassen die is gereserveerd voor bladtabs ten opzichte van de horizontale schuifbalk
Versie 2.88.69
Gewijzigd
- Klassieke XLS-werkmappen kunnen nu het eerste zichtbare bladtabblad rechtstreeks instellen.
IXLSWorkbook.FirstSheetstelt de Window1itabFirst-waarde bloot als een op 1 gebaseerde eigenschap, zodat aanroepers kunnen kiezen welk bladtabblad aan de linkerkant verschijnt wanneer Excel de werkmap opent
Versie 2.88.68
Gewijzigd
- Klassieke XLS-werkbladen kunnen nu de zichtbaarheid van overzichtssymbolen bewaren en instellen.
IXLSWorksheet.DisplayOutlineSymbolsverwijst naar de BIFF WINDOW2fDspGuts-vlag, zodat opgeslagen bladen overzichts- en groeperingssymbolen in de vensterweergave kunnen verbergen
Versie 2.88.67
Gewijzigd
- Klassieke XLS-werkbladen kunnen nu de zichtbaarheid van rij- en kolomkoppen bewaren en instellen.
IXLSWorksheet.DisplayHeadingsverwijst naar de BIFF WINDOW2fDspRwCol-vlag, zodat opgeslagen bladen rijnummers en kolomletters in de vensterweergave kunnen verbergen
Versie 2.88.66
Gewijzigd
- Klassieke XLS-werkbladen kunnen nu de formules-tonen-weergave bewaren en instellen.
IXLSWorksheet.DisplayFormulasverwijst naar de BIFF WINDOW2fDspFmla-vlag zodat Excel een blad kan openen met formuletekst in plaats van berekende resultaten
Versie 2.88.65
Gewijzigd
- Klassieke XLS-werkbladen kunnen nu onafhankelijk het zoompercentage voor de normale weergave instellen.
IXLSWorksheet.NormalViewZoomstelt het gecachte WINDOW2 normale zoom bloot zodat aanroepers afzonderlijke zoomniveaus kunnen opslaan terwijl een blad zich in de pagina-eindevoorbeeldweergave bevindt
Versie 2.88.64
Gewijzigd
- Klassieke XLS-werkbladen kunnen nu het zoompercentage voor de pagina-eindevoorbeeldweergave rechtstreeks instellen.
IXLSWorksheet.PageBreakPreviewZoomstelt het gecachte WINDOW2-voorbeeldzoom bloot zodat aanroepers verschillende normale zoom en pagina-eindevoorbeeldzoomniveaus kunnen opslaan
Versie 2.88.63
Gewijzigd
- Klassieke XLS-werkbladen stellen nu hulpfuncties voor gesplitste deelvensters bloot.
IXLSWorksheet.SplitPanes(Width, Height)maakt een verplaatsbare deelvenstersplitsing via de bestaande BIFF-deelvensterwriter, enUnsplitPaneswist het deelvensterrecord voor het opslaan
Versie 2.88.62
Verwijderd
- Klassieke XLS-werkbladen hebben nu eenvoudigere hulpfuncties voor bevroren deelvensters.
IXLSWorksheet.FreezePanes(Cols, Rows)bevriest de gevraagde linkerkolommen en bovenste rijen, terwijlUnfreezePaneshet deelvensterrecord verwijdert voor het opslaan
Versie 2.88.61
Gewijzigd
- Klassieke XLS-bladnaamontdekking accepteert nu streams.
TXLSWorkbook.GetSheetNames(Stream, List)leest BIFF-bladnamen uit een door de aanroeper opgegeven XLS-stream zonder werkbladinhoud te laden, overeenkomend met de bestandsnaambehulpfunctie voor in-memory werkbladgegevens
Versie 2.88.60
Opgelost
- Werkbladcollecties stellen nu directe opzoekfuncties op naam bloot.
IXLSWorkSheets.SheetByName(Name)enTXLSXSheets.SheetByName(Name)retourneren het overeenkomende werkbladobject ofnil, zodat aanroepers geen index meer hoeven op te lossen voor toegang tot een blad
Versie 2.88.59
Gewijzigd
- De XLSX-gevel leest nu bladnamen rechtstreeks uit streams.
TXLSXWorkbook.GetSheetNames(Stream, List)leest geordende namen uitxl/workbook.xmlzonder werkblad-XML te laden, overeenkomend met de bestandsnaamoverload voor in-memory en BLOB-ondersteunde werkmappen
Versie 2.88.58
Gewijzigd
- De XLSX-gevel stelt nu snelle bladnaamontdekking bloot.
TXLSXWorkbook.GetSheetNames(FileName, List)leest geordende namen uitxl/workbook.xmlzonder werkblad-XML te laden
Versie 2.88.57
Toegevoegd
TXLSWorkbook.GetSheetNamesondersteunt nu XLSX-pakketten. De methode leestxl/workbook.xmluit.xlsx-,.xlsm-,.xltx- en.xltm-bestanden en retourneert geordende bladnamen zonder werkblad-XML te laden
Versie 2.88.56
Gewijzigd
- Klassieke XLS-werkmappen kunnen nu bladnamen lezen zonder werkbladen te laden.
TXLSWorkbook.GetSheetNames(FileName, List)scant de werkmap-globalsstream en retourneert geordende bladnamen uit Excel 97-2003.xls-bestanden
Versie 2.88.55
Gewijzigd
- Klassieke XLS-bereik AutoFilter-criteria schrijven nu BIFF8-filterrecords.
TXLSRange.Autofilter(Field, Criteria)maakt het filterbereik indien nodig aan en geeftAUTOFILTER-voorwaarden uit voor eenvoudige tekenreeks-, numerieke, booleaanse, lege, niet-lege en vergelijkingsvoorvoegselde criteria
Versie 2.88.54
Gewijzigd
- Klassieke XLS-werkbladen hebben nu hulpfuncties voor AutoFilter op werkbladniveau.
IXLSWorksheet.SetAutoFilter,ClearAutoFilterenAutoFilterRangebeheren BIFF8-filterdropdown-bereiken rechtstreeks terwijl de bestaandeAUTOFILTERINFO- en filterdatabasenaamwriter worden hergebruikt
Versie 2.88.53
Toegevoegd
- Klassieke XLS-werkbladen stellen nu het aanmaken van lijstgegevensvalidatie bloot.
IXLSWorksheet.AddListValidation(Range, Items)schrijft BIFF8DVAL- enDV-records, houdt de dropdown standaard zichtbaar, ondersteunt door komma's gescheiden inline lijsten en bewaart de regels viaOpen/SaveAs-heen-en-terug-cycli
Versie 2.88.52
Toegevoegd
- Formueleberekening werkt nu consistent voor XLS- en XLSX-ingangspunten.
TXLSWorkbook.Calculateaccepteert nu Excel-stijl formules met een voorloopgelijkteken zoals=SUM(A1:B1)+C1, en de XLSX-gevel voegtTXLSXWorkbook.CalculateenTXLSXWorksheet.Calculatetoe. Het XLSX-pad deelt de HotXLS formule-tokenparser en -evaluator voor cel- en bereikreferenties, gerefereerde formulecellen, verwijzingen naar andere bladen en werkmap- of bladgebonden benoemde bereiknamen
Versie 2.88.51
Toegevoegd
- XLSX-bereiken ondersteunen nu samenvoegen over kolommen in Excel-stijl.
TXLSXRange.Merge(True)schrijft één<mergeCell>-vermelding per rij, overeenkomend met het klassieke XLSRange.Merge(True)-gedrag, terwijlMergezonder argument enMerge(False)een volledig samengevoegd rechthoek blijven aanmaken
Versie 2.88.50
Gewijzigd
- BIFF8 HeaderFooter- en HFPicture-plaatsing voldoet nu aan de huidige MS-XLS-regels. HotXLS bewaart door Excel geschreven
HeaderFooter($089C)-records voor zelfs/eerste pagina-kop- en voettekst, en speeltHFPicture($0866)-records na werkbladafmetingen en tekenobjecten opnieuw af per de werkblad-ABNF, zodat pagina-indeling-details .xls-open/opslaan-cycli overleven
Versie 2.88.49
Gewijzigd
- Commentaar-rich-textlopen hebben nu een getypeerde API.
TXLSComment.TextRunsstelt BIFF8TXOFormatRun-vermeldingen bloot zodat aanroepers per-karakter lettertypegrenzen in .xls-opmerkingen kunnen inspecteren of instellen, terwijl HotXLS de onderliggende runbytes nog steeds bewaart voor veilige heen-en-terug-cycli
Versie 2.88.48
Gewijzigd
- Aanvullende SX-records voor draaitabellen worden nu via de getypeerde API blootgesteld. HotXLS koppelt nu geladen BIFF8-draaitabelrecords zoals
SXIVD,SXLI,SXFormat,SXEx,SXVDEx,SXRule,SXFiltenSXAddlaanTXLSPivotTable.SupplementalRecordsvoor inspectie, terwijl de originele onbewerkte bytes voor opslaan-heen-en-terug-cycli worden bewaard
Versie 2.88.47
Verwijderd
- Gecachte waarden van externe werkmappen overleven nu .xls-open/opslaan-cycli. HotXLS bewaart nu BIFF8
XCT- enCRN-records gekoppeld aan geladenSUPBOOK-vermeldingen, zodat gecachte celwaarden voor koppelingen naar externe werkmappen niet meer worden verwijderd tijdens het opslaan
Versie 2.88.46
Gewijzigd
- Ingebouwde stijloverzichtsniveaus overleven nu .xls-open/opslaan-cycli. HotXLS leest en bewaart nu de BIFF8
STYLEiLevel-byte voor ingebouwde stijlen, zodat Excel RowLevel_1..7 en ColLevel_1..7 stijlmetagegevens niet meer worden gereset naar de standaard tijdens het opslaan
Versie 2.88.45
Gewijzigd
- Metagegevens van gedefinieerde namen overleven nu .xls-open/opslaan-cycli. HotXLS bewaart nu geladen BIFF8
NAME-record-optiebits en snelkoppelingsbytes tenzij de gedefinieerde naam wordt bewerkt, zodat door Excel geschreven functie-, object-, procedure-, berekende-expressie- en binaire-naammetagegevens niet meer worden gewist tijdens het opslaan
Versie 2.88.44
Verwijderd
- ObProj-werkmapmarkeringen overleven nu .xls-open/opslaan-cycli. HotXLS bewaart nu geladen BIFF8
ObProj-records zelfs wanneer er geen VBA-opslag via het objectmodel beschikbaar is, zodat werkmap-VBA-projectmarkeringen en metagegevens van derden niet meer worden verwijderd tijdens het opslaan
Versie 2.88.43
Gewijzigd
- Werkbladoptiebits overleven nu .xls-open/opslaan-cycli. HotXLS bewaart nu niet-gemodelleerde BIFF8
WSBOOL-bits zoals dialoogblad-, automatisch-pagina-einde-, stijltoepassings- en overzichtsrandomisatievlaggen, terwijl bestaande aanpassen-aan-pagina- en overzichtssamenvattingsinstellingen via de publieke API nog steeds worden bijgewerkt
Versie 2.88.42
Gewijzigd
- Aanvullende werkmapmetagegevensrecords overleven nu .xls-open/opslaan-cycli. HotXLS bewaart nu geladen BIFF8
COUNTRY-,BOOKBOOL-,BACKUP-,FNGROUPCOUNT-,USESELFS- enRECALCID-recordinhoud in plaats van ze te herschrijven met standaardwaarden, waardoor werkmap-compatibiliteit en berekeningsmetagegevens stabiel blijven
Versie 2.88.41
Gewijzigd
- Meervoudige-bereik-selecties en actieve deelvensterfocus overleven nu .xls-open/opslaan-cycli. HotXLS bewaart nu geladen BIFF8
SELECTION-records en dePANES-actieve-deelvensterwaarde tenzij de bladselecitie of deelvensters via de API worden gewijzigd, zodat Excel gesplitste/bevroren deelvensterfocus en meervoudige-bereikselecties niet meer worden samengevouwen tijdens het opslaan
Versie 2.88.40
Verwijderd
- Externe werkmapnamen overleven nu .xls-open/opslaan-cycli. HotXLS bewaart nu geladen BIFF8
EXTERNALNAME-records gekoppeld aan externeSUPBOOK-vermeldingen, inclusief DDE/OLE/koppelingsmetagegevens en formulestaartrij, zodat externe namen en koppelingsdefenities niet meer worden verwijderd bij het opslaan
Versie 2.88.39
Gewijzigd
- Met wachtwoord beveiligde BIFF8 .xls-bestanden gebruiken nu RC4 CryptoAPI FILEPASS-records en kunnen ze ook lezen. HotXLS schrijft nu Excel 2007/2010-stijl
FILEPASSvMajor=2 metagegevens voor versleutelde .xls-werkmappen en leest zowel oudere RC4 vMajor=1 als RC4 CryptoAPI vMajor=2/3/4 bestanden, zodat met wachtwoord beveiligde werkmappen niet meer mislukken of worden teruggezet naar de oudere versleutelingsheader
Versie 2.88.38
Gewijzigd
- Door Excel geschreven .xls-hyperlinkmetagegevens overleven nu open/opslaan-cycli. HotXLS bewaart nu de BIFF8
HLink-recordinhoud voor geladen hyperlinks tenzij de hyperlink wordt bewerkt, zodat bron-streamVersion,hlstmf-optiebits zoalsfIcon, monikergegevens en gerelateerde doelmetagegevens stabiel blijven na het opslaan
Versie 2.88.37
Gewijzigd
- De vensterstatus van de werkmap overleeft nu .xls-open/opslaan-cycli. HotXLS leest en bewaart nu de vensterpositie, -grootte, zichtbaarheids-/pictogramvlaggen, het eerste weergegeven bladtabblad, het geselecteerde-tabblad-aantal en de tabschuifbalkverhouding van het BIFF8
WINDOW1-record in plaats van ze bij elk opslaan te herschrijven met standaardwaarden
Versie 2.88.36
Gewijzigd
- Door BIFF8 WriteAccess opgeslagen gebruikers overleven nu .xls-open/opslaan-cycli. HotXLS leest en bewaart nu de
$005C WRITEACCESS-recordinhoud in plaats van de door Excel opgeslagen gebruiker te vervangen doorHotXLS, zodat werkmapauditmetagegevens stabiel blijven na het opslaan
Versie 2.88.35
Opgelost
- Excel-opmerkingauteurs overleven nu .xls-open/opslaan-cycli. Het veld
stAuthorvan het BIFF8Note-record wordt nu geparseerd en doorgegeven aan het tekening-nootmodel in plaats van te worden vervangen door een lege tekenreeks, zodat de opmerkingauteur "Aangemaakt door", geschreven door Excel, wordt bewaard wanneer HotXLS de werkmap opnieuw opslaat
Versie 2.88.34
Gewijzigd
- OfficeArt FOPT-opties van vormen worden nu via een laag-niveau optiebag blootgesteld.
TXLSShape.OfficeArtOptionslaat geavanceerde aanroepers elke opgeslagen FOPT-PID inspecteren, instellen en verwijderen alsLongWordofWideString, terwijl de bestaande hoog-niveauLine-,Fill-, kleur- en zichtbaarheids-API's ongewijzigd blijven
Versie 2.88.33
Gewijzigd
- Aanvullende OfficeArt solver-container regelrecords doorlopen nu heen en terug. Naast getypeerde
msofbtConnectorRule($F012) bewaart HotXLS nu niet-mapachtige solver-kinderen zoalsOfficeArtFArcRule($F014) enOfficeArtFCalloutRule($F017) als onbewerkte OfficeArt-records inmsofbtSolverContainer($F005), zodat geavanceerde Excel-tekeningen geen niet-connector solver-relaties meer verliezen tijdens het opslaan
Versie 2.88.32
Gewijzigd
- OfficeArt ClientData-markeringen worden niet meer gedupliceerd na onbekend-record-bewaring. MS-XLS definieert
OfficeArtClientData($F011) als een nulbyte-markering waarvan het volgendeObj-record een apart BIFF-record blijft. v2.88.32 herkent die markering in plaats van hem als een onbekend SpContainer-blad vast te leggen, zodat geparseerde vormen bij het opslaan precies één $F011-markering uitsturen terwijl onjuiste containeraannames buiten het XLS-pad blijven
Versie 2.88.31
Gewijzigd
- OfficeArt connector-regels doorlopen nu heen en terug. Door Excel geschreven .xls-tekeningen slaan connector-lijnbindingen op in
msofbtSolverContainer($F005) met onderliggendemsofbtConnectorRule($F012)-records. v2.88.31 parseert en geeft dat $F005/$F012-paar uit viaTMsoConnectorRules, waarbij de beginvorm, eindvorm, connectorvorm en verbindingspunten via opslaan/herladen worden bewaard. De eerdere auditnotitie noemde $F121, maar MS-ODRAW definieertOfficeArtFConnectorRuleals $F012
Versie 2.88.30
Gewijzigd
- Niet-herkende OfficeArt SpContainer-bladrecords doorlopen nu heen en terug. Door Excel geschreven .xls-bestanden bevatten doorgaans bladrecords zoals
msofbtClientTextbox($F00D),OfficeArtFPSPL($F11D) enOfficeArtUDefProp($F122) in elke vorm-SpContainer. v2.88.30 legt onbekende vormniveau-bladrecords vast alsTMsoFbtUnknownen geeft ze opnieuw uit in parseervolgorde tussen de vormen-ClientAnchoren de afsluitende nulbyte-msofbtClientData-markering - Bereik en vervolg. Andere tekenning-niveau onbekende bladrecords blijven uitgesteld; het connector-regel solver-container geval wordt afgehandeld door v2.88.31. Container-vorm onbekenden, zoals
msofbtClientData($F011) gebruikt als container in plaats van als nevenmarkering, blijven audit-ronde Slice 3
Versie 2.88.29
Toegevoegd
- Het alles-opslorpende gedrag van FtLbsData beperkt het bereik. De bestaande
$0013-case overschrijftRecLen := Len - offsom alle bytes na de FtLbsData-header op te nemen in de blob vanFObjRec_LBSData, zodat subrecords die NA FtLbsData verschijnen (doorgaans alleen FtEnd) nog steeds via dat mechanisme ongewijzigd worden heen-en-terug-gecycled. De nieuwe FObjTailRaw-integratie richt zich specifiek op de ruimte vóór FtLbsData waar FtMacro en ObjLinkFmla doorgaans staan. Nieuw geschreven combo/lijstboxen via de Drawing API hebben een legeFObjTailRaw→ byte-identieke uitvoer aan v2.88.28
Verwijderd
- OBJ onbekende subrecords van ComboBox en ListBox doorlopen nu heen en terug. TMSOShapeComboBox.ParseObj en TMSOShapeListBox.ParseObj typisch-parseerden al FtSbs ($000C), FtSbsFmla ($000E) en FtLbsData ($0013) in toegewijde velden, maar andere bronbestandssubrecords (FtMacro $0004, ObjLinkFmla, FtNts $000D enz.) die tussen CMO en FtLbsData verschenen werden stil verwijderd. v2.88.29 voegt dezelfde else-tak toe als v2.88.28 Picture, waarbij het onbekende subrecord met 4-byte header en inhoud wordt vastgelegd in
FObjTailRaw. Beide AddObj-methoden geven de vastgelegde bytes uit tussen de CMO-inhoud en het FtSbs-subrecord overeenkomstig de subrecordvolgorde in de BIFF8-specificatie
Versie 2.88.28
Toegevoegd
- Getypeerd + onbewerkt coëxistentiepatroon. Anders dan PictureFrame (v2.88.27) dat een if/else-omschakeling gebruikte tussen getypeerde en onbewerkte uitvoer, combineert Picture beide: de getypeerde velden bewaren het API-oppervlak (aanroepers kunnen nog steeds
ftCfValueenz. aanpassen), terwijl de onbewerkte staart alleen de onbekende bytes bewaart. Nieuw geschreven afbeeldingen via de Drawing API hebben een legeFObjTailRaw, zodat uitvoer byte-identiek is aan v2.88.27
Verwijderd
- OBJ onbekende subrecords van Picture-vormen doorlopen nu heen en terug. TMSOShapePicture.ParseObj typisch-parseerde al FtCf ($0007), FtPioGrbit ($0008) en FtPictFmla ($0009) in toegewijde velden, maar andere bronbestandssubrecords (FtMacro $0004, FtNts $000D enz.) werden stil verwijderd. v2.88.28 voegt een else-tak toe die de volledige 4-byte header en inhoud van niet-herkende subrecords toevoegt aan
FObjTailRaw; TMSOShapePicture.AddObj geeft die bytes vervolgens onbewerkt uit na zijn getypeerde subrecorduitvoer en voor de FtEnd-markering. Bronbestandsafbeeldingsobjecten met macrohaken overleven het heropslaan
Versie 2.88.27
Toegevoegd
- OBJ staart-subrecord heen-en-terug-cycling uitgebreid naar PictureFrame-vormen. TMSOShapePictureFrame.AddObj gaf eerder alleen de verouderde hardgecodeerde FtCf ($0007, inhoud $FFFF) en FtPioGrbit ($0008, inhoud $0000) subrecords uit tussen CMO en FtEnd. Voor nieuw geschreven afbeeldingsframes geeft de nieuwe code nog steeds die standaardwaarden uit; voor afbeeldingsframes geparseerd vanuit een bron-.xls worden de vastgelegde
FObjTailRaw-bytes in plaats daarvan onbewerkt uitgegeven, waarbij eventuele bron-FtPictFmla/niet-standaard FtCf/niet-standaard FtPioGrbit-inhoud over de opslaancyclus wordt bewaard
Opgelost
- Onderzoeksnotitie — Flush corrigeert sz automatisch.
TMsoShapeContainer.Flushherschrijft de grootteheader van het Obj-record bij committijd viaData.SetWord(Data.DataLength - 4, 2), wat betekent dat de hardgecodeerdesz := $1A-waarden die al jaren in HotXLS AddObj-implementaties stonden geen specificatiefouten waren — Flush corrigeert ze automatisch. v2.88.27 berekent sz nauwkeurig voor codehelderheid, maar het runtimegedrag is vanuit dat perspectief ongewijzigd
Versie 2.88.26
Toegevoegd
- OBJ staart-subrecord heen-en-terug-cycling uitgebreid naar Chart- en CheckBox-vormen. v2.88.25 introduceerde onbewerkte-byte-bewaring voor de bytes tussen een Obj-record CMO ($0015) en zijn FtEnd ($0000)-markering, maar alleen TMSOShapeTextBox.AddObj gaf de vastgelegde staart uit. Deze release past hetzelfde patroon toe op TMSOShapeChart.AddObj en TMSOShapeCheckBox.AddObj — beide delen de eenvoudige "CMO + FtEnd" uitvoerstructuur van TextBox, dus de wijziging is een eenregelige variabelevervanging (
sz := $1A + Word(Length(FObjTailRaw))) plus een onbewerkte bytelus voor de FtEnd-markering
Gewijzigd
- Staartsubrecords van Chart (bijv. FtMacro voor ingebedde grafiekobjectmacro's) en selectiestatus-subrecords van CheckBox (FtCbls + FtCblsData + ObjLinkFmla, MS-XLS §2.5.140-141 / §2.5.149) overleven nu het opslaan/herladen van HotXLS. Nieuw geschreven grafieken en selectievakjes via de Drawing API geven nog steeds een standaard 26-byte CMO+FtEnd uit (byte-identiek aan v2.88.25), zodat bestaande aanroepers geen gedragswijziging zien. Picture/ComboBox/ListBox/PictureFrame-vormen hebben hun eigen dynamische getypeerde-subrecord-uitvoer die conflicteert met FObjTailRaw — hun integratie is uitgesteld naar toekomstige commits
Versie 2.88.25
Toegevoegd
- Generieke-basis vastlegging, alleen-TextBox uitvoer (R5-3 eerste segment). TMsoShapeContainer.ParseObj legt nu het bytebereik tussen het einde van de CMO-inhoud en de FtEnd-markering vast in een nieuw intern veld
FObjTailRaw: TBytes; TMSOShapeTextBox.AddObj voegt die bytes in tussen zijn CMO-uitvoer en de FtEnd-markering, waarbij de Obj-recordgrootte overeenkomstig wordt aangepast. Nieuw geschreven opmerkingen (geen bronbytes) houden byte-identieke uitvoer aan v2.88.24. Andere vormsklassen (Picture/CheckBox/ComboBox/ListBox/Chart) erven de vastlegging maar hun getypeerde AddObj-overrides behouden het verouderde "synthetiseer vanuit niets" gedrag — onbewerkte-bytes-uitvoer voor die vormtypen is uitgesteld naar toekomstige commits
Gewijzigd
- OBJ-record-staartsubrecords worden nu over de opslaancyclus bewaard voor opmerkingen. Het BIFF8 Obj-record ($005D) koppelt een reeks getypeerde subrecords na de verplichte CMO ($0015), afgesloten door een FtEnd ($0000)-markering, per MS-XLS §2.4.181. Voor Note (opmerking)-vormen is het staartblok doorgaans een 26-byte FtNts (§2.5.149) met een GUID en de fSharedNote-vlag — beide essentieel wanneer Excel later opmerkingen samenvoegt tussen gebruikers in gedeelde werkmappen. HotXLS verwierp eerder elke byte na CMO bij het lezen en gaf alleen een leeg FtEnd uit bij het schrijven, zodat elk bron-FtNts verloren ging bij elk HotXLS-heropslaan
Versie 2.88.24
Toegevoegd
- Onbewerkte-byte-bewaring in TMSOShapeTextBox. ParseTXO legt de bytes na de tekst-Continue onbewerkt vast in een nieuw intern veld
FFormatRunsRaw: TBytes; Store geeft ze terug als de opmaaklopenContinue en past decbRuns-header van het basisrecord aan. Nieuw geschreven opmerkingen (viaAddComment) houden de verouderde enkelvoudige-standaardlopen-uitvoer ongewijzigd, zodat byte-identieke uitvoer voor standaardwerkmappen wordt bewaard. Getypeerde Excel-API-toegang tot afzonderlijke opmaaklopenbladen is nog steeds uitgesteld — de bestaande enkelvoudige-WideString-opmerkingsAPI is ongewijzigd
Gewijzigd
- Celopmerkingen met meerdere lettertypen en kleuren doorlopen nu heen en terug. Het opmaaklopenblok van het BIFF8 TXO-record (
rgTxoRuns+TxOLastRunper MS-XLS §2.5.272) draagt de per-lopen lettertype- en kleuroverrides die een opmerking zijn rich-text-opmaak geven. HotXLS verwierp eerder het volledige blok bij het lezen en gaf een enkelvoudige lege standaardlopen + LastRun uit bij het schrijven — waardoor elk "Belangrijk!" gemarkeerd in rood, elk vet woord in de opmerkingstekst, werd afgevlakt naar uniforme standaardopmaak bij elk HotXLS-heropslaan
Versie 2.88.23
Toegevoegd
- Drie nieuwe TXLSPageSetup-eigenschappen.
PrintResolution: LongWord,PrintVResolution: LongWordenCopies: LongWord— alle standaard ingesteld op de waarden die de writer eerder hardcodeerde (600 / 600 / 1) zodat werkmappen die ze nooit aanraken byte-identieke uitvoer produceren aan v2.88.22. Setters begrenzen opHigh(Word)zodat een te grote aanroeperwaarde niet kan overlopen bij uitvoer
Verwijderd
- Afdrukresolutie en kopieaantal doorlopen nu heen en terug — Setup-record nu volledig gedekt. Drie Setup-record Word-velden (
iResop offset 12,iVResop offset 14,iCopiesop offset 32, per MS-XLS §2.4.257) dragen Excel's "Pagina-instelling → Pagina → Afdrukkwaliteit" en "Aantal kopieën" keuzes. HotXLS liet eerder alle drie vallen bij het lezen en gaf hardgecodeerde waarden uit (600 DPI / 600 DPI / 1 kopie), zodat een aangepaste resolutie of kopieaantal stil werd teruggezet bij elk HotXLS-heropslaan
Opgelost
- Setup-record heen-en-terug-cycling voltooid. Met deze oplossing doorloopt elk door de gebruiker zichtbaar veld van het BIFF8 Setup-record ($00A1) volledig heen en terug — papierformaat / schaling / eerste paginanummer / aanpassen-aan-pagina breedte en hoogte / richting / afdruksvolgorde / zwart-wit / concept / afdrukopmerkingen / celfouten / resolutie / kopieën. Alleen de twee specificatie-hint grbit-bits (
fNoPls,fNoOrient) blijven onblootgesteld, waarbij HotXLS beide schrijft als nul overeenkomstig het standaardgedrag van Excel
Versie 2.88.22
Toegevoegd
- Twee nieuwe TXLSPageSetup-eigenschappen.
UseFirstPageNumber: Booleanweerspiegelt de bit (False = "Auto", standaard);FirstPageNumber: Integerdraagt de iPageStart-waarde (standaard 1, begrensd door de setter op het specificaties ondertekendsigned-Word-bereik -32768..32767). HotXLS geeftiPageStartonbewerkt heen en terug zelfs wanneerUseFirstPageNumberFalse is, zodat schakelen tussen Auto en aangepast in Excel de laatste door de gebruiker getypte waarde bewaart
Verwijderd
- Aangepast "Eerste paginanummer" in Pagina-instelling doorloopt nu heen en terug. Het BIFF8 Setup-record draagt de keuze van de werkmap Pagina-instelling → Pagina → "Eerste paginanummer" als twee gerelateerde velden: grbit-bit 7 (
fUsePage) kiest tussen Excel's "Auto"-standaard en een expliciet startpaginanummer, en het ondertekend Word op offset 4 (iPageStart) houdt die aangepaste waarde, per MS-XLS §2.4.257. HotXLS liet eerder beide vallen bij het lezen en gafiPageStart = 1met de bit uitgeschakeld uit, zodat een door de gebruiker ingetypt "Eerste paginanummer: 100" stil terugkeerde naar "Auto" bij elk HotXLS-heropslaan
Versie 2.88.21
Toegevoegd
- Nieuwe TXLSPageSetup.PrintNotesAtEnd Boolean-eigenschap. Standaard ingesteld op
False, overeenkomstig de standaardinstelling van Excel in de gebruikersinterface. De reader en writer geven de bit onbewerkt heen en terug (zelfs wanneerPrintNotes = False), zodat een werkmap met tijdelijk uitgeschakelde opmerkingen de voorkeur "aan het einde van het blad" bewaart voor wanneer de gebruiker ze weer inschakelt — overeenkomstig het eigen gedrag van Excel
Verwijderd
- De keuze "Opmerkingen afdrukken aan het einde van het blad" overleeft nu de opslaancyclus. Grbit-bit 9 van het BIFF8 Setup-record (
fEndNotesper MS-XLS §2.4.257) draagt het onderscheid van het dropdown "Opmerkingen" in Pagina-instelling → Blad tussen "Zoals weergegeven op blad" (de standaard) en "Aan het einde van het blad". HotXLS gaf al PrintNotes (bit 5) heen en terug om te bepalen of opmerkingen worden afgedrukt, maar bit 9 werd bij het lezen verwijderd en bij het schrijven als nul uitgegeven — zodat een door de gebruiker gekozen "Aan het einde van het blad" stil terugkeerde naar "Zoals weergegeven op blad" bij elk HotXLS-heropslaan
Versie 2.88.20
Gewijzigd
- De werkmap-instelling "Precisie instellen zoals weergegeven" doorloopt nu heen en terug. Het BIFF8 CalcPrecision-record ($000E) draagt het werkmap-brede selectievakje Bestand → Opties → Geavanceerd → "Precisie instellen zoals weergegeven" per MS-XLS §2.4.35. HotXLS had eerder geen dispatch-case voor $000E en TXLSWorkbook.StorePrecision gaf een hardgecodeerde
1uit (= volledige precisie bewaard). Een gebruiker die "Precisie instellen zoals weergegeven" aanvinkte, zag dit bij elk HotXLS-heropslaan stil worden teruggezet naar "volledige precisie" — waardoor de bewuste gebruikersinstellingsintentie werd verborgen dat een volgende herberekening celwaarden permanent zou afkappen op hun opgemaakte decimaalplaatsen
Opgelost
- Nieuwe TXLSWorkbook.UseFullPrecision Boolean-eigenschap. Standaard ingesteld op
True(overeenkomstig de BIFF8-standaard en de standaard van Excel's gebruikersinterface voor uitgeschakeld). Het instellen opFalseweerspiegelt het aanvinken van de destructieve optie "precisie zoals weergegeven" — HotXLS zelf kapt geen celwaarde af tijdens de heen-en-terug-cycle, maar de vlag wordt nu correct teruggeschreven zodat Excel's volgende herberekening er rekening mee houdt. Met deze oplossing doorlopen alle BIFF8-berekeningsrecords (CalcCount / CalcMode / CalcPrecision / CalcDelta / CalcIter / CalcSaveRecalc) volledig heen en terug
Versie 2.88.19
Toegevoegd
- Nieuwe Booleaanse eigenschap TXLSWorkbook.RecalcOnSave. Standaard ingesteld op
True(overeenkomend met zowel de standaardwaarde in de Excel-interface als de eerder vastgelegde waarde), zodat werkmappen die de eigenschap nooit aanraken byte-identieke uitvoer produceren als v2.88.18. De setter accepteert elke Booleaanse waarde; de lezer normaliseert willekeurige niet-nul bronbytes naarTrue
Gewijzigd
- Selectievakje "Werkmap opnieuw berekenen voor opslaan" wordt nu correct bewaard. Het BIFF8 CalcSaveRecalc-record ($005F) draagt de Booleaanse instelling Bestand → Opties → Opslaan → "Werkmap opnieuw berekenen voor opslaan" van de werkmap, conform MS-XLS §2.4.37. HotXLS had eerder geen dispatcher-case voor $005F en StoreCalculationSettings stuurde een vastgelegde
1uit — zodat een door de gebruiker uitgeschakelde "herberekenen bij opslaan" bij elke HotXLS-heropslag stilzwijgend opnieuw werd ingeschakeld, wat daadwerkelijk relevant was voor werkmappen met handmatige berekening waarbij de gebruiker de celwaarden op schijf bewust had bevroren
Versie 2.88.18
Toegevoegd
- Drie nieuwe eigenschappen voor TXLSWorkbook.
EnableIteration: Booleanweerspiegelt het selectievakje;MaxIterations: LongWordis het maximale aantal iteraties (door de setter beperkt tot het spec-geldige bereik 1..32767);MaxIterationChange: Doubleis de convergentiedelta (negatieve invoer springt naar de spec-standaard 0.001). Standaardwaarden komen overeen met de eerder hardgecodeerde waarden in de schrijver, zodat werkmappen die de nieuwe eigenschappen nooit aanraken byte-identieke uitvoer produceren als v2.88.17
Gewijzigd
- Instellingen voor iteratieve berekening (inschakelen + maximum iteraties + maximum wijziging) worden nu correct bewaard. De BIFF8-records CalcIter ($0011), CalcCount ($000C) en CalcDelta ($0010) dragen samen de trio-opties van Excel "Iteratieve berekening inschakelen" (Bestand → Opties → Formules), conform MS-XLS §2.4.33 / §2.4.31 / §2.4.32. Geen van de drie had eerder een dispatcher-case, en StoreCalculationSettings stuurde ze uit met vastgelegde waarden (uit / 100 / 0.001). Een door de gebruiker geconfigureerde lus van 1000 iteraties met een convergentiedelta van 0.0001 werd bij elke HotXLS-heropslag stilzwijgend teruggezet naar "iteratie uit, 100, 0.001" — waardoor kringverwijzingsformules en convergentiegevoelige financiële modellen werden verstoord
Versie 2.88.17
Toegevoegd
- Werkmapberekeningmodus (Handmatig / Automatisch / Automatisch behalve tabellen) wordt nu correct bewaard. Het BIFF8 CalcMode-record ($000D) draagt de keuze op werkmapniveau voor Formules → Berekeningsopties conform MS-XLS §2.4.36. HotXLS had eerder helemaal geen dispatcher-case voor $000D, zodat de waarde uit het bronbestand bij het laden werd weggegooid en de schrijver altijd een vastgelegde
$0001(Automatisch) uitstuurde. Een door de gebruiker geselecteerde handmatige modus werd bij elke HotXLS-heropslag stilzwijgend teruggezet naar Automatisch — nadelig voor grote werkmappen waar Handmatig bewust is ingesteld voor prestaties. De nieuwe ParseCalcMode-handler slaat de bronwaarde op in de werkmap en StoreCalculationSettings stuurt nu de opgeslagen waarde uit in plaats van de constante - Nieuwe eigenschap TXLSWorkbook.CalculationMode. Lees-schrijf
LongWord-eigenschap diexlCalcManual(0),xlCalcAutomatic(1, standaard) ofxlCalcAutomaticExceptTables(0xFFFF) accepteert — drie nieuwe constanten geëxporteerd vanuitlxTNC.inc. De setter beperkt onbekende waarden tot de spec-standaard zodat een beschadigd bronbestand de werkmap niet in een ongedefinieerde staat kan achterlaten. Bestaande code die de eigenschap nooit aanraakt behoudt de verouderde standaard "Automatisch", zodat eerdere uitvoer byte-identiek is voor standaardwerkmappen
Versie 2.88.16
Toegevoegd
- Nieuwe eigenschap TXLSPageSetup.PrintCellErrors. Lees-schrijf
LongWord-eigenschap diexlPrintErrorsDisplayed(0, standaard),xlPrintErrorsBlank(1),xlPrintErrorsDash(2) ofxlPrintErrorsNA(3) accepteert — vier nieuwe constanten geëxporteerd vanuitlxTNC.inc. Bestaande PageSetup-aanroepen die de eigenschap nooit aanraken behouden de standaard ("weergegeven"), zodat de verouderde afdrukuitvoer ongewijzigd blijft
Verwijderd
- Keuze "Celfouten weergeven als" in Pagina-instelling blijft nu behouden na opslaan. Het BIFF8 Setup-record ($00A1) pakt de keuze Pagina-instelling → Blad "Celfouten weergeven als: weergegeven / <leeg> / <streepje> / <N/B>" in bits 10-11 van het grbit-woord als
iErrors, conform MS-XLS §2.4.257. HotXLS liet deze bits eerder vallen bij het lezen en stuurde ze als nul uit bij schrijven, zodat een werkmap die de gebruiker had geconfigureerd om#DEEL/0!af te drukken als#N/Bna elke HotXLS-heropslag stilzwijgend werd teruggezet naar "weergegeven". De lezer decodetiErrorsnu in een nieuwe eigenschapTXLSPageSetup.PrintCellErrorsen de schrijver reconstrueert het veld daaruit
Versie 2.88.15
Toegevoegd
- Zes nieuwe TMSOShapeTextBox-eigenschappen voor expliciete opmaak van opmerkingen.
HAlignment,VAlignment,Rotation,LockText,JustLastLineenSecretEditzijn beschikbaar als lees-schrijf-eigenschappen op elke opmerkingsvorm;AddCommentstaat standaard op links+boven+horizontaal+ontgrendeld zodat aanroepers die ze niet aanraken het eerdere uiterlijk behouden
Verwijderd
- Uitlijning en oriëntatie van celopmerkingen worden nu correct bewaard. Het BIFF8 TXO-basisrecord ($01B6) draagt vijf getypte vlaggen in het
grbit-woord (hAlignment, vAlignment, fLockText, fJustLast, fSecretEdit) plus een afzonderlijkrot-woord voor tekstoriëntatie, conform MS-XLS §2.4.329. De lezer liet dit alles eerder vallen en de schrijver zettegrbitop een vastgelegde0x0012(links + boven) met rotatie altijd 0, zodat elke opslag een gecentreerde of geroteerde opmerking terugzette naar links+boven+horizontaal ongeacht de bron. De lezer decodet de getypte velden nu bij het laden en de schrijver steltgrbitdaarnaar samen, zodat de lay-out de opslaan/herladen-cyclus overleeft
Opgelost
- TXO-schrijver legt reserved4 / reserved5 nu correct uit langs spec-veldgrenzen. Vorige code stuurde offsets 2-9 van het basisrecord uit als twee brede schrijfacties (rot + reserved4 dan reserved5); de schrijver splitst deze nu in
Wordrot,Wordreserved4,Longreserved5 — de byte-inhoud is ongewijzigd (nog steeds allemaal nul voor Note-vormen), maar de bronstructuur komt nu overeen met MS-XLS §2.4.329-veldoffsets, waardoor toekomstige TXO-correcties moeilijker verkeerd uitgelijnd kunnen worden
Versie 2.88.14
Opgelost
- TXO cchText-offset gecorrigeerd — de correctie voor commentaarlengte uit v2.88.13 wordt nu daadwerkelijk uitgevoerd. De vorige release introduceerde een saniteitscontrole voor het TXO-basisrecord door
cchTextop offset 8 te lezen, maar MS-XLS §2.4.329 plaatstcchTextop offset 10 (na grbit, rot en de 6 gereserveerde / controlInfo-bytes). Offset 8 valt binnen de reserved5-long, die altijd nul is voor Note-vormobjecten, zodat elke opmerking stilzwijgend in het defensieve terugvalpad gleed dat simpelweg het gedrag van vóór v2.88.13 herstelde. De correctie stelt de offset in op 10 — lange opmerkingen worden nu echt aan elkaar genaaid via Continue-records en korte opmerkingen pikken geen afsluitende opvulling meer op. Geen verdere gedragswijziging buiten wat v2.88.13 altijd had moeten leveren
Versie 2.88.13
Gewijzigd
- Lange celopmerkingen worden nu volledig teruggelezen. Het BIFF8 TXO-record ($01B6) splitst zijn tekstinhoud over het basisrecord en een of meer Continue-records, waarbij het tekenantal in het basisrecord op offset 8 als
cchTextwordt gepubliceerd. De vorige opmerkingelezer sloeg het basisrecord volledig over, behandelde DataList[1] als de volledige tekst en stopte daar — zodat een opmerking langer dan ongeveer 4100 brede tekens stilzwijgend werd afgebroken, en een kortere opmerking waarvan het Continue-record afsluitende opvulling droeg rommel oppikte aan het einde. De lezer gebruiktcchTextnu als het gezaghebbende tekenaantal, doorloopt elk Continue-segment conform MS-XLS §2.4.329 (de rgb-breuk zit op een tekengrens zodat geen gedeeltelijke-teken-boekhouding nodig is) en stopt zodra het budget is opgemaakt zodat het opmaakloopblok dat op de tekst volgt nooit in de tekenreeks overloopt. Opmerkingen met beschadigde / ontbrekende basisrecords vallen nog steeds terug op het verouderde pad "alle resterende bytes"
Versie 2.88.12
Gewijzigd
- Gecachte tekenreeksen langer dan circa 4100 tekens uit formules die tekenreeksen retourneren worden nu correct bewaard via Continue-records. v2.88.11 heeft de leeskant van het BIFF8 String-record ($0207) aangesloten maar verbruikte alleen de eerste recordtekst, zodat een gecachte tekenreeks waarvan de UCS-2-bytes de BIFF-limiet van 8224 bytes overschreden en in een of meer Continue-records ($003C) overliepen stilzwijgend werd afgebroken. De handler doorloopt nu de volledige DataList op dispatch-niveau: hij leest cch en fHighByte uit het basisrecord, kopieert de tekst die daarin past, en voegt vervolgens elk volgend Continue-segment samen als onbewerkte bytes conform de tekengrensgarantie van MS-XLS §2.5.293 — XLUnicodeString hergeeft fHighByte niet midden in een tekenreeks. Elk segment is begrensd door het resterende tekenbudget zodat een te groot Continue-segment het resultaat niet langer kan maken dan cch. Tekenreeksen met één record (het meest voorkomende geval) nemen exact hetzelfde snelle pad als voorheen
Versie 2.88.11
Opgelost
- Formules die tekenreeksen retourneren bewaren nu de gecachte tekst die Excel heeft berekend. De vorige release behandelde de varianten getal, booleaans, fout en leeg van de BIFF8 FormulaValue-cache (MS-XLS §2.5.133), maar liet de tekenreeksvariant op de takenlijst staan omdat de gecachte waarde in een afzonderlijk String-record ($0207) staat dat onmiddellijk op het Formula-record volgt. ParseFormula onthoudt nu de celcoördinaten wanneer het een tekenreeksvariant-formule ziet, en de nieuwe ParseString-handler decodet het volgende $0207-record conform MS-XLS §2.4.268 en stuurt de WideString naar
FCachedFormulaValue.GetCellValuekan nu terugvallen op de door Excel berekende tekst wanneer de HotXLS-evaluator deze niet kan reproduceren. Een defensieve reset aan het begin van ParseFormula verwijdert elk verouderd wachtend anker zodat een misvormd bronbestand met een ontbrekend String-record een later record niet verkeerd doorsturen kan. Records langer dan 8224 bytes die overlopen in Continue-stukken vallen nog steeds terug op evaluatoruitvoer als bekende beperking
Versie 2.88.10
Toegevoegd
- BIFF8 Formula-records bewaren nu de gecachte waarde die Excel heeft berekend. ParseFormula sloeg de 8-byte FormulaValue-payload op offset 6 eerder volledig over, zodat het gecachte resultaat van elke formule in een geladen .xls (getallen, booleans, fouten, leeg) werd weggegooid en HotXLS elke cel opnieuw moest evalueren via zijn eigen formule-engine. Wanneer die engine Excel niet kon evenaren (niet-ondersteunde XLM-functies, verbroken externe koppelingen, formules die de engine nog niet heeft geïmplementeerd) werd de cel stilzwijgend leeg of nul. De lezer decodet nu de vier varianten getal / booleaans / fout / leeg conform MS-XLS §2.5.133 en slaat ze op in een nieuw veld
TXLSCellRef.FCachedFormulaValue;GetCellValuevalt alleen op die cache terug wanneer de evaluator mislukt, zodat nieuw gemaakte formules nog steeds door evaluatie gaan zoals voorheen. De tekenreeksvariant blijft naar de evaluator uitstellen omdat de aansluitende String-record ($0207)-parser nog niet is aangesloten
Versie 2.88.9
Opgelost
- BIFF8 Formula-records met niet-oplosbare waarden zetten nu fAlwaysCalc in plaats van het reserved1-bit. Wanneer de HotXLS-evaluator een formule niet kon berekenen bij opslaan, stelde de schrijver eerder
grbit = 0x0002in — bit 1, dat MS-XLS §2.4.127 reserveert en lezers negeert. Excel negeerde het inderdaad, behandelde de plaatsvervangende gecachte waarde 0 als gezaghebbend en toonde stilzwijgend 0 in plaats van opnieuw te berekenen. De schrijver stelt nugrbit = 0x0001in (fAlwaysCalc, bit 0), zodat Excel de formule heruitvoert bij de volgende herberekening en de cel het correcte resultaat toont
Versie 2.88.8
Opgelost
- PageSetup.PrintTitleColumns / PrintTitleRows geeft nu een fout bij ongeldige invoer. Het instellen van een van beide eigenschappen met een misvormde bereiktekenreeks (alles wat
ColDiapasonToValues/RowDiapasonToValuesniet kon verwerken) liet de toewijzing eerder stilzwijgend vallen — de werkmap behield het bestaande Print_Titles-bereik of helemaal geen bereik, en de aanroeper had geen manier om te weten dat er iets fout was gegaan. De setters geven nuException.Createmet een beschrijvend bericht dat de foutieve waarde noemt, overeenkomend met de bestaande raise-stijl opTXLSRange-paden met ongeldige index
Versie 2.88.7
Toegevoegd
- Notitie toegevoegd over bevindingen uit BIFF8-specificatiecontrole ronde 2. Het opnieuw controleren van de [MS-XLS]-veldgrenzen maakte duidelijk dat twee bevindingen die als P2 waren gemarkeerd in het oorspronkelijke rapport (
dev-notes/XLS-BIFF8-Spec-Audit-Round2.md) geen echte fouten zijn: het bit-15 dat is ingesteld in de BOF-geschiedenisvlag $000080C9 behoort tot het verXLHigh-veld (bits 14-17, waarde 2 = "Excel 2002"), niet de reserved1-staart (bits 19-31); en het gebruik van een voorloopend PtgExp-token door ParseFormula om gedeelde / matrixformules te detecteren komt overeen met wat de spec impliceert en onderscheidt correct via het volgende ShrFmla / Array-record. Beide items zijn nu gemarkeerd als ingetrokken
Verwijderd
- Het miyRw-veld van rijen blijft nu binnen het MS-XLS-specificatiebereik. Pre-BIFF8-versies van Excel codeerden "gebruik de standaard rijhoogte van de werkmap" door bit 15 in miyRw op te nemen via OR, en HotXLS droeg dat idioom voort in de BIFF8-schrijver ook al begrenst MS-XLS §2.4.221 miyRw tot 8192 twips. Moderne Excel stuurt in hetzelfde geval een gewone 255 (standaard 12,75 pt) uit en gebruikt het fUnsynced-grbit-bit om handmatige overschrijvingen aan te duiden, zodat de bit-15-truc de HotXLS-uitvoer deed afwijken van gezaghebbende .xls-bestanden (een waarde van 32.959 = 0x80FF voor "standaard" was technisch buiten de spec). De schrijver laat de OR nu weg en schrijft rechtstreeks 255; de lezer stript bit 15 bij inlezen nog steeds voor achterwaartse compatibiliteit met HotXLS v2.88.6 en oudere bestanden, plus zeldzame externe generators die het BIFF5-idioom hebben overgenomen
Versie 2.88.6
Opgelost
- Macrobladbladen en VBA-modules behouden nu hun BoundSheet8-positieslot. De lezer liet eerder BoundSheet8-records vallen waarvan het
dt-veld 1 (macroBlad) of 6 (VBA-module) was, zodat de HotXLS Sheets-collectie te weinig vermeldingen had. Elke XTI-kruisverwijzing in ExternSheet die wees naar een bladpositie na een macroBlad op basis van bestandsvolgorde werd na een SaveAs omgezet naar het verkeerde HotXLS-werkblad. De lezer voegt nu een tijdelijk blad toe voor elke BoundSheet8-record en slaat de onbewerktedt-byte op in een nieuwe eigenschapSheet.SheetTypeRaw; de schrijver stuurt de originele byte terug uit. Macro-substream BOF-records ($0040) worden ook behandeld als werkbladsubstreams tijdens het verwerken zodat cellen in macrobladbladen worden bewaard in plaats van stilzwijgend geabsorbeerd door het vorige blad
Versie 2.88.5
Verwijderd
- BIFF8 Row-record bewaart nu fCollapsed, fExAsc, fExDes en fPhonetic correct. Eerder liet de lezer fCollapsed (grbit bit 4) vallen — de schrijver leidde het af uit overgangen van omtrekniveau bij aangrenzende rijen, wat rijen verkeerd classificeerde die het bronbestand expliciet had samengevouwen of als grenzen had gemarkeerd. De drie hoge bits (fExAsc op 28, fExDes op 29, fPhonetic op 30) werden ook nooit gelezen en altijd als nul uitgestuurd omdat de schrijver het 4-byte grbit afkapte naar één 16-bit ixfe-slot. De lezer verbruikt nu alle vier bits conform MS-XLS §2.4.221 en zet fCollapsed als expliciet vast zodat de afleidingslogica aan de schrijverskant de door Excel bevestigde waarden niet meer overschrijft. De schrijver pakt ExAsc / ExDes / Phonetic in bits 12-14 van het ixfe-Word en begrenst ixfe tot het spec-toegestane 12-bits bereik om te voorkomen dat een XF-index ooit in botsing komt met de nieuwe vlaggen. Neveneffecten van de volledige bewaring: dikke-boven / middelmaat-onder-randen aangestuurd door ExAsc / ExDes-hints overleven nu HotXLS SaveAs, en de zichtbaarheid van fonetische informatie op Japanse bladen stopt met resetten bij elke opslag
Versie 2.88.4
Opgelost
- BIFF8 Window2 fPaged-bit markeert nu alleen het actieve blad. Eerdere releases stelden
fPaged(MS-XLS §2.4.346 bit 10) in op elk zichtbaar blad, waardoor de HotXLS-uitvoer afweek van wat Excel zelf schrijft (conform de spec betekent het bit "dit blad wordt momenteel weergegeven in het werkmapvenster", dus alleen de actieve-blad-substream mag het dragen). Excel-lezers vielen toch terug opWindow1.itabCurom het werkelijke actieve blad te identificeren, zodat het misbruik werd getolereerd, maar Apache POI in strikte modus en andere tooling diefPagedals primair signaal vertrouwt zien nu het juiste gemarkeerde blad
Versie 2.88.3
Verwijderd
- BIFF8 Window2 zoom en rasterlijnkleur worden nu correct bewaard. Eerdere releases lieten de WINDOW2-recordvelden na offset 6 vallen bij het lezen en stuurden vastgelegde nullen uit bij schrijven, zodat elke door Excel opgeslagen bladzoom (75 procent, 125 procent, enz.) en aanpassing van de rasterlijnkleur na een HotXLS SaveAs terugvielen op standaardwaarden. De lezer verbruikt nu
icvHdr,wScaleSLVenwScaleNormalconform MS-XLS §2.4.346: de zoom van de actieve weergave gaat naarSheet.Zoomen de waarde van de tegenovergestelde weergave belandt in een gecachet slot zodat wisselen tussen Normaal en Afdrukvoorbeeld in Excel de vorige zoom herstelt. De schrijver stuurt de actieveSheet.Zoomuit in het overeenkomstige weergaveslot en de gecachte waarde in het andere, plus de bewaarde rasterlijnkleurindex
Versie 2.88.2
Opgelost
- Opcode van BIFF8 HFPicture-record gecorrigeerd. Opgeslagen .xls-bestanden sturen nu koptekst/voettekst-achtergrondafbeeldingsrecords uit met de correcte
rt = 0x0866conform MS-XLS §2.4.138. Eerdere releases gebruikten0x086C— de opcode voor CellWatch — zodat Excel probeerde de ingesloten OfficeArt BLIP als een watched-cell-verwijzing te verwerken en de afbeelding stilzwijgend weggooide (soms weigerde Excel de werkmap te openen wanneer de ingesloten afbeeldingsbytes toevallig de verwachte 16-byte structuur van CellWatch schonden). Werkmappen die een koptekst- / voettekstafbeelding via HotXLS bewaren, behouden de afbeelding nu intact
Versie 2.88.1
Opgelost
- Opcode van BIFF8 Theme-record gecorrigeerd. Opgeslagen .xls-bestanden sturen het Theme-record nu uit met de correcte
frtHeader.rt = 0x0896conform MS-XLS §2.4.326. Eerdere releases gebruikten0x0892— de opcode voor StyleExt — zodat Excel de ingesloten OOXML-themapayload interpreteerde als een cel-stijlextensie en stilzwijgend terugviel op het ingebouwde Office-thema, waarbij aangepaste themakleurden verloren gingen bij het bewaren van een werkmap via HotXLS
Versie 2.88.0
Toegevoegd
- Opgeslagen .xlsx-pakketten bevatten nu een onderdeel
xl/theme/theme1.xml. styles.xml stuurde altijd<color theme="N"/>-verwijzingen uit voor lettertype- / opvul- / rand- / tabbladkleur die via het thema-indexpad is ingesteld (en voor themakleurden afkomstig uit een verwerkt .xlsx-invoerbestand), maar er werd geen themadeel geschreven, zodat de verwijzingen bleven hangen. Excel tolereerde de weglating door stilzwijgend terug te vallen op het ingebouwde thema "Office", maar Office File Validation markeerde elke verwijzing als "themaonderdeel ontbreekt" en Apache POI in strikte modus wees de werkmap af bij de eerste opzoeking.SaveAsstuurt nu het canonieke Office-thema (2007+) uit: 12-slot kleurenschema (systeemwindowText/window, vier Excel-standaardkleuren, zes accenten, twee hyperlinkkleurden), lettertypenreeks Calibri Light / Calibri, minimaal geldig opmaakschema (drie opvul- / lijn- / effect- / achtergrondvulinvoeren elk conformCT_StyleMatrix).[Content_Types].xmlkrijgt een overeenkomstigeOverride;xl/_rels/workbook.xml.relskrijgt eentheme/theme1.xml-relatie die aan het einde van het rid-bereik valt, zodat de bestaandeXlsxFirstExternalLinkRid-offsets voor bladen / sst / stijlen / vba / externLinks ongewijzigd blijven - Directe
Sheet.Name := '...'-toewijzing wordt nu ook gedesinfecteerd en ontdubbeld. Ronde 3 (v2.54.1) voegde handhaving van Excel-naamgevingsregels toe inTXLSXSheets.Add(AName), maar de eigenschapssetterTXLSXWorksheet.Namewas een onbewerktewrite FName, zodat het meest voorkomende mutatiepad van die ronde niet werd gedekt —lxXlsxExport.pas:122 Target.Name := Source.Namein de XLS → XLSX-rondreis liet elke naam door die de BIFF8-bron toevallig droeg (verboden tekens: \ / ? * [ ], lengte > 31, omringende enkele aanhalingstekens, gereserveerdeHistory, hoofdletterongevoelige duplicaten van een bestaand blad). De eigenschapssetter stuurt nu via een nieuweSetName-methode die dezelfdeXlsxSanitizeSheetName- +' (N)'-suffix-ontdubbelingslogica (hoofdletterongevoelig, zelf-uitsluiting) toepast ten opzichte van de bladcollectie van de bovenliggende werkmap. Losgekoppelde werkbladen (nog geenFWorkbook-verwijzing) slaan de ontdubbelstap over en desinfecteren alleen —TXLSXSheets.Addzal uniekheid afdwingen wanneer het blad wordt gekoppeld. Idempotent op al geldige namen zodatFSheets.Add(names[i])aan de lezerszijde een zuivere rondreis blijft
Opgelost
- [MS-XLSX] kruiscontrole ronde 4 — themaonderdeel + bladnaamsetter. Twee vervolgcorrecties gericht op problemen die na ronden 1–3 (v2.51.0 / v2.52.0 / v2.54.1) zijn blijven bestaan. Geen van beide verbreekt een bestaand aanroeppunt; één breidt het gedrag uit bij een setter, de andere voegt een nieuw altijd uitgestuurd onderdeel toe
Versie 2.87.4
Gewijzigd
- XLS gedeelde formules schrijven nu een geldig
ShrFmla-lichaam. BIFF8-uitvoer van gedeelde formules bevat nu de vereistecUse-byte vóór de gedeelde verwerkte formule, zodat werkmappen opgeslagen metUseSharedFormulasde formuletokenstream niet meer met één byte verschuiven - XLS-tabelstijl en filtermetadata komen nu overeen met de nieuwste MS-XLS-indeling.
AddTableschrijftLIST12nu alsList12TableStyleClientInfo, stelt vlag voor AutoFilter van tabel en veld in inFeature11en stuurt de lege per-kolomFeat11FdaAutoFilter-blokken uit die Excel verwacht - BIFF8 CF12 Data Bar / Kleurenschaal / Pictogramreeks-regels laten nu verboden DXF-payloads weg. HotXLS volgt de MS-XLS-regel dat deze CF12-typen een leeg DXF-blok moeten dragen, terwijl hun daadwerkelijke regelinstellingen in de CF12-kindspecifieke staart worden bewaard
Versie 2.87.3
Verwijderd
- XLS-werkbladtabelmetadata volgt nu de MS-XLS
Feature11-tabelindeling.AddTable-uitvoer voor .xls-bestanden schrijft nu eenFeatHdr11-tabelkoptekst plusFeature11TableFeatureType/Feat11FieldDataItem-payloads, verwijdert de verouderde$0867 FeatHdr-tabelmarkering en slaat tabel- en kolomnamen op alsXLUnicodeString-waarden
Opgelost
- XLS-tabelterugkoppeling begrijpt nu de spec-correcte veldindeling. HotXLS verwerkt
TableFeatureType-tabelnamen, -bereiken, -status van totalenrij en -veldonderschriften, met behoud van een terugvaloptie voor oudere HotXLS-gegenereerde tabelrecords
Versie 2.87.2
Opgelost
- XLS BIFF8-vervolgrecords bevatten nu correcte basisslengtes. Overgrote XLS-records die door de schrijver worden gesplitst werken nu de lengte van het eerste record bij naar 8224 bytes in plaats van de originele overgrote lengte in de BIFF-koptekst te laten staan
- Grote XLS-werkbladtabellen gebruiken nu spec-correcte
ContinueFrt11-chunks. BredeAddTable-uitvoer met groteFeature11-payloads wordt nu opgeslagen met$0875 ContinueFrt11-vervolgrecords en wordt heropend met bewaarde tabelmetadata, overeenkomend met de [MS-XLS]Feature11/ContinueFrt11-indeling
Versie 2.87.1
Gewijzigd
- XLSX-werkbladrastergrens omvat nu de laatste Excel-rij en -kolom.
TXLSXRange,RCRange,EntireRowenEntireColumnstaan nu rij 1048576 en kolom 16384 (XFD) toe, overeenkomend met de rijnummer- en kolomnummergrenzen van [MS-XLSX]. Eerder gebruikte de interne begrenzing maxima op basis van nul, zodatXFD1048576en bereiken die de laatste rij of kolom raken stilzwijgend werden afgekapt naar de vorige rij/kolom
Opgelost
- XLSX-versleutelingsdocumentatie en tests komen nu overeen met het geïmplementeerde schrijfpad. Helppagina's en de regressiereeks vermelden nu dat
SaveAsEncryptedECMA-376 Standard Encryption-uitvoer schrijft voor niet-lege wachtwoorden, terwijlOpenEncryptednog steeds een uitzondering gooit voor versleutelde pakketten en terugvalt voor gewone .xlsx-bestanden
Versie 2.87.0
Opgelost
- XLSX met wachtwoord beveiligd opslaan werkt nu (golf J fase 2, achterstand #29).
TXLSXWorkbook.SaveAsEncrypted(FileName, Password)schrijft nu een echt ECMA-376 Standard Encryption-beveiligd .xlsx-bestand (Office 2007+-formaat). De volledige [MS-OFFCRYPTO] §2.3.4-pijplijn is aanwezig: de SHA-1 50.000-iteratie-wachtwoordderivatie van fase 1 + AES-128-verificatieblokken + AES-CBC-pakketlichaamversleuteling + binaireEncryptionInfo-serializer is nu aangevuld met de vier\005DataSpaces-metadatastreams van fase 2 (Versie / DataSpaceMap / DataSpaceInfo / TransformInfo) en de OLE Compound File Binary-schrijver die alles in een CFB-container plaatst die Excel opent met het gebruikerswachtwoord. Werkstroom: aanroeper roeptSaveAsEncryptedaan met een niet-leeg wachtwoord → HotXLS serialiseert de werkmap naar een in-memory klartekst .xlsx-zip → versleutelt via AES-128 CBC met een vers willekeurig 16-byte-salt en verificator → schrijft de CFB-uitvoer viaStgCreateDocfile. Openen in Excel 2007+: voer wachtwoord in → inhoud opent. Verkeerd wachtwoord: afgewezen.OpenEncrypted(decoderingskantt) is nog steeds een afzonderlijk achterstandsitem en blijftEXlsxEncryptionNotImplementedgenereren wanneer het een versleuteld bestand ontvangt
Versie 2.86.1
Toegevoegd
- XLSX Standard Encryption — cryptografische basis (golf J fase 1, achterstand #29). Twee nieuwe interne eenheden leveren de versleuteling en sleutelafleiding voor het ECMA-376 Standard Encryption-schrijfpad.
lxAES.pasomhult Brian Gladman's AES (gekoppeld vanuitthirdparty/Win32/aes*.obj+thirdparty/Win64/aes*.obj) en biedt AES-128 ECB-enkelblokvering en AES-128 CBC-versleuteling.lxXlsxStdEncrypt.pasimplementeert zuivere Pascal SHA-1 (FIPS-180-4), de [MS-OFFCRYPTO] §2.3.4.10 50.000-iteratie-wachtwoordderivatie, de §2.3.4.7-verificatieblokken (EncryptedVerifier+EncryptedVerifierHash), AES-CBC-pakketlichaamversleuteling (8-byte LE-grootteprefiks + nul-opvulling tot 16-byte-grens + IV-van-nullen) en de binaireEncryptionInfo-serializer van §2.3.4.6.TXLSXWorkbook.SaveAsEncryptedgenereert nog steedsEXlsxEncryptionNotImplemented— golf J fase 2 voegt de OLE Compound File Binary-schrijver (\005DataSpaces-containerstreams) toe en koppelt de pijplijn aanSaveAsEncrypted. Tot die tijd zijn de nieuwe eenheden interne bibliotheeksteigering waarop aanroepers niet mogen steunen
Versie 2.86.0
Verwijderd
- QueryTable en External Data Connection bewaring (golf I, achterstand #28). Door Excel gemaakte QueryTables en externe dataverbindingen (Gegevens → Externe gegevens ophalen van Web / SQL / OLEDB) overleven nu een HotXLS-opslaan/openen-cyclus. Eerder sloeg de BIFF8-lezer
QsiSXTag($0802),QsiSXTagExt($0810) enDConn($0876) stilzwijgend over, zodat de metadata die de bovenstroom beschrijft bij opslaan werd verwijderd en de tabel degradeerde tot gewone celwaarden. De lezer legt deze records nu vast als ondoorzichtige bytes en de schrijver stuurt ze terug in de werkbladsubstream (naast het PIVOTVIEW-blok conform [MS-XLS] §2.1.7.20.5) en de werkmapalgemeen (naast het blok met late globals vóór EOF conform §2.1.7.20.3). HotXLS modelleert de getypte QSI- / DConn-structuur programmatisch nog steeds niet — het aanmaken van nieuwe QueryTables vanuit aanroepcode wordt uitgesteld naar een latere golf — maar werkmappen die deze al bevatten verliezen geen vernieuwingsmetadata meer. Alleen BIFF8 (.xls); BIFF5 niet beïnvloed
Versie 2.85.1
Gewijzigd
- Win32 / Win64-bibliotheekbouw hersteld. Twee helpervariabelen voor draaipuntrij-items in de SXLI-uitstuurder voor meerdere gegevensvelden van golf H5.3 werden gedeclareerd als afzonderlijke
array of array of Wordanonieme typen, die de Delphi-compiler behandelt als afzonderlijke naamloze typen en bij directe toewijzing afwijst metE2008 Incompatible types. De HotXLS-bibliotheek is niet gebouwd sinds v2.84.1 op RAD Studio 12.0 t/m 37.0. De twee variabelen worden nu samen gedeclareerd zodat ze één anoniem type delen, waardoor de toewijzing wordt gecorrigeerd en de .dcu / .bpl-uitvoer voor zowel Win32 als Win64-doelen wordt hersteld. Geen wijziging in runtimegedrag — de uitgestuurde SXLI-bytes zijn identiek aan v2.85.0
Versie 2.85.0
Gewijzigd
- Getypte draaipuntsubtotaal-API (golf H5.4). Het getypte
TXLSPivotFieldbiedt nu eenSubtotals: TXLSPivotSubtotalsset-eigenschap naast het bestaande onbewerkteSubtotalMask: Word. Aanroepers kunnen bijvoorbeeldField.Subtotals := [xlpsSum, xlpsAverage];toewijzen in plaats van het SXVDgrbitSub-veld handmatig te verpakken. Twaalf subtotaaltypen zijn beschikbaar (xlpsDefault, xlpsSum, xlpsCount/CountA, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNums, xlpsStdDev, xlpsStdDevP, xlpsVar, xlpsVarP), elk overeenkomstig één bit conform [MS-XLS] §2.4.279. Het onbewerkteSubtotalMaskblijft de bron van waarheid voor de rondreis — gereserveerde bits 12-15 worden bewaard bij lezen/schrijven. Sluit de golf H4.3-bekende beperking "rijveld-subtotaal SXVD.grbitSub-configuratie niet beschikbaar vanuit API" en voltooit de golf H5-draaipuntvervolgstappen
Versie 2.84.1
Toegevoegd
- SXLI-uitbreiding voor meerdere gegevensvelden (golf H5.3). Wanneer een draaipunttabel meer dan één gegevensveld heeft EN de gegevensveldas overeenkomt met een gegeven SXLI-as (
DataFieldAxisIsRow = True&& rijas, ofDataFieldAxisIsRow = False&& kolomas), repliceert de schrijver nu elke cartesisch-productcombinatieDataFieldCountkeer metiData = 0 .. DataFieldCount - 1, plusDataFieldCounteindtotalenregels zodat elk gegevensveld zijn eigen totaal krijgt. De niet-hostende as is ongewijzigd. Excel en andere lezers renderen draaipunten met meerdere gegevensvelden nu in de door de aanroeper bedoelde indeling. Draaipunten met één gegevensveld sturen bit-identieke uitvoer uit als v2.84.0. Deltacompressie (H5.1) vouwt de herhaalde combinaties samen tot circa 8 bytes per replica. Sluit de golf H4.3-bekende beperking "SXLI voor meerdere gegevensvelden niet correct uitgebreid"
Versie 2.84.0
Gewijzigd
- Draaipuntpagina-asvoorselectie-API (golf H5.2). Het getypte
TXLSPivotFieldheeft nu eenPageItemIndex-eigenschap die programmatisch gebouwde draaipunten kunnen instellen om een specifiek cache-item op het pagina-asfilter voor te selecteren. StandaardxlPageItemAll(= $7FFD) laat het filter op "(Alle)" staan zodat aanroepers diePageItemIndexnooit toewijzen bit-identiek gedragen als v2.83.2. De SXPI ($00B6)-schrijver leestField.PageItemIndexin plaats van $7FFD vast te coderen, en de getypte lezer vult nuPageItemIndexuit SXPI bij Openen. Sluit de golf H4.3-bekende beperking "paginafilteraanroeper-voorafgaande selectie niet beschikbaar vanuit API"
Versie 2.83.2
Gewijzigd
- Kleinere draaipunt-SXLI-records via deltacompressie (golf H5.1). De draaipuntschrijver comprimeert SXLI-regelitems nu met deltacompressie via het cSic-veld van de spec — de voorloopende cache-item-indices van elke regel die overeenkomen met de vorige regel in hetzelfde SXLI-record worden samengevouwen in een gedeeld-prefiks-telling, en alleen de afsluitende indices worden uitgestuurd. Typische rijas-SXLI-records (een paar rij-velden x tientallen items) krimpen 30-60% zonder semantische wijzigingen. Uitvoer wordt nog steeds opgesplitst om onder de 8224-byte BIFF-recordlimiet te blijven. De eerste regel van elke SXLI-record stuurt altijd cSic = 0 uit, en de eindtotalenregel wordt nooit delta-gecomprimeerd
Versie 2.83.1
Opgelost
- Celvul-, lettertype- en randkleurden ingesteld via RGB bewaren nu correct via .xls opslaan/openen. De BIFF8 XFExt ($087D)-schrijver stuurde het ixfe-veld van elke record uit met de positie in de in-memory XF-array, maar de overeenkomstige celrecords op schijf schrijven ixfe met de na-coupure SaveIndex-volgorde. Wanneer een XF eerder in de tabel werd gecoupeerd tijdens opslaan, eindigde het ixfe van elke XFExt buiten het aantal gecoupeerde slots, en de rijke kleur die aan elke cel was gekoppeld verschoof naar een naburige cel bij herladen. De schrijver lost nu SaveIndex op voor elk rijke-slot-XF en stuurt het overeenkomstige op-schijf ixfe uit, zodat RGB-celkleurden opgeslagen door HotXLS een opslaan / herladen-rondreis intact overleven. XFExt-records voor XF's die volledig werden gecoupeerd worden nu overgeslagen
Versie 2.83.0
Gewijzigd
- Draaipuntregelitems + pagina-itemstatus (golf H4.3). Programmatisch gebouwde draaipunttabellen sturen nu SXLI ([MS-XLS] §2.4.275, $00B5) uit voor zowel rij- als kolomas, plus SXPI ($00B6) voor de pagina-as. Dit geeft de draaipuntweergave lay-outgetrouwheid: niet-Excel-lezers zien de exacte weergavevolgorde die de schrijver bedoelde, grote draaipunten openen sneller, en paginafilters blijven bestaan met een standaard "(Alle)" selectie per paginaveld
- Opsomming van rij + kolom SXLI. De schrijver somt het cartesische product van cache-items van asvelden op (binnenste veld varieert het snelst, overeenkomend met de geneste-rij-indeling van Excel) en stuurt één regel per combinatie plus een afsluitende eindtotalenregel gemarkeerd met het SXLI nTypes fGrandTotal-bit. Elke regel gebruikt cSic = 0. Uitvoer wordt opgesplitst in meerdere SXLI-records wanneer het regelaantal de 8224-byte BIFF-limiet overschrijdt; een veiligheidsgrens van 16.384 regels voorkomt ongecontroleerde uitbreiding
- SXPI pagina-asstatus. Wordt alleen uitgestuurd wanneer ten minste één veld Axis = xlpfaPageField heeft. Elke invoer is 10 bytes (isxvd + iCache + ipos + objId) waarbij iCache = $7FFD "(Alle)" aanduidt — de API voor het vooraf selecteren van specifieke pagina-items wordt uitgesteld naar golf H5. Draaipunten zonder paginavelden sturen geen SXPI
- Sluit golf H3-bekende beperking "SXLI / SXPI niet uitgestuurd". Gecombineerd met H4.1 (DataField-getalnotaties) en H4.2 (SXDBB per-record stroom), sluit golf H4 alle drie de bekende beperkingen in de H3-draaipunttabelschrijver. Draaipunttabellen gebouwd via
IXLSWorksheet.AddPivotTableworden nu geleverd als zelfstandige caches met volledige indelingsmetadata
Versie 2.82.0
Toegevoegd
- Bitgecomprimeerde codering conform specificatie. Elk veld gebruikt
ceil(log2(itemCount + 1))bits per record (schildwachtsruimte inbegrepen). Records zijn byte-uitgelijnd — elke nieuwe record begint op een verse byteaanvang. De schrijver splitst de stroom op in meerdere SXDBB-records om onder de 8224-byte BIFF-limiet te blijven, zodat caches met tienduizenden bronrijen nog steeds schoon serialiseren - Rondreis-pad ongewijzigd. Draaipuntcaches die van schijf worden gelezen (FromRawBlobs = True) blijven via het onbewerkte-byte-pad van golf H1 een rondreis maken — de nieuwe SXDBB-schrijver wordt alleen geactiveerd voor getypte caches gebouwd door
IXLSWorksheet.AddPivotTable. Gemengde werkmappen sturen beide paden correct uit
Gewijzigd
- Zelfstandige per-record stroom voor draaipuntcache (golf H4.2). Programmatisch gebouwde draaipuntcaches sturen nu SXDBB-records ([MS-XLS] §2.4.272, $00C5 in cachecontext) uit met de per-record veldwaardeindices in de bitgecomprimeerde codering van de spec. Zonder SXDBB moest Excel de cache vernieuwen vanuit het bronbereik bij Openen. De cache is nu zelfstandig
Versie 2.81.0
Toegevoegd
- Getalnotaties voor draaipuntgegevensvelden (golf H4.1). Draaipuntgegevensvelden kunnen nu een Excel-getalnotatietekenreeks dragen zodat valuta / percentage / datumgegevens bij Openen worden weergegeven met de juiste symbolen in plaats van ruwe Algemeen-opmaakwaarden. Nieuw
IXLSWorksheet.PivotSetDataFieldFormat(DataField, FormatStr): Wordregistreert de notatie in de NumFormats-tabel van de werkmap en schrijft de resulterende ifmt-index naarTXLSPivotDataField.NumberFormat. De getypte schrijver stuurt SXDI.ifmt al uit, zodat dit de cirkel sluit - Openbare NumFormats-helper op TXLSWorkbook.
Workbook.RegisterNumFormat(FormatStr): Wordbiedt hetzelfde automatisch-toevoegen-gedrag op werkmapniveau voor aanroepers die ifmt-indices nodig hebben in niet-draaipuntcontexten. Lege FormatStr slaat de korte weg naar index 0 ('Algemeen') in
Gewijzigd
- Aanroepersgebruik
df := pivot.AddDataFieldByName('Revenue', xlpaSum); Sheet.PivotSetDataFieldFormat(df, '$#,##0.00'); df := pivot.AddDataFieldByName('GrowthPct', xlpaAverage); Sheet.PivotSetDataFieldFormat(df, '0.00%');
Versie 2.80.1
Opgelost
- Pictogramreeks-voorwaardelijke opmaak is nu correct via HotXLS opslaan/openen. De v2.49.0-controle wijzigde de CF12-schrijver om
ct=$06uit te sturen voor Pictogramreeks-regels conform [MS-XLS] §2.4.43 (de spec-correcte waarde;$05is gereserveerd voor Filterregels), maar het overeenkomstige leezerpad herkende nog steeds alleen de verouderde waarde$05. Als gevolg daarvan verloren .xls-bestanden geschreven door HotXLS v2.49.0..v2.80.0 hun Pictogramreeks-regels bij herladen. De lezer accepteert nu zowel$05(verouderd HotXLS pre-v2.49.0) als$06(spec / v2.49.0+)
Versie 2.80.0
Toegevoegd
- Programmatische draaipunttabel-aanmaak-API (golf H3). Nieuwe methode
IXLSWorksheet.AddPivotTable(SourceRangeA1, DestRow, DestCol, Name): TXLSPivotTabledoorloopt het opgegeven bronbereik, leidt het gegevenstype van elke kolom af uit de celwaarden, bouwt automatisch eenTXLSPivotCache(of hergebruikt een bestaande gebonden aan hetzelfde bereik) en maakt een getypte draaipunttabel op het doelblad met één TXLSPivotField per cacheveld (assen aanvankelijk niet ingesteld) - Veiligheid van rondreis behouden. Draaipunttabellen en caches die van schijf worden gelezen behouden hun golf H1
FromRawBlobs = True-vlag en blijven via het onbewerkte-byte-pad een rondreis maken. Alleen de nieuwe programmatisch gemaakte draaipunten gaan via de getypte schrijver - Beperkingen van golf H3. Bronbereikstypen anders dan rechthoekig A1 vallen buiten bereik. SXLI / SXPI worden niet uitgestuurd voor getypte draaipunten — Excel berekent ze bij Openen. Meerdere draaipunten die een cache delen worden ondersteund maar de aanroeper moet elke keer dezelfde bronbereikrekenreeks gebruiken
Gewijzigd
- Aanroeper koppelt assen / gegevens via comfortmethoden.
pivot.AddRowField('Region'),pivot.AddColumnField('Quarter'),pivot.AddPageField('Year'),pivot.AddDataFieldByName('Revenue', xlpaSum).SetFieldAxis+AddDataFieldzijn beschikbaar voor fijnere controle. Veldasenumeratie: xlpfaRowField / xlpfaColumnField / xlpfaPageField / xlpfaDataField / xlpfaNone. Elf aggregatiefuncties: Som, Aantal, Gemiddelde, Max, Min, Product, AantalGetallen, StdAfw, StdAfwP, Var, VarP - Getypte schrijver stuurt SX*-records + cachesubstream uit. Wanneer
pivot.FromRawBlobs = Falseserialiseert de schrijver het getypte model naar SXView ($00B0) + SXVD ($00B1) per veld + SXVI ($00B2) per item + SXIVD ($00B4) rij/kol-indexmatrices + SXDI ($00C5) per gegevensveld + SXEx ($00C6) in de werkbladvoettekst. De overeenkomstige draaipuntcache stuurt een vers BOF (dt=$0006) + SXDB ($00C6)-koptekst + SXFDB ($00C8) + SXFDBType ($00FB) + per-item records + EOF-substream uit
Versie 2.70.0
Toegevoegd
- Getypt leesmodel voor draaipunttabellen (golf H2). Voortbouwend op het onbewerkte-byte-behoud van golf H1 vult de lezer nu ook een getypt objectmodel in zodat aanroepers de draaipuntstructuur kunnen bekijken zonder bytecode te verwerken. Nieuwe typen —
TXLSPivotTable,TXLSPivotField,TXLSPivotItem,TXLSPivotDataField,TXLSPivotCache,TXLSPivotCacheField,TXLSPivotCacheItem,TXLSPivotCaches,TXLSPivotTables— zijn beschikbaar via de nieuwe eigenschappenIXLSWorksheet.PivotTablesenTXLSWorkbook.PivotCaches - Nieuwe eenheid lxPivot.pas. Alle draaipunttypen leven in hun eigen eenheid naast lxChart / lxFormula / lxNames. lxHandle herexporteert de openbare typen zodat bestaande imports blijven werken
Gewijzigd
- Wat het model vastlegt. Per draaipunttabel: positie (FirstRow / Col / LastRow / Col / FirstDataRow / FirstDataCol), Name, DataCaption, CacheId en een geordende lijst van
Fields(elk met Name, Axis, Items[], SubtotalMask, CacheFieldIndex). De gegevensas stuurt een paralleleDataFields-lijst uit, elk met eenAggregationuit de 11-waardenTXLSPivotAggregation-enumeratie - Cachemodel. Elk
TXLSPivotCachebevat CacheId, SourceRange, RecordCount en een lijst vanFields. Elk cacheveld draagt zijn gegevenstype, Name, NumberFormat-index en de unieke-waarden Items[]. Per-record indices zijn beschikbaar viaCache.RecordIndices[Record, Field]voor programmatisch gebouwde caches - Veiligheid van rondreis. Draaipunttabellen die van onbewerkte bytes kwamen hebben
FromRawBlobs = True— de schrijver blijft de golf H1-onbewerkte blobs letterlijk weerspiegelen. De getypte-modelschrijver is gepland voor golf H3
Versie 2.69.0
Gewijzigd
- Werkblad-PIVOTVIEW-blok. SX*-weergaverecords ($00B0-$00B2, $00B4-$00B6, $00C5-$00C8, $00D0-$00D2, $00D5, $00E3, $00F0, $00FB, $0100, $0864) worden in stroomvolgorde vastgelegd en uitgestuurd in de per-blad voettekst van de schrijver (tussen het Tabellenblok en het afsluitende EOF), overeenkomend met de [MS-XLS] §2.1.7.20.1-werkblad-ABNF-positie voor PIVOTVIEW. Overgrote SXAddl-payloads rijden mee via de bestaande Continue ($003C)-splitter
- Draaipuntcache-substreams. BOF (dt=$0006) gevolgd door SXDB / SXFDB / SXFDBType / SXSTRING / SXNUM / SXBOOLEAN / SXERR-records tot het bijpassende EOF wordt vastgelegd als één cache-emmer; meerdere caches in dezelfde werkmap krijgen elk hun eigen emmer. Bij opslaan herbouwt de schrijver de volledige BOF / records / EOF-substream voor elke vastgelegde cache
- Bereik: alleen onbewerkte-byte-behoud (H1). Golf H1 verwerkt draaipuntgegevens bewust niet in een getypt model — TXLSPivotTable / TXLSPivotField / TXLSPivotCache en een programmatische AddPivotTable-API zijn gepland voor toekomstige golven H2 / H3
Verwijderd
- Draaipunttabel rondreis-behoud (golf H1). HotXLS bewaart nu elke record die een draaipunttabel vormt wanneer een Excel-gemaakt .xls door Openen → Opslaan gaat. Vóór deze release liet de lezer niet-herkende SX*-records stilzwijgend vallen en sloeg de volledige draaipuntcache-substream over. De lezer legt al deze nu vast als ondoorzichtige bytes en de schrijver speelt ze letterlijk terug, zodat de draaipunttabel na een opslaan / herladen-cyclus nog steeds correct wordt weergegeven in Excel
Versie 2.68.0
Toegevoegd
- Grafiek achterstand golf F deelfunctie 3: foutbalken voor reeksen.
TXLSChartSeriesInfoheeft een veldErrorBars: array of TXLSChartErrorBarsInfogekregen. Elke invoer produceert een SerErrBar-record ([MS-XLS] §2.4.105, $105B) in het bovenliggende Reeksenblok, na Trendlijnen en vóór het Reeksen-einde, in aanroepervolgorde. Een typische kolomgrafiek met Y-foutbalken gebruikt twee invoeren (Sertm=1 Y+ en Sertm=2 Y-); scatter / bellengrafiek voegen X+/X- paren toe (Sertm=3 / 4)
Gewijzigd
- Schakelaar voor T-kaprendering.
FTeeTopbepaalt of Excel T-vormige kapjes op de stafuiteinden rendert (visuele standaard van Excel = aan). Handig wanneer de aanroeper de minimalistischere stijl "alleen tikje" wil
Opgelost
- Vijf waardebronnen.
Ebsrcselecteert 1=percentage, 2=vaste waarde, 3=standaardafwijking, 4=standaardfout, 5=aangepast.NumValuedraagt de grootte (10.0 = 10% wanneer Ebsrc=1, onbewerkte scalar voor vaste waarde, vermenigvuldiger voor standaardafwijking). Voor aangepast (Ebsrc=5) draagt hetCnum-veld het aantal aangepaste gegevenspunten; de spec zegt MOET=0 voor de andere bronnen, dus de bouwer dwingt niet-aangepaste invoeren naar Cnum=0 ongeacht de aanroeperinvoer - Voorbehoud bij aangepaste waardereeks (Ebsrc=5). De minimale bouwer stuurt het SerErrBar-record uit met de gekozen Cnum maar stuurt nog niet het ondersteunende BRAI-cluster uit dat naar de aangepaste waardenmatrix wijst. Aangepaste foutbalken renderen daarom met standaardgrootte totdat een toekomstige fase de BRAI-opvolger aansluit. Percentage / vast / standaardafwijking / standaardfout (Ebsrc 1..4) zijn volledig functioneel in deze release
Versie 2.67.0
Gewijzigd
- Grafiek achterstand golf F deelfunctie 2: trendlijnen voor reeksen.
TXLSChartSeriesInfoheeft een veldTrendlines: array of TXLSChartTrendlineInfogekregen. Elke invoer produceert een Trendline-record ([MS-XLS] §2.4.328, $2050) in het bovenliggende Reeksenblok, na SerToCrt en vóór het Reeksen-einde, in aanroepervolgorde. Meerdere trendlijnen op één reeks zijn toegestaan en Excel rendert ze allemaal - Vergelijking en R²-weergave + extrapolatie.
FDispEq/FDispRSqrschakelen de op-grafiek vergelijking en R²-labels in.NumForecast/NumBackcaststellen de extrapolatieperioden voor- en achterwaarts in (Double, >= 0).NumInterceptstelt het y-snijpunt in; geef NaN ($7FF8000000000000) door voor "automatisch" - Trendlijnetiket als inline LPWideString. Het
Name-veld wordt geschreven in de sName-sleuf van het Trendline-record ([MS-XLS] XLUnicodeString: cch:2 + grbit:1 + UTF-16-tekst). Een lege Name laat Excel automatisch een legendaitem genereren zoals "Lineair (Reeks1)" - Interne refactoring van AddSeries. De interne
AddSeries-helper neemt nu éénTPreparedSeriesInfoin plaats van de vorige (Name, CatArea, ValArea)-drieslag, zodat toekomstige aan-Reeksen-gekoppelde records (volgende fase: foutbalken) door één parameter kunnen stromen zonder verdere handtekeningwijzigingen
Opgelost
- Zes regressietypen.
Regtselecteert 0=polynoom, 1=exponentieel, 2=logaritmisch, 3=macht, 4=voortschrijdend gemiddelde, 5=lineair. Voor polynoom stelt hetNOrder-veld de graad in (2..6); voor voortschrijdend gemiddelde stelt het de periode in (2..N). Voor de andere typen wordtNOrdergenegeerd maar de spec vereist 1..6, dus de bouwer zet nul/buiten-bereik waarden standaard op 1 / 6 respectievelijk
Versie 2.66.0
Gewijzigd
- Grafiek achterstand golf F deelfunctie 1: 3D-grafiektypen. Programmatisch gebouwde grafiekbladen kunnen nu
xlsChartType3DColumn,xlsChartType3DBar,xlsChartType3DLineofxlsChartType3DPieaanvragen viaAddChartSheet(Name, ChartType, ...). De 3D-varianten hergebruiken hetzelfde on-the-wire BARCHART / LINECHART / PIECHART-grafiektype-record als de 2D-varianten, maar het omringende CHARTFORMAT-blok stuurt nu ook een Chart3d-record uit conform [MS-XLS] §2.4.46 om Excel te laten overschakelen naar zijn 3D-renderingpijplijn - Standaard 3D-geometrie weerspiegelt Excel's "Invoegen > 3D-kolom". 20° rotatie, 15° hoogte, perspectief uit, cluster aan, automatisch schalen aan, hoogte en diepte beide 100% van de breedte, tussenruimte 150%. Wanden en rechte assen komen overeen met de standaard van Excel. De geometrie is momenteel vastgecode (geen aanroeperknop); de volgende fase kan het promoten naar een record-stijl overschrijving
- 3D-taart slaat beide assen over. Het gebruikte-assen-aantal en de asemissiepaden behandelen
xlsChartType3DPienu hetzelfde alsxlsChartTypePie— gebruikte assen = 0, geen categorie- / waardeas uitgestuurd. Zonder deze poort renderde Excel een 3D-taart met afvalaslijnen die door de grafiek bloedden
Verwijderd
- Chart3DBarShape ($105F) conditioneel hersteld. v2.55.0 verwijderde de onvoorwaardelijke Chart3DBarShape-emissie omdat [MS-XLS] §2.4.47 bepaalt dat hij "MOET worden genegeerd als de huidige substream geen Chart3d-record bevat" en 2D-grafieken er geen hebben. Golf F herstelt het voor 3D-staaf / 3D-kolom alleen (pilaar=rechthoek, taps=geen), uitgestuurd naast Chart3d in CHARTFORMAT zodat de spec-relatie zichtbaar is in de draadindeling. 3D-lijn en 3D-taart slaan het nog steeds over
Versie 2.65.0
Gewijzigd
- Formulematrixconstanten bewaren nu hun gegevens tijdens de rondreis.
PtgArray-tokens ($20 / $40 / $60 — V / R / A klasse) in formulestromen dragen nu hunPtgExtraArray-payload via zowel lees- als schrijfpaden.SUM({1,2,3}),=MMULT(...),{=COUNTIF(...)}en andere formules met matrix-literals bewaren de literale waarden in door HotXLS geschreven.xls-bestanden in plaats van te rondreizen met lege rgcb-secties - Matrixgegevens hangen aan de syntaxisboom.
TXLSSyntaxItemheeft de eigenschappenArrayCols/ArrayRows/ArrayValuesgekregen (met het bijbehorendeTXLSArraySerVal-record dat num / str / bool / err / lege cellen beschrijft conform [MS-XLS] §2.5.198.122 SerAr). Hulpmiddelen die de syntaxisboom doorlopen kunnen matrixconstanten rechtstreeks inspecteren zonder de afzonderlijke externe gegevenscontainer te gebruiken - Programmatische constructie van matrix-literals. Code die
TXLSSyntaxItem-bomen via de API bouwt, kanSA_ARRAY-items vullen metSetArrayDimensions+ArrayValues[i]en HotXLS stuurt de overeenkomstige PtgExtraArray automatisch uit in de rgcb-sectie. De draadvolgorde komt overeen met de [MS-XLS] §2.5.198.59-regel dat PtgExtraArray-invoeren worden gerangschikt op de positie van hun PtgArray-token in de rgce-stroom
Opgelost
- Bestaand leespad blijft correct voor gemengd rgcb. De nieuwe code verbruikt alleen PtgExtraArray-invoeren die overeenkomen met PtgArray-tokens die het heeft verwerkt; andere extra gegevens worden met rust gelaten voor latere verwerking, en een misvormd rgcb valt terug op het leeg laten van matrixwaarden in plaats van de verwerkte boom weg te gooien
Versie 2.64.0
Toegevoegd
- Grafiek achterstand golf D fase 7: ophalen/instellen van themakleur voor tekeningen binnen een proces. Fase 5 introduceerde
XlsApplyThemeColorToDrawingals alleen-instellen-helper omdat BIFF8 OfficeArt een pre-Office-2007-binairformaat is zonder themakleurslot op schijf. De setter verlaagt nog steeds naar RGB voor de on-schijf OfficeArt opt-blob, maar de werkmap houdt ook een in-memory zijtabel bij die de originele thema-idx + tint onthoudt per(TMsoShapeContainer, OfficeArt-eigenschap-id)-paar. Een nieuweXlsGetDrawingThemeColor-lezer raadpleegt die zijtabel zodat hetzelfde proces de thema-intentie terug kan lezen die het zojuist schreef — nuttig voor in-app rendercode die thema-gestuurde kleuren wil markeren of beschikbaar stellen in eigenschapsvensters. Na Opslaan / Openen begint de zijtabel leeg en geeft de getter False terug, waarna het terugvalt opColorFormat.RGB - Nieuwe aanroeper-API.
XlsGetDrawingThemeColor(ColorFormat, Workbook, out ThemeIdx, out Tint): Booleanvoegt zich bij de bestaandeXlsApplyThemeColorToDrawing. De setter-handtekening is ongewijzigd; de setter legt de invoer nu ook vast inTXLSWorkbook.FDrawingThemeColors(een dynamische reeks van records, geïndexeerd op container-pointer + eigenschap-id). LatereXlsApplyThemeColorToDrawing-aanroepen op hetzelfde slot overschrijven de invoer - Waarom dit slechts "enkele-proces-rondreis" is. Het BIFF8 OfficeArt-formaat slaat alleen geïndexeerde / RGB / schema / sysColor op in zijn 4-byte ColorRef; er is geen uitbreidingsrecord analoog aan XFExt $087D waar de thema-idx + tint zouden kunnen leven. Dus de schijf-rondreis-beperking is structureel, niet een HotXLS-leemte. De fase 7-zijtabel overbrugt de in-proces-leemte
- Stabiele identiteit via nieuwe interne eigenschappen.
TXLSColorFormatheeft de alleen-lezen accessors_Containeren_Pidgekregen zodat de helpers de zijtabelsleutel kunnen samenstellen zonder dat de aanroeper privévelden uit de klasse hoeft op te vissen
Versie 2.63.0
Toegevoegd
- Grafiek achterstand golf D fase 6: samengestelde randselectoren bewaren RGB / thema via XFExt. De laatste bekende themakleur-beperking is gesloten:
Border[xlAround],Border[xlInsideVertical],Border[xlInsideHorizontal]enBorder[xlInsideAll]registreren nu dezelfde RGB of themakleur voor elk fysiek randslot dat ze raken in plaats van terug te vallen op het geïndexeerd-paletpad. De nieuweTXLSXfRichSlotSet(set vanTXLSXfRichSlotID) tilt de in-behandeling-zijnde rijke sleuf van één sleuf naar een set, zodat één celluslus-pas opSetRangeXFBordersPropertytot vier XFExt-sleuven in één keer registreert - Samengestelde selectortoewijzing. De nieuwe
BorderEdgeSlotSet(BorderIndex): TXLSXfRichSlotSet-helper centraliseert de selector-naar-sleuf-vertaling:xlEdgeLeft / Right / Top / Bottom→ enkelvoudige sets (ongewijzigd ten opzichte van fase 2)xlDiagonalDown / Up→[rsDiag](BIFF8 FullColorExt draagt slechts één diagonale kleur)xlAround→[rsTop, rsBottom, rsLeft, rsRight](buitenrand)xlInsideVertical→[rsLeft, rsRight](cel-naar-cel verticale scheidingen)xlInsideHorizontal→[rsTop, rsBottom](horizontale scheidingen)xlInsideAll→[rsTop, rsBottom, rsLeft, rsRight]
Border.SetColorenBorder.SetThemeColordelen dezelfde toewijzing, zodat RGB- en themapaden identiek gedragen over alle selectoren
Gewijzigd
- TXLSBorders.SetColor hersteld naar één enkele dispatch. Fase 2 moest
Borders.Color := Vvertakken naar vier per-randGetBorder(edge).Color := V-aanroepen omdat de in-behandeling-zijnde rijke sleuf slechts één sleuf tegelijk droeg. Met de setvorm legtBorders.SetColornu de volledige set{rsTop, rsBottom, rsLeft, rsRight}vast en roeptSetColorIndexeenmaal aan — circa 4x minder celluslusiteraties dan de fase-2-vertakking, byte-identiek XFExt-resultaat - ConsumePendingRichSlot itereert de set. De sleufregistratielus doorloopt de acht enum-leden en verzendt elk aanwezige lid in
FPendingRichSlotviaRegisterXFExtSlot. Randcellen waarvan het XF feitelijk niet is gewijzigd tijdens een samengestelde-selector-update voeren de callback toch uit — dat is onschadelijk omdat het XFExt-slot alleen visueel relevant is wanneer de cel daadwerkelijk de bijpassende randlijn heeft
Versie 2.62.0
Toegevoegd
- Grafiek achterstand golf D fase 5: aangepaste thema-XML-rondreis + tekeningenthema-helper. Drie onderdelen sluiten de laatste themakleur-leemten die fase 4 open liet. Aangepaste themapaletten ingesteld in Excel via Pagina-indeling → Kleuren overleven nu de laadcyclus: de parser doorloopt het OOXML
<a:clrScheme>ingebed in het BIFF8$0892Theme-record en werkt de 12-sleufFBiffThemevan de werkmap ter plaatse bij. De bijbehorende schrijver stuurt hetzelfde record uit wanneer het palet van het standaard Office-schema is afgedwaald, zodat door de aanroeper aangepaste thema's via HotXLS worden bewaard. Een nieuweXlsApplyThemeColorToDrawing-helper laat grafiek- / vormaanroepers tekenkleuren adresseren met dezelfde thema-idx + tint-woordenschat die cellen al gebruiken - Golf D volledig gesloten in vijf fasen. Fase 1 (v2.58.1) voegde de case-table-erkenning toe, Fase 2 (v2.59.0) schreef XFExt voor RGB-celkleuren, Fase 3 (v2.60.0) sloot de RGB-leesluslus, Fase 4 (v2.61.0) leverde het themakleurpad op cellen, en Fase 5 (deze) voltooit het geheel met aangepaste thema-XML-rondreis plus de tekeningenkant-helper
Gewijzigd
- Schrijver: Theme-record emissie met overslaan-bij-standaard.
TXLSWorkbook.StoreThemestuurt een$0892-record alleen uit wanneerIsBiffThemeDefaultaangeeft dat het palet van het standaard Office-schema is afgedwaald. De OOXML-tekst wordt gebouwd vanuit een deterministisch sjabloon: twaalf<a:srgbClr>-invoeren, plus de minimale wettelijke<a:fontScheme>/<a:fmtScheme>-stukjes die het schema vereist. Ongewijzigde werkmappen sturen geen record uit en blijven byte-compatibel met uitvoer van vóór Fase 5
Opgelost
- Lezer: OOXML-thema-XML-verwerking.
ParseThemestikt de recordtekst (frtRefHeaderU + dwThemeVersion + variabele lengte XML-payload, kan Continue-records overspannen) samen in één byte-buffer en voert een gerichte deeltekenreeks-scan uit voor de twaalf<a:clrScheme>-kinderen. Voor elke sleuf geeft het de voorkeur aan<a:srgbClr val="RRGGBB"/>en valt terug op<a:sysClr ... lastClr="RRGGBB"/>. Teksten die er niet uitzien als OOXML laten het palet op zijn standaardschema staan - Tekeningthemakleur-helper. De nieuwe vrije functie
XlsApplyThemeColorToDrawing(ColorFormat, Workbook, ThemeIdx, Tint)lost een thema-idx + tint op via het werkmap-palet en schrijft de resulterende RGB naar eenTXLSColorFormat. BIFF8 OfficeArt is een pre-Office-2007-binairformaat zonder native themakleurcodering, dus dit is alleen-instellen: terugkoppeling geeft de opgeloste RGB terug in plaats van het themaslot
Versie 2.61.0
Toegevoegd
- Nieuwe aanroeper-API. Vijf nieuwe
SetThemeColor-ingangspunten voegen zich bij de bestaande RGB / index-setters:IXLSInterior.SetThemeColor(ThemeIdx, Tint),IXLSInterior.SetPatternThemeColor(ThemeIdx, Tint),IXLSFont.SetThemeColor(ThemeIdx, Tint)enIXLSBorder.SetThemeColor(ThemeIdx, Tint)op elke randrandThemeIdxis het 0-gebaseerde themaslot (0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink);Tintis de spec-stijl -1,0..+1,0 lichter/donkerder aanpassing die als Q15 ondertekend geheel getal wordt gecodeerd in FullColorExt.nTintShade
Gewijzigd
- Theme-record ($0892) erkend bij lezen.
lxRead.ParseThemehaalt$0892uit het standaard-overslaan-pad zodat de case-tabel voor werkmap-globals het als een bekend record behandelt. De ingesloten OOXML-thema-XML-tekst zelf wordt voorlopig niet verwerkt — de 12 standaard Office-thema-kleuren komen al overeen met de meest voorkomende bronnen en door Excel ingestelde thema-cellen worden er correct via weergegeven - Waarom geen Theme-record bij schrijven. Door HotXLS opgeslagen .xls-bestanden sturen geen Theme-record uit. Excel 2007+ valt terug op het standaard Office-thema wanneer geen $0892 aanwezig is, wat precies overeenkomt met het standaardschema van HotXLS
FBiffTheme, zodat cellen dieSetThemeColorgebruiken met de juiste kleur worden weergegeven in Excel zonder dat we de ingesloten XML hoeven te verzenden
Opgelost
- Grafiek achterstand golf D fase 4: BIFF8-themakleurondersteuning (thema-idx + tint via XFExt $087D). Het 12-sleuf-themapalet van Office (lt1, dk1, lt2, dk2, accent1..6, hlink, foHlink) is nu beschikbaar voor rondreis aan de .xls-kant via de nieuwe
Interior.SetThemeColor(themeIdx, tint)/Interior.SetPatternThemeColor/Font.SetThemeColor/ per-randBorder.SetThemeColorAPI's. Het XF-record ontvangt nog steeds een best-match geïndexeerde icv (zodat verouderde lezers zoals Excel 2003 een benaderende kleur blijven renderen), terwijl Excel 2007+ de exacte thema-intentie herstelt via de XFExt FullColorExt (xclrType=3) toekomstige-extensie-record - Werkmap-BIFF-themapalet.
TXLSWorkbookdraagt nu eenFBiffTheme: TXLSThemeColorsgeïnitialiseerd op het standaard Office-themaschema dat de XLSX-kant al jaren gebruikt. Celkleurgetters lossen thema-idx + tint op via dit palet viaGetThemeRGBColor(idx, tint)
Versie 2.60.0
Toegevoegd
- Lezer:
ParseXFExtdoorloopt ixfe + cexts + rgExt. De parser verwerkt de acht kleur-ExtProp-extTypes ($0004 fillFg, $0005 fillBg, $000D font, $0007/$0008/$0009/$000A/$000B voor boven / onder / links / rechts / diagonale randen) en decodert de FullColorExt-tekst van elk (xclrType, nTintShade als ondertekend Q15, xclrValue). xclrType 2 (RGB) en 3 (thema) worden geregistreerd in de werkmap-zijtabel voor het ixfe van het record; andere extTypes worden netjes overgeslagen zodat een toekomstige golf ze kan toevoegen
Gewijzigd
- Grafiek achterstand golf D fase 3: XFExt ($087D) leeskant RGB / thema-herstel sluit de rondreis. De fase 1-erkenning en de fase 2-uitstuurder worden nu aangevuld met een parser die daadwerkelijk elke
$087D-record verbruikt in de werkmap-XF-rijke-kleur-zijtabel. Bestanden opgeslagen door Excel met RGB-celkleuren (vulling, lettertype, afzonderlijke randen) zijn nu beschikbaar viacell.Interior.Color/Interior.PatternColor/Font.Color/ per-randBorder.Colormet de exacte RGB die Excel heeft geschreven - Golf D is gesloten. Opslaan bewaart door aanroeper ingestelde RGB (fase 2). Laden bewaart door Excel ingestelde RGB (fase 3). Werkmappen zonder rijke kleurinformatie sturen dezelfde bytestroom uit als voorheen
Opgelost
- Celkleurgetters raadplegen nu eerst de zijtabel. De acht kleurgetters die eerder rechtstreeks via het geïndexeerde-paletpad liepen, lossen nu hun XF-index op, vragen
TlxFormatList.TryGetRichSlotvoor het bijpassende rijke-kleurslot en passennTintShadetoe via de bestaandeGetRGBTInt-helper wanneer het slot een RGB-waarde draagt. xclrType=3 (thema) valt door naar het geïndexeerde pad: de BIFF-werkmap heeft geen themamodel op deze aanroepketen
Versie 2.59.0
Gewijzigd
- Grafiek achterstand golf D fase 2: XFExt ($087D)-emissie voor BIFF8-celkleuren. Wanneer applicatiecode
cell.Interior.Color := $00FF6633(of een andere RGB) instelt op het BIFF8-pad, stuurt de schrijver nu een$087DXFExt-record uit naast de geïndexeerde-palet-XF-invoer zodat Excel de werkmap heropent met de exacte RGB die de aanroeper heeft doorgegeven. Behandelt alle vier celkleuroppervlakken:Interior.Color/Interior.PatternColor/Font.Color/ per-randBorder.Color(boven / onder / links / rechts / diagonaal) en het gemakBorders.Colordat nu naar de vier primaire randen distribueert zodat elk zijn eigen XFExt-sleuf krijgt
Opgelost
- Hoe de rondreis veilig blijft. De BIFF8-celsetterreeks produceert nog steeds de geïndexeerde-palet-XF-draaduitvoer die ze altijd deed — lezers die
$087Dnegeren zien de verouderde benadering. Het XFExt-record zit naast het XF en draagt de originele RGB als een 16-byte FullColorExt (xclrType=2, xclrValue=$00BBGGRR, nTintShade=0) verpakt in een ExtProp met het spec-correcte extType voor elk slot. Cellen die nooit het kleursetterpad namen sturen nog steeds geen XFExt uit - Opslag en boekhouding. Een nieuwe per-XF rijke-kleur-zijtabel in
TlxFormatListbevat de originele RGB / thema-info. De zijtabel wordt geraadpleegd inStoreWorkbookna STYLES en vóór PALETTE, overeenkomend met de*XFExt-positie in [MS-XLS] §2.1.7.20.3. xlExcel5-uitvoer is ongewijzigd (BIFF5 heeft geen XFExt-record) - Bekende beperking. De leeskant blijft bij de golf-D-fase-1-erkenning:
ParseXFExtverbruikt$087D-records maar voedt de herstelde RGB nog niet terug in de stijlobjecten van de werkmap. Bestanden opgeslagen door HotXLS zien er nu correct uit in Excel; bestanden die van Excel binnenkomen tonen nog steeds de geïndexeerde-paletbenadering bij terugkoppeling. Het sluiten van die leeskantzijde is een afzonderlijk vervolg (Fase 3)
Versie 2.58.1
Toegevoegd
- Grafiek achterstand golf D (alleen leeskant-erkenning): XFExt ($087D) wordt niet langer via het standaard-overslaan-pad geleid. Een nieuwe
ParseXFExt-tak in de BIFF8-werkmap-globals-case-tabel verbruikt$087D-records die Excel schrijft naast RGB- en themakleurige celstijlen. De lezer laat het geïndexeerde-kleur-XF-record nog ongewijzigd — volledig RGB / themaprecisie-herstel in het hash-sleutel-stijlmodel van de werkmap is uitgesteld naar een afzonderlijke golf omdat het de BIFF-schrijver-kant stijlklassen zou vereisen die te groeien met een RGB / themakleurveld dat vandaag niet bestaat. Bestanden van Excel met rijke kleuren laden nog steeds met de geïndexeerde benadering die HotXLS altijd heeft geproduceerd, maar de spec-conformantiezijde van "behandel$087Dals onbekend" is gesloten
Gewijzigd
- Waarom niet de volledige golf-D-scope. Het plan voorzag een gekoppelde schrijf + lees implementatie, maar verkenning vond dat de BIFF-schrijfpijplijn (
TXLSWorkbook.FXFList: TlxFormatList) XF-stijlgegevens codeert als een tekenreekssleutel met hex-verpakte geïndexeerde kleurslots en geen equivalent heeft van de XLSX-kantTXLSStyleColor(dieColorType/ColorValue/TintAndShadedraagt). De wijziging hier blijft daarom chirurgisch: lxRead herkent het record, lxStyleXf en lxHandle zijn ongewijzigd
Versie 2.58.0
Gewijzigd
- Schrijver bevestigt fRichSt / fExtSt + cRun / cbExtRst + rgRun + rgExtRst wanneer het hele record in één BIFF-stuk past.
AddSSTItemberekent nu de rijke / fonetische staartgrootte in zijn overloopcontrole; tekenreeksen waarvan de tekst + staarten in één 8224-byte SST-stuk passen sturen de volledige bewaarde lay-out uit, en Excel heropent de werkmap met de originele opmaak intact. Tekenreeksen die overlopen vallen terug op platte tekst zonder opmaak (de splitter zou anders Continue-vlagbytes moeten verweven met de nog-lopende rgRun-bytestroom); dit is de expliciete bekende beperking en treft alleen zeer lange rijke opgemaakte tekenreeksen (> circa 4000 brede tekens)
Verwijderd
- Grafiek achterstand golf C: SST rijke tekst en fonetische rondreis (BIFF8 XLUnicodeRichExtendedString). Rijke-tekst-opmaak ingesteld in Excel (een cel waarvan individuele tekens hun eigen lettertype / kleur dragen) zit in de gedeelde tekenreekstabel als een
XLUnicodeRichExtendedStringmet een bijgevoegdergRun-FormatRun-matrix. Verre-Oosten fonetische info (de furigana / hiragana annotatie boven kanji) is gekoppeld als eenrgExtRst-blok op hetzelfde record. HotXLS liet beide eerder vallen bij laden en stuurde de tekenreeks opnieuw uit als platte tekst bij opslaan, zodat openen en vervolgens opslaan van een werkmap elke cel met meerdere indelingen platmaakte tot één lettertype / kleur. De gedeelde-tekenreeks-parser bewaart nu beide afsluitende blokken per unieke tekenreeks, en de schrijver bevestigt ze opnieuw wanneer de tekenreeks in één SST-record past
Opgelost
- Lezer doorloopt Continue-grenzen zonder vlagbytes opnieuw te lezen. Een nieuwe
CollectRawTail-helper inParseSSThaalt de onbewerktergRun-bytes op (cRun x 4 bytes per FormatRun) gevolgd door de onbewerktergExtRst-bytes, spillend over Continue ($003C)-records zoals nodig — geen van beide blokken wordt opnieuw geprefikt met de vlagbyte van de tekenreeks bij een Continue-grens conform [MS-XLS] §2.4.58 - Hoekgeval-correctie Continue-vlagbyte (overgenomen uit de v2.54.0 SST-audit). Conform [MS-XLS] §2.4.58 draagt de voorloopende vlagbyte van een SST Continue-record alleen het
fHighByte-bit (bit 0); bitsfExtSt(bit 2) enfRichSt(bit 3) MOETEN worden genegeerd.ParseSSTmaskeert de Continue-vlagbyte nu met$01
Versie 2.57.0
Toegevoegd
- Lezer voegt alle Continue-stukken samen voor het opslaan van de payload. De nieuwe
ParseHFPicture-tak inParseWorksheetRecorddoorloopt elke invoer van de gecolleerdeDataList(de $086C-tekst in sleuf 0 plus een willekeurig aantal $003C-teksten die volgen) en slaat de samengevoegde bytes op als éénTBytesop het werkblad. Een blad kan meerdere invoeren dragen — tot zes in de Excel-UI (standaard / eerste / even pagina's x links / midden / rechts) — dus de opslag is een matrix in plaats van één veld - Schrijver stuurt HFPicture-records uit direct na PageSetup, en laat de bestaande Continue-splitter de BLIP-overloop afhandelen. Een nieuwe
StoreHFPictures-stap voegt zichzelf in de per-blad-opslagvolgorde onmiddellijk naStoreSetup, overeenkomend met de*HFPicture-positie in [MS-XLS] §2.1.7.20.2-werkblad-ABNF. Elke bewaarde tekst wordt verpakt in een nieuwe $086C-koptekst en geleid viaAppendData— de bestaandeAddContinue-helper neemt het over wanneer de BLIP de 8224-byte BIFF-limiet overschrijdt - Geen nieuw openbaar API-oppervlak. Golf G is een rondreis-behoud-functie; HFPicture-inhoud is ondoorzichtig voor applicatiecode. Werkmappen die nooit een HFPicture-record droegen produceren byte-identieke uitvoer als voorheen
Opgelost
- Grafiek achterstand golf G: koptekst / voettekstafbeeldingen overleven de rondreis (BIFF8 HFPicture). Wanneer Excel een werkblad opslaat met een koptekst- of voettekstachtergrondafbeelding (Invoegen → Koptekst & voettekst → Afbeelding, vervolgens de bedrijfslogostijl), zit de afbeelding in een
HFPicture($086C)-record dat een OfficeArt BLIP insluit. HotXLS had eerder geen case-tak voor dit record zodat de volledige payload bij laden werd verwijderd; het opnieuw opslaan van de werkmap liet de koptekst/voettekstafbeelding verloren gaan. De lezer bewaart nu de volledige recordtekst (elk Continue-stuk samengevoegd) per blad, en de schrijver stuurt het opnieuw uit op de spec-correcte positie zodat Excel het bestand heropent met de originele afbeeldingen intact
Versie 2.56.0
Toegevoegd
- Grafiek achterstand golf B: werkbladtabkleur rondreis (BIFF8 SheetExt). Bladtabkleuren ingesteld in Excel via rechtermuisklik Tabkleur zijn nu zowel leesbaar als schrijfbaar via het BIFF8-pad.
TXLSWorksheet.TabColoris een nieuwe openbare eigenschap die een HotXLSLongWord-kleur aanneemt (laag byte=R, mid=G, hoog=B, bovenste byte=0, zelfde conventie alsFont.Color/Interior.Color); de standaardwaarde0betekent "automatisch / geen tabkleur" en onderdrukt het record volledig
Gewijzigd
- Schrijver stuurt een per-blad
SheetExt($0862)-record uit. Één 48-byte-record wordt voor elk blad waarvanTabColorniet nul is toegevoegd aan de werkmap-globalsstroom vlak voor EOF. De lay-out volgt [MS-XLS] §2.4.282 SheetExt v1 + §2.5.108 FullColorExt: de 12-bytefrtRefHeaderU+ 4-bytecb+ 4-byte gereserveerdeflagsTab1+ 16-byte FullColorExt-blok (xclrType=2 RGB, nTintShade=0, xclrValue=tabkleur) + 4-byteiTabId(0-gebaseerde stroomvolgorde van het bijbehorende BoundSheet8) + 4-byte gereserveerdeflagsTab2. xlExcel5-uitvoer is ongewijzigd (geen SheetExt-record in BIFF5) - Rondreis-voorbeeld. Instellen van
Workbook.Sheets[1].TabColor := $00FF00(groen: B=0, G=$FF, R=$00) voor SaveAs naar .xls produceert een werkmap die in Excel opent met een groene tab; hetzelfde bestand opnieuw opslaan en heropenen brengt de eigenschap terug naar$00FF00
Opgelost
- Lezer herstelt de tabkleur bij openen. Een nieuwe
ParseSheetExt-tak in de case-tabel vanParseWorkbookRecordleestiTabIden het FullColorExt-blok en schrijft de opgeloste RGB-waarde terug naarSheets[iTabId + 1].TabColor.xclrType=2(RGB) slaat de onbewerkte waarde op;xclrType=1(geïndexeerde icv) lost op via het werkmap-palet (Colors[icv, 0]) zodat de applicatie een concrete RGB ziet ongeacht hoe Excel het heeft gecodeerd;xclrType=0(auto) enxclrType=3(thema) latenTabColorop de standaard0staan
Versie 2.55.1
Opgelost
- Hoofdtakbouw hersteld. Twee reeds bestaande identifier-fouten die HotXLS niet konden compileren op RAD Studio 12+ zijn nu gecorrigeerd. Beide kwamen binnen met eerdere bugfix-releases maar hadden geen compilatiepoort, zodat de regressies pas aan de oppervlakte kwamen wanneer de volgende bijdrager het pakket probeerde te herbouwen
- Gedeelde-formule-multi-kolom-schrijver verwijst niet langer naar een ontbrekend recordveld. De v2.50.0 SHRFMLA-draadformaat-correctie voegde
Data.AddByte(Group.LastCol)toe inWriteShrfmlamaar breiddeTXLSShrfmlaGroupniet uit met het nieuwe veld, zodat het pakket niet compileerde met "Undeclared identifier: LastCol". Het record bevat nuLastColnaast het bestaandeFirstCol - XLSX-celschrijver verwijst naar
XlsxFloatToStrvia een voorwaartse verklaring. De v2.51.0 locale-veiligheidscorrectie introduceerde een XlsxFloatToStr-aanroep in de celwaardetak (regel 2718) maar de helper wordt een paar honderd regels verder gedefinieerd (regel 2910). Zonder een voorwaartse verklaring meldde de Delphi-single-pass-compiler "Undeclared identifier: XlsxFloatToStr". Een voorwaartse verklaring is nu geplaatst aan het begin van het implementatieblok vanlxHandleX
Versie 2.55.0
Opgelost
- Per-reeks-waardencache, niet langer afgekapt tot Reeks[0]. [MS-XLS] §2.1.7.20.1 grafiekblad-ABNF staat
*(SIIndex *NUMBER)toe — éénSIIndex(1) + N×NUMBER-blok per reeks. De fase-1-bouwer stuurde slechts één cache-blok uit, gedimensioneerd doorSeries[0].ValArea, zodat een latere reeks met een langer waardenbereik zijn cacheslots stilzwijgend te kort had. De bouwer berekent nu (a) het maximale puntenaantal over alle reeksen voor hetDIMENSIONS-rijbereik, en (b) itereert over elke voorbereide reeks om een individueelSIIndex(1)-blok uit te sturen waarvan het NUMBER-aantal overeenkomt met dat van de reeks zijnAreaPointCount(ValArea) - Bijschriften voor Grafiektitel / CatAxisTitle / ValAxisTitle worden nu uitgestuurd. De fase-1-implementatie accepteerde drie Titelparameters op
AddChartSheet-overladingen en gooide ze stilzwijgend weg ("Junk := Length(...)"-tijdelijke aanduiding). Ze sturen nu een correct bijgevoegd-label-blok uit —TEXT($1025) +POS+BRAI-literal-tStr +SeriesText($100D) +OBJECTLINK($1027) + Einde — op de spec-correcte positie net vóór het Einde-record van deCHART-container conform [MS-XLS] §2.1.7.20.1 CHARTTITLES ABNF. Aanroepers dieTitle := 'Kwartaalomzet'doorgeven zien eindelijk "Kwartaalomzet" weergegeven boven het plotgebied in Excel - Grafiek achterstand golf A: multi-reeks cache-bedrading + grafiek- / astitelonderschriften. Twee langstaande beperkingen van de grafiek-bouwer zijn nu gecorrigeerd; beide komen uit de auditachterstand van v2.54.0
Versie 2.54.1
Toegevoegd
- Datumcellen behouden hun datumnotatie wanneer gecombineerd met een willekeurige enkelvoudige niet-numFmt-stijl. Een
TDateTime-cel metFontIndex/FillIndex/BorderIndex/AlignmentIndex/ProtectionIndexingesteld maar geen explicietNumberFormatIndexwerd eerder geleid via een enkelvoudige-dim cellXf waarvannumFmtId0 (Algemeen) was, zodat Excel de cel weergaf als een onbewerkt serieel getal (bijv.46038) in plaats van15-1-2026. De XLSX-stijlengine behandelt de impliciete datum nu als een virtuele dim: elke andere gestijlde dim promoveert de cel naar een samengestelde cellXf dienumFmtId=14draagt naast de echte dim - Bladnamen die de naamgevingsregels van Excel schenden worden automatisch gedesinfecteerd. Excel weigert bladnamen die langer zijn dan 31 tekens, de tekens
: \ / ? * [ ]bevatten, beginnen of eindigen met een enkel aanhalingsteken, gelijk zijn aan de gereserveerde naamHistory(hoofdletterongevoelig), of in botsing komen met een andere bladnaam (hoofdletterongevoelig). HotXLS gaf eerder de onbewerkte gebruikersinvoer rechtstreeks door, zodat aanroepen alsWorkbook.Sheets.Add('K1:K2 Omzet')een werkmap produceerden die mislukte te openen met het dialoogvenster "De ingevoerde naam is ongeldig".TXLSXSheets.Addnormaliseert de naam nu via de nieuweXlsxSanitizeSheetName-helper en voegt een' (2)'/' (3)'-achtervoegsel toe bij hoofdletterongevoelige botsingen
Opgelost
- [MS-XLSX] kruisaudit-vervolg. Twee gerichte correcties uit de "uitgesteld"-lijst van de v2.52.0-audit. Beide zijn zichtbaar voor gebruikers; geen van beide verbreekt bestaande aanroeppunten
Versie 2.54.0
Toegevoegd
Gewijzigd
- Eigenschap
Visiblevan opmerkingen keert de intentie niet meer om.TMSOShapeTextBox.GetVisible/SetVisiblegaf True terug wanneerfHiddenwas ingesteld en sloegfHiddenop wanneer aanroepers vroegen de opmerking zichtbaar te maken — de betekenis van het bit is de inverse ([MS-XLS] §2.4.179 grbit bit1: 1 = verborgen). Aanroepers dieComment.Visible := Truegebruikten kregen eerder verborgen opmerkingen; nu komt de eigenschap in beide richtingen overeen met zijn naam - Formulier
tFuncVar-token maskeert nu hetfCeFunc-bit uit de functienaamopzoeking. [MS-XLS] §2.5.198.63 splitst het afsluitende Word intab(15 laag)+fCeFunc(1 hoog); de lezer sloeg het volledige Word op inItem.IntValueals de hash-tabelsleutel, zodat functies uitgestuurd met de gebruikerspromptvlag hashten naar$8000 | iftaben een lege functienaam produceerden. Nu gemaskeerd met$7FFF - PtgArray V-klasse opcode nu correct uitgestuurd.
GetArrayData(aClass=0)viel eerder door naar de A-klasse opcode ($60); conform [MS-XLS] §2.5.198.32 is de opcode$20voor V-klasse,$40voor R-klasse,$60voor A-klasse.aClass=0verwijst nu correct naar$20
Verwijderd
- Meerdere FILEPASS-records worden nu genegeerd na de eerste. [MS-XLS] §2.4.117 staat maximaal één FILEPASS toe; een vijandige of misvormde Workbook met een tweede FILEPASS bevrijdde vroeger de actieve ontcijferaar en leidde een nieuwe sleutelstroom opnieuw af halverwege de stroom, waardoor het uit sync raakte met de al verbruikte gegevens. Volgende FILEPASS-records worden nu stilzwijgend verwijderd terwijl de versleuteling actief blijft
- Auditachterstand vastgelegd in
TechnicalNotes.md. Grotere specificatieleemten gevonden door de ronde 2-audit (XFExt-records niet uitgestuurd, PtgArray-constantengegevens niet geserialiseerd, Grafiektitel/CatAxisTitle/ValAxisTitle-parameters verwijderd, per-reeks-grafiek-cache, Draaipunttabel / QueryTable / DConn niet ondersteund) zijn gedocumenteerd als bekende leemten voor toekomstig functiewerk
Opgelost
- RC4-wachtwoordafleiding correct voor wachtwoorden van 16 tekens of langer. [MS-OFFCRYPTO] §2.3.6.1 slaat het berichtlengteveld van de MD5-enkelblokvergelijking op als een 64-bit little-endian bitaantal in bytes 56-63. De vorige lezer en schrijver schreven alleen de lage byte via
SetByte, waardoor de hoge byte stilzwijgend werd verwijderd voor wachtwoorden van 16+ tekens. Lange-wachtwoord-bestanden leiden nu dezelfde ValDigest af aan beide kanten - Comment Note-record nu spec-conform. Twee afzonderlijke correcties in
TMsoDrawing.StoreNotesconform [MS-XLS] §2.4.179 Note: (1)idObjwordt nu geschreven als een Word (2 bytes) in plaats van een LongWord (4 bytes); (2) het eerder ontbrekendestAuthorXLUnicodeString-veld wordt nu geserialiseerd (cch + vlaggen + UTF-16-tekst) vanuitFAuthorin plaats van te worden vervangen door een kaleWord(0)
Versie 2.53.0
Gewijzigd
- Macro-opdracht-formules met de gebruikerspromptvlag beschadigen de parser niet langer (§3.7.2 tFuncVar). De lezer haalde de byte op offset+1 van een
tFuncVar-token rechtstreeks op als het argumentaantal, maar bits 6-0 ($7F) dragen het argumentaantal en bit 7 ($80) is de "gebruikerspromptvlag voor macro-opdrachten". Elke tFuncVar met de promptvlag werd gelezen als 128 + N argumenten, waardoor de formulestapel explodeerde. De lezer maskeert nu met$7Fconform de spec - JustifyLastLine-uitlijningsvlag wordt nu correct bewaard (§5.115 XF). De uitlijningsbyte van de XF BIFF8-tekst (offset 6) pakt HorAlign + WrapText + VerAlign + JustifyLastLine. Vorige code schreef drie van die vier velden maar liet bit 7 (
$80, JustifyLastLine) weg. Cellen metJustifyLastLine = Trueworden opgeslagen met het bit gewist, zodat de gedistribueerde / uitgevulde laatste-regel-rendering terugkeert naar de standaard van Excel na een opslaan / heropenen - Rij 0 / rij 65535 worden niet langer ten onrechte gemarkeerd als omtrekgroepsgrenzen (§5.88 ROW). Het fCollapsed-bit (
$10) wordt ingesteld wanneer het omtrekniveau van een rij verschilt van zijn buren. Voor de grensrijen bestaat de "buur" niet, maarOutlineLevel[-1]enOutlineLevel[65536]gaven standaardniveau 1 terug, waardoor elke rij 0 / rij 65535 met een expliciet omtrekniveau > 1 ten onrechte registreerde als een samengevouwen omtrekgroepsgrens. De controle behandelt nu afwezige buren als overeenkomend met het eigen niveau van de rij
Opgelost
- OpenOffice excelfileformat.pdf kruisaudit ronde 2. Drie aanvullende BIFF8-draadformaat-correcties gevonden door de spec-sweep opnieuw uit te voeren na v2.50.0, ditmaal gericht op modules die de eerste doorgang slechts licht had aangeraakt: de formuletokendecoder, de XF-uitlijningsbyte en de ROW-omtrek-samenvouwgrenscontrole. Openbare API ongewijzigd
Versie 2.52.0
Toegevoegd
<sst count="...">rapporteert nu het totale aantal celverwijzingen, niet de unieke tekenreeksen. ECMA-376 §18.4.8 definieertcountals het totale verwijzingsaantal enuniqueCountals het aantal unieke tekenreeksen; de schrijver stuurde beide eerder uit alsFStrings.Count(altijd gelijk), waardoor OOXML-consumenten werden misleid over de verwijzingsdichtheid.TXLSXSharedStringshoudt nu een afzonderlijkeRefCountbij die bij elkeAdd/AddRich-aanroep wordt verhoogd ongeacht deduplicatie
Gewijzigd
- [MS-XLSX] kruisaudit — ronde 2. Drie vervolgverfijningen voor de XLSX-schrijver na de v2.51.0-audit. Elk item is onafhankelijk gebaseerd op een ECMA-376 of W3C XML-clausule; gecombineerd effect is betere OOXML-consument-interoperabiliteit
- Celtekenreeksen met voorloopende / afsluitende witruimte bewaren de rondreis correct. De inline-tekenreeks-terugval in
XlsxFormatCellValuestuurde<is><t>...</t></is>uit zonderxml:space="preserve"; XML 1.0 §3.3.3-normalisatie stripte de omringende spaties bij laden. De SST-, rijke-tekst-run- en opmerkingstekst-paden droegen het attribuut al; de inline-tekenreeks-terugval komt er nu bij overeen - Elk werkblad bevat nu een
<dimension>-hint. ECMA-376 §18.3.1.35 markeert het<dimension ref="..."/>-element als optioneel maar elk door Excel geschreven .xlsx bevat het; consumenten die het lezen (Apache POI / NPOI / OOXML SDK) stellen hun celbuffers vooraf in op basis van de hint. De schrijver berekent nu de begrenzende rechthoek van gevulde cellen en stuurt het element uit als het tweede kind van<worksheet>. Lege werkbladen worden samengevouwen naar<dimension ref="A1"/>
Versie 2.51.0
Gewijzigd
- Cellen met besturingstekens breken de werkmap niet langer. XML 1.0 §2.2 verbiedt ASCII-codes 0x00-0x08, 0x0B, 0x0C, 0x0E-0x1F (en U+FFFE / U+FFFF) overal in een XML-document — ze kunnen ook niet worden gecodeerd als numerieke tekenverwijzingen. Celwaarden die toevallig die bytes bevatten werden eerder letterlijk in
<t>...</t>geschreven, waardoor een .xlsx werd geproduceerd dat Excel weigert te openen. De schrijver stript de verboden codepunten nu stilzwijgend; geldige witruimte (TAB / LF / CR) wordt bewaard - Nieuwe regels in attribuutwaarden bewaren de rondreis correct. XML §3.3.3 normaliseert onbewerkte TAB / LF / CR in een attribuutwaarde naar één spatie. Multi-regel kopteksten / voetteksten, gedefinieerde-naam-opmerkingen, multi-regel gegevenvalidatie-aanwijzingen, hyperlinkteksttekenreeksen en andere attributen die een nieuwe regel droegen werden eerder samengevouwen naar één spatie bij laden.
XlsxEscapeAttrstuurt die tekens nu uit als	/
/
numerieke tekenverwijzingen <col>-invoeren uitgestuurd in oplopende kolomvolgorde. ECMA-376 18.3.1.4 / 18.3.1.13 verwacht elke<col min="..."/>-invoer in oplopendemin-volgorde. De vorige TStringList (Sorted=True) deduplicatie sorteerde de geheel-getal-kolomindices lexicaal ("10" vóór "2"), zodat een blad dat zowel kolom 2 als kolom 10 aanpaste<col min="10"/>voor<col min="2"/>produceerde. Kolomitems worden nu numeriek gesorteerd voor emissie
Opgelost
- [MS-XLSX] kruisaudit-doorgang. Vijf draadformaat- en locale-veiligheid-correcties in de XLSX-schrijver gevonden door te valideren tegen de Microsoft [MS-XLSX]-documentatie en de onderliggende XML 1.0 / OOXML-schema-vereisten. Openbare API ongewijzigd; bestaande applicaties compileren en slaan opnieuw op zonder wijziging
- Opgeslagen .xlsx-bestanden openen nu in elke Windows-regio. Paginamarges, kolombreedten, rijhoogten, lettergroottes, kleurschakeringen, themashakeringen, aangepaste-lettertype-rijke-tekstrun-groottes en de
<v>-verpakte numerieke waarde van elke cel werden geserialiseerd via Delphi's locale-bewusteFloatToStr. Op Windows geconfigureerd voor een regio waarvan het decimale scheidingsteken ',' is (het grootste deel van continentaal Europa en delen van Azië / Latijns-Amerika) stuurde de schrijver attribuutwaarden uit zoalswidth="8,43"entop="0,75", die het OOXML-schema afwijst. Elke dubbel-waardige OOXML-attribuut gebruikt nu een invariant '.'-scheidingsteken ongeacht de actieve regio
Versie 2.50.0
Gewijzigd
- FORMULA-optievlaggen identificeren leden van gedeelde formules (§5.50 FORMULA). Cellen in een gedeelde-formulegroep stellen nu het
fShrFmla-bit (0x0008) in de FORMULA-recordoptievlaggen in zodat strikte parsers hettExp-token herkennen als een terugverwijzing - Vette en onderstreepte lettertypen worden correct geïdentificeerd door strikte lezers (§5.45 FONT). Het FONT-optievlaggenswoord stelt nu bit 0 (vet) en bit 2 (onderstreept) in naast de speciale
bls/uls-velden. LibreOffice-importpaden en Office File Validation die de optievlaggen controleren in plaats van de standalone velden classificeren vette of onderstreepte lettertypen niet langer verkeerd als normaal - CFRULE-optievlaggen dragen door de spec opgelegde constante bits (§5.16 CFRULE). Wanneer ten minste één opmaakblok aanwezig is voegt het optievlaggen-DWORD nu bit 7 (
0x00000080, "Altijd 1") en bits 21-19 (0x00380000, "Altijd 111") toe. Regels voor voorwaardelijke opmaak overleven een opslaan / laden-rondreis op strikte CFRULE-parsers - Afbreken van gegevensvalidatie en voorwaardelijke opmaak verwijst niet langer voorbij de staart. Twee
Destroy-destructors (TDataValidator,TCondFormatter) liepen0..cntdoor op lijsten waarvan de geldige indices0..cnt-1zijn, waardoor bij werkmap-afbraak één element voorbij het einde werd benaderd. Langlopende applicaties die veel CF / DV-containers bouwen en weggooien krijgen niet meer af en toe een AV bij afsluiten
Opgelost
- OpenOffice excelfileformat.pdf kruisaudit-doorgang. Acht vervolgdraadformaat- en levensduurcorrecties gevonden door de BIFF8-schrijver / -lezer opnieuw te valideren tegen de OpenOffice-documentatie na de v2.49.0 [MS-XLS]-doorgang. Openbare API ongewijzigd
- Gedeelde formules omspannen nu het volledige kolombereik (§5.94 SHAREDFMLA). Het
SHRFMLA-recordlichaam schreefcolFirstin decolLast-byte, waardoor elke multi-kolom gedeelde formulegroep werd samengevouwen tot een enkelvoudige kolom. Vul-formules over twee of meer kolommen breiden nu uit naar de juiste cellen bij heropening. De leeskant-colLast-breedte is ook gecorrigeerd - Gedeelde formule Booleaans / Fout-resultaten bewaren de rondreis correct (§5.50 FORMULA). Dezelfde
FormulaValue-byte-lay-out-fout die in v2.49.0 voor zelfstandige formules was gecorrigeerd was nog steeds aanwezig in de gedeelde-formule-schrijver. GecachteTRUE/FALSE- en#REF!/#DEEL/0!/enz.-waarden worden nu zoals geschreven weergegeven - CHOOSE()-formules worden nu correct teruggelezen (§3.10.5 tAttrChoose). De
tAttr-parser sloeg eerder een vaste 4 bytes over voor elk subtype;tAttrChoose($04) is variabel-lengte (koptekst + per-keuze-sprongtabel + foutensprong), zodat de decoder in de sprongtabelinhoud liep en elk volgend token beschadigde. De decoder leest nuncen gaat6 + 2·ncbytes verder
Versie 2.49.0
Gewijzigd
- BIFF8
Formula-record Booleaans en Fout-resultaten bewaren de rondreis nu correct. [MS-XLS] §2.5.133FormulaValuepakt de typemarkering in byte[0] en de bool/fout-code in byte[1]; de schrijver stuurde eerder$0001/$0002als een Word en plaatste de waarde in byte[2], zodat gecachte Booleaanse formules als Onwaar werden teruggelezen en Fout-formules als #LEEG! in elk verwerken applicatie - Celkleuren ingesteld via
SetColorRGBworden nu correct weergegeven. De kleurenbeheerder schreef ColorType=1 (thema) voor RGB-waarden en ColorType=2 (RGB) voor thema-waarden, waardoor de twee codepaden werden verwisseld. Beide setters worden nu geleid via het bijpassende ColorType-vak - WriteAccess-record honoreert [MS-XLS] §2.4.349 cch <= 54. Het
userName.cch-veld draagt nu de werkelijke gebruikersnaamlengte (6 voor "HotXLS") met de resterende bytes gevuld door de spec-gedefinieerde "ongebruikte" trailer. Eerder droeg het veld cch=109, wat Office File Validation markeert als een harde formaatschending - BIFF8-werkmapstroom-openpad komt overeen met de spec-spelling. De eerste OLE
OpenStream-poging gebruikt 'Workbook' (hoofdletter W conform [MS-XLS] §2.1.7.20) in plaats van volledig kleine letters
Verwijderd
- VBA-modulelezer laat de laatste byte van elke stroom niet langer vallen. De lengte voor zoeken-tot-einde gebruikte
trunc(l) - 1in plaats vantrunc(l), waardoor de gecomprimeerde-bronstaart werd afgekapt
Opgelost
- Grafiekblad-draadformaat uitgelijnd met de spec. SIIndex-records worden uitgestuurd in volgorde numIndex=1 → 2 → 3 ([MS-XLS] §2.4.262; was 2 → 1 → 3, wat strikte parsers afwijzen), DEFAULTTEXT-aantal beperkt tot het spec-maximum van 2 ([MS-XLS] §2.1.7.20.1; was 4), Chart3DBarShape-tijdelijke aanduiding gebruikt de correcte id
$105F(was$1066) - ExtSST-snelzoekopdracht-index spec-conform voor grote werkmappen. Het
dsst-veld wordt nu berekend alsmax((cstUnique / 128) + 1, 8)conform [MS-XLS] §2.4.107 in plaats van de statische standaard 8; werkmappen met meer dan circa 900 unieke tekenreeksen bouwen nu een correctergISSTInf-emmatermatrix - Specificatieaudit-doorgang tegen [MS-XLS] v20250520. Zestien draadformaat- en gedragscorrecties in de BIFF8-schrijver, formuledecoder, versleutelingspad, grafiekbouwer, voorwaardelijke-formaat- en gegevensvalidatieruntime, SST/ExtSST-index, VBA-opslaglezer en OLE-stroomopenen-pad. Openbare API ongewijzigd; bestaande code compileert ongewijzigd
- XOR-verduistering en RC4-ontcijfering gecorrigeerd. De XOR-methode-1-ontcijferlus komt nu overeen met [MS-OFFCRYPTO] §2.3.7.3 (eerst XOR, dan rechtsroteren 5; XorArray-index zaaien vanuit de invoerstroomspositie, niet de na-verwerking-positie). RC4
Skiploopt nu elke 1024-byte-grens continu door in plaats van rechtstreeks naar het bestemmingsblok te springen - HLink-knopinfo-records laden nu correct. De
HLinkTooltip($0800)-tekstdecoder las FrtRefHeader-ankervelden op offsets 2/4/6/8 in plaats van 4/6/8/10, zodat de ankerbereiksvergelijking nooit overeenkwam en per-cel tooltips stilzwijgend werden verwijderd; tooltips worden nu gekoppeld aan hun hyperlinks - Runtime-correcties voor voorwaardelijke opmaak en gegevensvalidatie.
IsContainRowin zowelTCondRangealsTDVRangegaf alleen true terug wanneer het bereik degenereerde naar één rij (de vergelijking was omgekeerd); per-rij wissen van CF / DV-regels werkt nu op multi-rijbereiken. CF12-pictogramreeks-regels sturen ct=$06(IconSet conform [MS-XLS] §2.4.43) uit in plaats van ct=$05(Filter)
Versie 2.48.10
Gewijzigd
- De twee streams worden uitgestuurd via het Win32-pad
StgCreatePropSetStg+IPropertySetStorage.Create+IPropertyStorage.WriteMultiple— hetzelfde code dat Microsoft Office gebruikt, zodat Office File Validation de byte-indeling accepteert. De SummaryInformation-stroom wordt gemaakt met standaardAppName="HotXLS"en lege Auteur; PROEFVERSIE-builds overschrijven nog steeds de Auteur / AppName-waarden met de proefbanner vialxTrial.XlsTrialStampXlsSummaryna de standaardstempel, zodat proefbestanden herkenbaar blijven in het Excel-paneel Bestand > Info > Eigenschappen. De DocumentSummaryInformation-stroom wordt leeg gemaakt (Win32 stuurt nog steeds de eigenschap-set-koptekst + CODEPAGE-eigenschap uit — genoeg voor de strikte parser van Excel om de metadata als "aanwezig en welgevormd" te beschouwen) - Deze release sluit de reeks van acht versies grafiek-Fase-2-vervolgstappen (v2.47.0 — v2.48.10): van
tArea3D-reekskoppeling, via BRAI-id-heruitlijning, sdtX/cValx door Excel waargenomen waarden, SERIESTEXT-plaatsing, verwijdering van Workbook-stroom-opvulling, shell-records op bladniveau, en nu OLE-metadatastreams. Het resultaat is een grafiek-.xls dat opent in Excel 2003 en moderne Excel zonder "bestand heeft problemen"-waarschuwingen
Opgelost
- Door HotXLS opgeslagen .xls-bestanden bevatten nu de twee OLE-compound-bestand-eigenschaft-set-streams die Excel verwacht in elke werkmap:
\005SummaryInformationen\005DocumentSummaryInformation. Vóór v2.48.10 schreven alleen PROEFVERSIE-builds ze (als een bannerstempelingsmechanisme); releasebuilds produceerden .xls-bestanden waarvan de Workbook-stroom geldige BIFF8 was maar waarvan de OLE-container de standaard Office-metadatastreams miste. Excel 2003's strikte parser behandelt dit als de "Bestandsfout: gegevens zijn mogelijk verloren gegaan"-conditie - Deze correctie is universeel — elk door HotXLS opgeslagen .xls-bestand bevat nu de standaard OLE-metadata, niet alleen grafiekwerkmappen. Werkblad-only uitvoer uit eerdere releases ontsnapte toevallig aan het symptoom omdat Excel toegeeflijker is voor werkbladwerkmappen zonder metadata dan voor grafiekbladwerkmappen, maar technisch ontbraken ook daar de streams. De nieuwe unit
Lib/lxXlsSummary.pasbevat de twee hulpprocedures;lxHandle.pasroept ze onvoorwaardelijk aan binnenTXLSWorkbook.SaveWorkbooknadatStoreWorkbookde Workbook-stream heeft gevuld en vóórFDocStorage.Commit
Versie 2.48.9
Gewijzigd
- BIFF8-grafiekbladen dragen nu de volledige set shell-records op bladniveau die Excel 2003+ vereist. De grafiek-substream van v2.48.8's chart_phase2_demo.xls renderde de kolomgrafiek correct maar Excel 2003 toonde nog steeds een "Bestandsfout: gegevens zijn mogelijk verloren gegaan"-dialoog omdat de grafiek-substream dezelfde shell-records op bladniveau miste die een werkblad-substream draagt. Echte Excel-bestanden omsluiten de grafiekrecords in deze shell:
- Vóór de grafiekrecords (tussen BOF en UNITS):
HEADER($0014, leeg),FOOTER($0015, leeg),HCENTER($0083, waarde 0),VCENTER($0084, waarde 0),SETUP($00A1, 34-byte paginainstelling),PRINTSIZE($0033, waarde 3) - Na de grafiekrecords (na het buitenste CHART END, vóór EOF):
DIMENSIONS($0200, 14 bytes) die het gecachte gegevensbereik declareren, drieSERIESINDEX($1065)-markeringen voor categorieën / waarden / bellengrootte-cacheslots, eenNUMBER($0203, 14 bytes) per gecachet waardepunt, enWINDOW2($023E, 10-byte grafiekblad-variant) aan het einde
- Vóór de grafiekrecords (tussen BOF en UNITS):
- End-to-end rooktest: open de geregenereerde
Demo/Delphi/XlsCreateChart/chart_phase2_demo.xlsin Excel 2003 — de "Bestandsfout: gegevens zijn mogelijk verloren gegaan"-prompt verschijnt niet meer, en de kolomgrafiek wordt identiek weergegeven als voorheen
Opgelost
- De waardencache stuurt momenteel nulplaatshouders uit (
0.0voor elk gegevenspunt), overeenkomend met wat Excel zelf schrijft bij het opnieuw opslaan van een grafiek waarvan de broncache niet vooraf was gevuld. De grafiek plot nog steeds de echte gegevens omdat de BRAIPtgArea3d-verwijzingen worden omgezet naar de bronwerkbladcellen bij tekentijd — de cache is wat Excel laat de grafiek-substream verwerken zonder waarschuwingen
Versie 2.48.8
Verwijderd
StoreExtraSpacede methode overleeft als privé dode code inlxHandle.pasvoor het geval een toekomstig codepad legitiem sector-afgeronde streams nodig heeft; de aanroepplaats inStoreOleFileis verwijderd. De lengte van de Workbook-stroom is nu exact gelijk aan de bytelengte van alle geldige records (grafiekdemo: 3164 bytes; Excel-van-scratch-referentie: 4419 bytes — beide niet sector-uitgelijnd). Lezer-codepaden zijn niet beïnvloed
Opgelost
- BIFF8 (.xls)-schrijver vult de Workbook-stroom niet langer op met afsluitende nulbytes.
TXLSWorkbook.StoreOleFileriep vroegerStoreExtraSpace(Book)aan na de records van het laatste blad, waardoor de stroomlengte werd opgevuld tot de volgende 512-byte (OLE-sector) grens. Excel's strikte parser behandelt die afsluitende nulbytes als een valse stroom van0x0000-id-records en toont een "dit bestand heeft problemen" Beveiligde Weergave-prompt. Het verwijderen van de aanroep laat de opvulling vallen uit de Workbook-stroominhoud; OLE-sectoropvulling vindt nog steeds plaats, maar in de CFB-containerlaag eronder waar Excel het zelf plaatst - Symptoomgeschiedenis: elk door HotXLS opgeslagen .xls-bestand waarvan de totale geldige recordlengte toevallig niet al op een 512-bytegrens eindigde, droeg de trailing-zero stream. De bug bestond al sinds de bootstrap-commit van de repository, maar kwam zelden aan het licht — de meeste werkmappen hebben genoeg records dat de opvulling klein bleef (≤ 4 nulbytes die Excel tolereerde). Grafiekbladwerkmappen eindigen vaker ver van de sectorgrens, waardoor Excel de padding als bogus BIFF-records las
Versie 2.48.7
Toegevoegd
- Nieuw inspectietool op byte-niveau
dev-notes/biffview-refs/dump_chart_substream.pydumpt de grafiek-substream van elk BIFF8-.xls met per-record decodering (SERIES / BRAI / SERIESTEXT / AXIS / CATSERRANGE / LEGEND / OBJECTLINK / POS / TEXT). Gebruikt tijdens deze release om HotXLS-uitvoer byte-voor-byte te vergelijken met de door Excel opgeslagen referentiesamples; beschikbaar voor toekomstige grafiek-spec-vervolgstappen
Gewijzigd
- Ook uitgelijnd om overeen te komen met het door Excel opgeslagen kolomgrafiek-draadformaat:
SERIES.sdtXis nu0x0003(de door Excel waargenomen waarde voor tekstcategorieën, niet de gedocumenteerde waarde0x0001in [MS-XLS] §2.4.252), encValxdraagt het werkelijke categorieaantal in plaats van0. De "cValx MOET = 0wanneersdtX∈ {1, 3}"-spec-regel wordt tegengesproken door elk onderzocht door Excel opgeslagen voorbeeld - v2.41.0 — v2.48.6 opgeslagen grafiekbestanden dragen allemaal de omgekeerde BRAI-draadindeling. Ze openen in Excel zonder fout maar tonen de legenda / X-as symptomen hierboven. Sla opnieuw op via v2.48.7+ om te migreren; geen API-wijziging
Opgelost
- BIFF8-grafiekreeksen worden nu eindelijk correct weergegeven in Excel. De correctie is het heruitlijnen van BRAI-id-toewijzingen met [MS-XLS] §2.4.51 — het oorspronkelijke implementatieplan documenteerde ze omgekeerd, waardoor de fout zich door elke grafiekrelease van v2.41.0 tot v2.48.6 verspreidde. De juiste id-semantiek zijn:
id = 0— reeks naam / legenda-etiket (plan zei: categorieën)id = 1— waarden (correct)id = 2— categorieën (plan zei: naam)id = 3— bellengrootten (plan zei: foutbalken)
- Het
SERIESTEXT($100D) literal-naamdrager keert terug, maar op de juiste positie: onmiddellijk na deid = 0BRAI, nog steeds in het SERIES BEGIN/END-blok. Dit is wat echte Excel-bestanden doen — het v2.48.5-uitstuurpunt (na het volledige BRAI-cluster, vóórDataFormat) was verkeerd en brak de grafiekverwer king; de correcte positie is direct naast de reeksnaam-BRAI
Versie 2.48.6
Gewijzigd
- Bekende onopgeloste kwestie: met het draadformaat van v2.48.6 rendert Excel nog steeds de X-as-etiketten van de kolomgrafiek als nullen en valt terug op het samenvoegen van categoriecel-tekst voor de legenda (in plaats van de BRAI id=2 PTG tStr literal
'K1-omzet'te gebruiken). Dit is een echte draadformaat-leemte die een door Excel opgeslagen kolomgrafiekreferentie vereist om mee te vergelijken — bijgehouden als vervolg. Het 4-staaf plotgebied zelf wordt correct weergegeven (hoogten 100/150/200/175 komen overeen met Waarden)
Verwijderd
- Nieuwe XlsCreateChart Delphi-demo onder
Demo/Delphi/XlsCreateChart/maakt een tweeblad-werkmap: een "Data"-werkblad met vier (Regio, Omzet)-rijen en een "Grafiek1"-kolomgrafiekblad waarvan de reeksData!$A$2:$A$5/Data!$B$2:$B$5koppelt als Categorieën / Waarden. De demo is de permanente opvolger van de ad-hocchart_phase2_demo.xlsdie v2.47.0 — v2.48.5 in de projectroot plaatste voor BiffView-testen; het rootbestand is verwijderd en de nieuwe demo schrijft zijn uitvoer naast zijn eigen .exe
Opgelost
- BIFF8-grafiekblad-substream trekt de wijzigingen van v2.48.5 in. Excel-testen op de geregenereerde v2.48.5-demo renderde de grafiek helemaal niet — erger dan de v2.47.0-basislijn (waar de grafiek tekende maar met verkeerde X-as-etiketten). De twee v2.48.5-wijzigingen waren de oorzaak:
SERIES.sdtX = 4wordt feitelijk niet geaccepteerd door Excel ook al stelt Apache POICATEGORY_DATA_TYPE_TEXT = 4beschikbaar. [MS-XLS] §2.4.252 vereist strikt datsdtX0x0001of0x0003is- Het toegevoegde
SERIESTEXT($100D)-record in het SERIES BEGIN/END-blok is een structurele schending —SERIESTEXTbehoort in TEXT-blokken (grafiek-titel / astitel / gegevenslabel-contexten), niet in het SERIES-blok. Het insluiten ervan daar verward de grafiekverwer king van Excel waardoor de volledige substream werd afgewezen
- v2.48.6 herstelt het draadformaat van v2.47.0 EN voegt één spec-conformantiecorrectie toe:
SERIES.cValxis nu0wanneersdtX = 1([MS-XLS] §2.4.252 spec MOET-regel). Pre-v2.48.6 schreefcValx = aantal(4 in de demo) wat de regel schond.cValydraagt nog steeds het werkelijke waardenantal (sdtY=1 heeft geen nulregel)
Versie 2.48.5
Gewijzigd
- Het
sdtX-veld van deSERIES-record is nu4(tekstcategorieën), niet1. [MS-XLS] §2.4.252 documenteert alleen1(datums) en3(BIFF7-reeks) maar echte door Excel opgeslagen kolom- / staaf- / lijngrafieken schrijven4voor tekstas-categorieën (overeenkomend met deCATEGORY_DATA_TYPE_TEXT-constante van Apache POI). MetsdtX=1probeerde Excel 'Noord' / 'Zuid'-cellen om te zetten naar getallen, zodat de X-as vier nullen toonde;sdtX=4laat de etiketten letterlijk door. Het pre-v2.48.5 draadformaat schond ook de spec-regel datcValxnul moet zijn wanneersdtX=1
Opgelost
- BIFF8-grafiekreeks-records worden nu correct weergegeven in Excel. v2.47.0 voegde
tArea3D-koppeling voor Categorieën / Waarden-bereiken toe, maar Excel tekende nog steeds de verkeerde X-as-etiketten (elke categorie werd0) en gebruikte de samengevoegde categorietekst ("Noord Zuid Oost West") als zowel legenda-etiket als auto-titel in plaats van de door de gebruiker opgegeven reeksnaam. Twee correcties herstellen de beoogde weergave: - Een
SERIESTEXT($100D)-record wordt nu uitgestuurd in het SERIES BEGIN/END-blok (na het BRAI-cluster, vóórDataFormat) wanneer een literale reeksnaam wordt opgegeven. Het fase-2-eerste-helft-mechanisme (BRAI id=2 + PTGtStr) wordt bewaard voor volledigheid, maar Excel toont het legenda-etiket en de auto-titel feitelijk vanuitSERIESTEXT; met alleen de BRAI-variant aanwezig viel Excel terug op het samenvoegen van categoriecellen - Migratie: v2.42.0 — v2.47.0 grafiekblad-uitvoer opent nog steeds in Excel zonder fout maar toonde de bovengenoemde symptomen. Sla opnieuw op via v2.48.5+ om het gecorrigeerde draadformaat te krijgen; geen API-wijziging vereist
Versie 2.48.4
Gewijzigd
- BIFF8 CFEX ($087B)-emissie is buiten gebruik gesteld. HotXLS schrijft het gekoppelde CFEX niet langer na elk CF12 ($087A)-record — alle Data Bar / Kleurenschaal / Pictogramreeks-configuratie reist nu inline in de CF12-type-specifieke staart (v2.48.1 — v2.48.3). Door HotXLS opgeslagen .xls-bestanden worden kleiner en komen exact overeen met de uitvoer van Excel zelf (door Excel opgeslagen samples bevatten nul CFEX-records). Apache POI / NPOI negeerden CFEX al, dus dit is een pure vereenvoudiging zonder leesbaarheidsverlies
- BIFF8 CF12-leespad verbruikt nu de type-staart rechtstreeks uit CF12 in plaats van terug te vallen op CFEX.
ParseCfExwordt een no-op; de lxRead-dispatch-invoer voor $087B blijft zodat door HotXLS opgeslagen v2.34..v2.47-bestanden niet crashen, maar hun CFEX-inhoud wordt genegeerd (die bestanden hebben ook een pre-v2.48.0 CF12-koptekst-indeling en zouden niet correct rondreizen — sla opnieuw op via Excel of HotXLS v2.48.x om te migreren) - Dit voltooit de 5-PATCH Gap #6-draadformaat-herschrijving (v2.48.0 koptekst + v2.48.1 data_bar + v2.48.2 kleurverloop + v2.48.3 meerstandig + v2.48.4 CFEX-buitengebruikstelling). Door HotXLS opgeslagen Excel 2007+-voorwaardelijke-opmaak-records komen nu byte-voor-byte overeen met de eigen draadindeling van Excel
Versie 2.48.3
Gewijzigd
- BIFF8 CF12 ($087A) Pictogramreeks-regels sturen nu het NPOI-compatibele
multistate-subrecord inline uit zodat Apache POI / NPOI de pictogramfamilieidentiteit, per-stop-drempelwaarden en omgekeerd / alleen-pictogram-tonen-vlaggen direct uit CF12 kunnen lezen zonder het verouderde CFEX-record te raadplegen. Indeling komt overeen met NPOIIconMultiStateFormatting.Serialize():gereserveerd(2) + gereserveerd(1) + num(1) + iconSet.id(1) + opties(1)+ per-stopIconMultiStateThreshold(cfvo + gelijkheidsbyte + 4 gereserveerd) - HotXLS
TXLSIconSetType-waarden0..16komen 1:1 overeen met deIconSet-id-enumeratie van NPOI (3Pijlen / 3VerkeerslampType1 / 4RoodNaarZwart / 5Kwartieren enz.), zodat bestaande gebruikerscode met pictogramreeksconstanten ongewijzigd blijft rondreizen.ShowOnlystelt options-bit 0 (alleenPictogram) in,Reversestelt bit 2 in - Standaard per-stop-drempelwaarden (HotXLS
cfvPercentmet gelijkmatig verdeelde waarden: 3-pictogram=0/33/67, 4-pictogram=0/25/50/75, 5-pictogram=0/20/40/60/80) worden uitgestuurd als NPOI RangeTypePERCENT(4)+ waarde Double + gelijkheidsbyte (altijdEQUALS_INCLUDE=1voor nu). Dit voltooit de type-staart-fase van de Gap #6 CF12-herschrijving; CFEX-emissie-buitengebruikstelling volgt in v2.48.4
Versie 2.48.2
Gewijzigd
- BIFF8 CF12 ($087A) 2-kleur en 3-kleur Kleurenschaal-regels sturen nu het NPOI-compatibele
color_gradient-subrecord inline uit zodat Apache POI / NPOI de per-stop-drempelwaarde + kleur + interpolatieposities direct uit CF12 kunnen lezen. Indeling komt overeen met NPOIColorGradientFormatting.Serialize():gereserveerd(2) + gereserveerd(1) + numI(1) + numG(1) + opties(1)+ per-stopColorGradientThreshold(cfvo + positie Double) + per-stopstap + ExtendedColor - Stops gebruiken de formule
stap = 1 / (N-1)van NPOI zodat een 3-stop Kleurenschaal posities 0,0 / 0,5 / 1,0 krijgt en een 2-stop Kleurenschaal 0,0 / 1,0 krijgt. Per-stop kleuren (RGB of thema viaSetThemeColor) stromen via hetzelfde ExtendedColor-blok dat door Data Bars wordt gebruikt in v2.48.1 - Standaard soorten voor 3-stop KleurSchaal (cfvMinOfRange / cfvPercentile=50 / cfvMaxOfRange) worden verwijzen naar NPOI RangeType
MIN(2) / PERCENTILE(5) / MAX(3); de middelste stopwaarde (50,0 als Double) en per-stop positie zijn byte-geverifieerd
Versie 2.48.1
Gewijzigd
- BIFF8 CF12 ($087A) Data Bar-regels sturen nu het NPOI-compatibele
data_bar-subrecord inline uit (28 bytes toegevoegd natemplate_params) zodat Apache POI / NPOI de balkkleur, min/max-drempelwaarden en percentagelengtegrenzen kunnen decoderen zonder het verouderde CFEX-record te raadplegen (dat POI volledig negeert). Indeling komt overeen met NPOIDataBarFormatting.Serialize():gereserveerd1(2)+gereserveerd2(1)+opties(1)+percentageMin(1)+percentageMax(1)+ ExtendedColor(16) + DrempelMin/Max - HotXLS-balkkleur (BGR
LongWord) wordt geschreven in het ExtendedColor-blok mettype=RGB; themakleur Data Bars (ingesteld viaSetThemeColor) sturentype=THEMED+ themaindex + tint uit.MinLength/MaxLengthstandaard 10% / 90% (configureerbaar via het spec-object), overeenkomend met het standaard Data Bar-uiterlijk van Excel - Kleurenschaal en Pictogramreeks type-staarten (v2.48.2 — v2.48.3) en CFEX-buitengebruikstelling (v2.48.4) zijn nog in behandeling; deze release voltooit alleen het Data Bar-been van de Gap #6 CF12-herschrijving. Zie de v2.48.0-invoer voor de koptekst-herschrijving waarop deze PATCH voortbouwt
Versie 2.48.0
Opgelost
- BIFF8 CF12 ($087A)-recordkoptekst-indeling gecorrigeerd tegen NPOI
CFRule12Record.serialize()en door Excel opgeslagen referentiebestanden. De vorige indeling plaatsteipriority/iTemplate/grbit/parmsonmiddellijk nacce2en behandeldecbdxfals een 2-byte lengteveld; Excel schrijft feitelijkext_formatting_length(4)+ een optioneleSerializeFormattingBlock-koptekst vóór de formuletokens, gevolgd doorformula_scale,ext_opts,priority,template_typeen een lengte-geprefikttemplate_params-blok - Door HotXLS uitgestuurde CF12-records komen nu overeen met de byte-indeling van
poi_ConditionalFormattingSamples.xls-records 152..215 in de koptekstsectie (data_bar / color_gradient / multistate type-staarten komen in v2.48.1 — v2.48.3; het gekoppelde CFEX stuurt nog uit in deze release en wordt buiten gebruik gesteld in v2.48.4). Zie de v2.47.1-invoer voor de CONDFMT12-zustercorrectie die deze herschrijving motiveerde - Het valse 2-byte
nID-veld dat HotXLS aan het einde van elke CF12-payload toevoegde (een dergelijk veld bestaat niet in de spec) is verwijderd — regelidentiteit wordt gedragen door het bovenliggende CONDFMT12-record. Bestaande v2.34.0 — v2.47.1 .xls-bestanden dienen opnieuw te worden opgeslagen via v2.48.0 om hun CF12-records te herschrijven
Versie 2.47.1
Opgelost
- BIFF8 CONDFMT12 ($0879)-record-draadformaat gecorrigeerd om overeen te komen met door Excel opgeslagen bestanden. De vorige implementatie volgde een vroege conceptindeling die het 8-byte bijbehorende bereik als "gereserveerd" in de FtrHeader plaatste en een niet-bestaand 4-byte Gereserveerd-veld vóór
numCFinvoegde; door Excel opgeslagen .xls-bestanden vullen de 8 bytes in de FtrHeader daadwerkelijk met het bijbehorende celbereik van de regel en hebben geen Gereserveerd-veld, zodat door HotXLS uitgestuurde bestanden met 4 bytes werden verschoven plus een gereset bereikslot hadden. Referentiedump vanpoi_ConditionalFormattingSamples.xls(Apache POI-testfixture) record 152 komt nu byte-voor-byte overeen met HotXLS-uitvoer - Concrete correctie:
StoreCondFmt12Headerschrijft nu FtrHeader alsrt(2) + grbitFrt(2) + bijbehorendBereik(8), dan het lichaam alsnumCF(2) + needRecalcAndId(2, bits verpakt) + omsluitendBereik(8) + cref(2) + sqref-matrix. Totale vaste bytes dalen van 30 naar 26 (Gereserveerd 4 verwijderd).ParseCondFmt12symmetrisch bijgewerkt om op de gecorrigeerde offsets te lezen - Bestaande door HotXLS gegenereerde .xls-bestanden geschreven door v2.34.0 — v2.47.0 dienen opnieuw te worden opgeslagen via v2.47.1 om hun CONDFMT12-records te repareren. Bestanden rondgereisd via Excel tussen versie-bumps zijn nooit beïnvloed omdat Excel de records herschreef naar zijn eigen correcte indeling bij opslaan
Versie 2.47.0
Gewijzigd
- BIFF8-grafiekblad-aanmaak koppelt nu echte gegevensbereiken aan reeksen. De
Categories- enValues-A1-bereiktekenreeksen opgegeven aan de 6-argumentAddChartSheet-overlading (bijv.'Data!$A$2:$A$5') worden gecompileerd naartArea3DPTG-tokens geschreven in de reeks-BRAI id=0(categorieën) enBRAI id=1(waarden)-records. In Excel geopende .xls-bestanden renderen nu werkelijke gegevenspunten in het plotgebied in plaats van de lege tijdelijke aanduiding-grafiek die v2.42.0 produceerde - Bladnaamomzetting + EXTERNSHEET-registratie is automatisch: de parser zoekt het benoemde blad op in de werkmap, registreert een XTI-invoer als er nog geen aanwezig is en schrijft de overeenkomstige 0-gebaseerde
ixtiin de PtgArea3d-tekst. Opnieuw opgeslagen bestanden houden deixticonsistent met de definitieve EXTERNSHEET-volgorde van de werkmap omdat de grafiekrecordstroom opnieuw wordt geserialiseerd via de formulecompiler bij opslaan - Geaccepteerde bereikvormen:
Blad1!$A$2:$A$5(absoluut),Blad1!A2:A5(relatieve markeringen getolereerd — grafiekreeksen worden altijd opgeslagen als absoluut),'Mijn Blad'!$A$1:$B$5(enkelvoudig geciteerde bladnamen met spaties) en enkelvoudige-cel-verwijzingen zoalsBlad1!$A$1(degenereert naar een 1x1 PtgArea3d). Reeksgegevenspuntaantallen (cValx/cValy) worden nu automatisch afgeleid uit de vlakafmetingen - Dit voltooit Routekaart #10 Fase 2 (kolomgrafiek van begin tot einde). Reeksetiketten (Fase 2 eerste helft, v2.42.0) plus reeksbereikskoppeling (deze release) betekent dat een kolomgrafiek gemaakt via
AddChartSheetnu juiste legenda-invoeren plus echte getekende gegevens kan weergeven zonder naverwerking in Excel - Niet-ondersteunde referentievormen vallen stilzwijgend terug op de v2.41.0-stijl
cce=0tijdelijke aanduiding BRAI zodat de grafiek nog steeds opent in Excel: kruis-werkmap-verwijzingen, benoemde bereiken, verwijzingen zonder!-bladprefiks en verwijzingen die naar het grafiekblad zelf wijzen. Deze uitgestelde gevallen worden bijgehouden voor vervolgfasen
Versie 2.46.0
Gewijzigd
- De opzoeking gebruikt het ingebouwde Excel 2003-standaardpalet ingebakken in HotXLS — icv 0..7 zijn de acht systeemkleuren (zwart / wit / rood / groen / blauw / geel / magenta / cyaan), icv 8..15 spiegelen de systeemkleuren, en icv 16..63 zijn de standaard aanpasbare standaardwaarden (donkere varianten, lichte tinten, bruinen, oranjes, pruimen, enz.). Buiten-bereik icv-waarden vallen terug op zwart ($000000)
Opgelost
- De Differentieel XF (DXF)-decoder aan de BIFF8-kant lost nu xclrType=1 (geïndexeerd palet) kleuren op vanuit het standaard Excel 2003 64-kleurenpalet. Eerder vielen geïndexeerde kleuren door naar het RGB-pad en werd de icv-byte verkeerd geïnterpreteerd als deel van een RGB-waarde, waardoor onzinnige kleuren werden geproduceerd (typisch donkergrijs) bij lezen; door Excel opgeslagen .xls-bestanden die geïndexeerde kleuren gebruikten (in plaats van RGB of thema) voor hun CF12 DXF-blokken bewaren nu de rondreis met zinvolle visuele kleuren
- BIFF8 PALETTE-record (rt=$0092) werkmap-aanpassing wordt niet geraadpleegd — een werkmap die zijn gebruiker-wijzigbare paletvakjes (8..63) aanpast, zal zijn CF12 DXF geïndexeerde kleuren laten oplossen tegen de standaardwaarden in plaats van de aangepaste. Voor de meeste Excel-bestanden die het standaardpalet gebruiken is dit correct; voor bestanden met aangepaste paletten kan de visuele kleur enigszins verschuiven totdat de volledige PALETTE-bedrading in een toekomstige release arriveert
- xclrType=0 (auto) en xclrType=2 (RGB) paden zijn ongewijzigd — auto wordt nog steeds RGB 0 (zwart), RGB decodeert de xclrValue 4-byte BGR LongWord nog steeds direct. Alleen het eerder defecte xclrType=1-pad is gecorrigeerd
Versie 2.45.0
Toegevoegd
- Nieuwe eigenschap
PriorityopTCondFormatRule(BIFF8-kant) enTXLSXConditionalFormat(XLSX-kant). Standaard nul, wat het bestaande automatisch-per-index-gedrag bij opslaan behoudt; stel in op een positieve waarde om de prioriteit vast te zetten en de automatische toewijzing te overschrijven
Gewijzigd
- Regels voor voorwaardelijke opmaak bewaren nu de prioriteitsattribuut via rondreis op zowel het XLSX
<cfRule priority="N"/>als het BIFF8 CF12ipriority-veld. Eerder werd elke regel een opeenvolgende prioriteit toegewezen op basis van zijn index in de collectie bij opslaan, en de prioriteit op door Excel opgeslagen bestanden werd genegeerd bij lezen; nu overleven door gebruikers ingestelde prioriteiten een laad-bewerk-sla-cyclus op beide backends - Prioriteit laat het instellen van het lagen van meerdere regels controleren — wanneer meerdere regels hetzelfde bereik bedekken (bijv. een Data Bar + een Celwaardemark + een Pictogramreeks), past Excel ze toe in volgorde van prioriteit (lager getal eerst). Door de prioriteit te bewaren behoudt HotXLS-bewerkte werkmappen de bedoelde weergavevolgorde van de gebruiker
- Standaardgedrag ongewijzigd voor aanroepers die
Priorityniet aanraken: de XLSX-schrijver blijftpriority="1","2","3"... in collectievolgorde uitsturen, en de BIFF8 CF12-schrijver blijftipriority=1uitsturen. Leespaden vullenPriorityvanuit de draadwaarde wanneer aanwezig
Versie 2.44.0
Toegevoegd
- Nieuwe methoden op
TXLSIconSetSpecvoor het opt-in van een stop in overschrijvingsmodus:SetIconOverride(stopIndex, OverrideSet, IconId)enClearIconOverride(stopIndex). Alleen-lezen eigenschappenHasIconOverride[i],IconOverrideSet[i],IconOverrideId[i]stellen de per-stop-overschrijvingsstatus beschikbaar voor inspectie en rondreis-behoud - De XLSX-schrijver stuurt
<cfIcon>-kinderen alleen uit voor stops dieSetIconOverridehebben aangeroepen; stops zonder overschrijving blijven op de familiestijl-standaard (geen<cfIcon>uitgestuurd). De lezer verwerkt inkomende<cfIcon>-elementen positioneel in een iconSet-lichaam en past ze toe op de overeenkomstige stop - Pictogramreeks-voorwaardelijke-opmaak-regels ondersteunen nu per-stop pictogramoverschrijvingen aan de XLSX-kant. Elk van de 3 / 4 / 5 stops in een pictogramreeks kan afwijken van de familiestijl-standaard en een willekeurig pictogram weergeven uit elk van de 17 ingebouwde Excel 2007-pictogramfamilies, geïdentificeerd door pictogramreeksnaam + pictogram-id
Gewijzigd
- Bekende beperkingen: BIFF8 (.xls) CFEX-draadformaat heeft geen slot voor per-stop-pictogramoverschrijvingen, dus het schrijven van een pictogramreeks-regel met overschrijvingen naar .xls rendert de familiestijl-standaard voor alle stops. Validatie van pictogramfamilies op werkmapniveau wordt niet afgedwongen
Versie 2.43.0
Toegevoegd
- Nieuwe methoden op
TXLSDataBarSpecenTXLSCfValue(gebruikt door Kleurenschaal-stops) voor het opt-in van een slot in thema-modus:SetThemeColor(themeId, tint)enClearThemeColor. Alleen-lezen eigenschappenIsThemeColor,ThemeColorId,ThemeColorTintstellen de actieve modus beschikbaar. Tint is een enkele in het bereik [-1,0, +1,0] — negatieve waarden maken de themakleur donkerder, positieve waarden lichter - Standaardgedrag ongewijzigd: regels gemaakt met de bestaande RGB-enige ingangspunten sturen
<color rgb="..."/>exact zoals voorheen uit. Thema-modus is puur opt-in via de nieuweSetThemeColor-setter op het geretourneerde spec-object
Gewijzigd
- XLSX (.xlsx)-regels voor voorwaardelijke opmaak bewaren nu themakleurverwijzingen in het
<color>-element van Data Bar- en Kleurenschaal-regels via rondreis. Eerder stuurde de schrijver alleen<color rgb="AARRGGBB"/>uit en negeerde de lezertheme/tint-attributen; nu bewaren beide kanten de themapalet-index plus de optionele tint, zodat stijlen zoals "accent-2 verlicht 50%" een Excel-openen / HotXLS-bewerken / Excel-heropenen-cyclus overleven zonder te worden afgevlakt naar een bevroren RGB - De XLSX-schrijver stuurt
<color theme="N"/>uit wanneerTintexact 0,0 is, of<color theme="N" tint="0.5"/>wanneer niet-nul, overeenkomend met de "kortste vorm"-uitvoer van Excel zelf
Opgelost
- Bekende beperkingen: BIFF8 (.xls) CFEX draagt nog steeds alleen de RGB-kleur (één 4-byte BGR LongWord per stop / per databalk) — themakleur in CFEX zou een parallel draadformaat-extensie vereisen. Werkmap-themapalettomzetting (theme1.xml verwerking) valt nog buiten bereik; HotXLS bewaart de thema-index letterlijk maar lost hem niet op naar een concrete RGB
Versie 2.42.0
Toegevoegd
- BIFF8-grafiekblad-aanmaak-API krijgt een vijfde
AddChartSheet-overlading die een matrix vanTXLSChartSeriesInfo-records aanneemt (Name,Categories,Values). Elke niet-legeNamewordt in de grafiek-substream geschreven als een literaal reeksetiket via eentStrPTG-token op de reeksnaam-BRAI(id=2). Excel gebruikt dit etiket in de legenda en in de reeksselector, zodat een multi-reeks-grafiek nu wordt geleverd met juiste reeksbijschriften in plaats van de standaard "Reeks1 / Reeks2"-tijdelijke aanduidingen
Gewijzigd
TXLSChartSeriesInfowordt opnieuw geëxporteerd vanuitlxHandlenaastTXLSChartType, zodat aanroepers de matrix kunnen bouwen zonderlxChartBuilderrechtstreeks te importeren- Dit is de eerste helft van Routekaart #10 Fase 2 (kolomgrafiek van begin tot einde). Het reeksnaam-pad is aangesloten; categorie- en waardengegevensbinding (het omzetten van de
Categories- enValues-A1-bereiktekenreeksen naar echtetArea3D-celbereikverwijzingen in de BRAI) is nog steeds een tijdelijke aanduiding — die twee velden worden geaccepteerd op de API maar worden nog niet uitgestuurd in de grafiek-substream. Een vervolgrelease zal ze leiden via de formulecompiler en de EXTERNSHEET-verwijzingstabel om de tweede helft van Fase 2 af te ronden
Versie 2.41.0
Toegevoegd
- HotXLS krijgt programmatische BIFF8-grafiekblad-aanmaak. Een nieuwe
AddChartSheet-overladingset opSheetsschrijft een volledige grafiek-substream in het opgeslagen .xls-bestand, waarbij grafiekbladen eerder alleen ondoorzichtig konden worden bewaard via een laad-opslaan-rondreis. Vier overladingen behandelen de meest voorkomende ingangspunten: alleen naam / naam + grafiektype / + titel / + categorieastitel + waardeastittel. Het geretourneerdeIXLSWorksheetverschijnt in deSheets-collectie, krijgt een grafiekblad-boundsheet-invoer geschreven bij opslaan, en Excel opent het als een grafiekblad - Een nieuwe
TXLSChartType-enumeratie selecteert het grafiektype:xlsChartTypeColumn,xlsChartTypeBar,xlsChartTypeLine,xlsChartTypePie. De enumeratie wordt opnieuw geëxporteerd vanuitlxHandlezodat gebruikerscode de grafiek-bouwer-eenheid niet rechtstreeks hoeft te importeren - Beperkingen: het nieuwe grafiekblad rendert een leeg standaard grafiek van het gevraagde type. Reeksgegevensbinding (de grafiek koppelen aan werkelijke celbereiken), ingevulde titeltekst en per-grafiektype-opmaak (tussenruimte / balkoverLap / taartgat-grootte / markerstijl) worden uitgesteld naar latere fasen. Opslaan en heropenen met Excel behoudt de aanwezigheid van het grafiekblad en zijn type, maar nog niet door de gebruiker opgegeven gegevens
Gewijzigd
- De uitgestuurde grafiek-substream behandelt het BIFF8-framing dat de spec vereist — BOF (dt=$0020), Grafiek / PlotGroei / Kader / Reeks / Blad-eigenschappen / GebruikteAssen / AsOuder (POS + categorieas + waardeas + PlotGebied + Kader + GrafiekIndeling + grafiek-type-record + GrafiekIndelingLink + Legenda), EOF — zodat Excel het resultaat herkent als een echte grafiekvlinder van het gevraagde type. De bestaande grafiekblad-rondreis via
TXLSCustomChartis ongewijzigd - Dit is de eerste versie van Routekaart #10 (CHART-substream — het grootste item in de BIFF8-audit). Fase 1 levert het framing en het API-oppervlak zodat latere fasen reeksgegevensbinding, astit els en rijkere per-grafiektype-opmaak kunnen toevoegen
Versie 2.40.0
Toegevoegd
- Nieuwe XlsCondFormat12 Delphi-demo onder
Demo/Delphi/XlsCondFormat12/demonstreert de v2.34.0+ API voor voorwaardelijke-opmaak-extensie van begin tot einde. Drie knoppen laten jeCondFormat12.xls(BIFF8-backend),CondFormat12.xlsx(XLSX-backend) of beide naast elkaar genereren. Elk uitvoerblad draagt dezelfde vier regeltypen — Data Bar, 3-kleurenschaal, Pictogramreeks (3 pijlen) en 2-kleurenschaal — die tien gegevensrijen bedekken zodat je de bestanden in Excel kunt openen en visueel kunt verifiëren hoe elke backend de extensieregels rendert - Het BIFF8-pad oefent ook de v2.35.0 DXF-stijloverschrijving: de Data Bar-regel voegt een witte vette letterkleur toe zodat de celtekst leesbaar blijft over de donkere balkopvulling
- Nieuwe DUnitX-testfixture op
Tests/Delphi/HotXLS.CondFormat12Tests.pasbehandelt tien rondreis- en API-oppervlak-scenario's voor de CF12-familie: BIFF8-rondreis voor alle vier regeltypen, DXF-stijl-rondreis voor RGB-kleuren, thema-kleuren en lettertypevlaggen (vet / cursief / onderstreept), en XLSX-rondreis voor Data Bar / 3-kleurenschaal / Pictogramreeks met ShowOnly. De fixture is ingebonden inHotXLSDelphiTests.dpren het bijbehorende.dprojzodat bestaande CI-runs het automatisch oppikken - Om de fixture te ondersteunen stelt
TCondFormattwee nieuwe openbare accessors beschikbaar:RuleCountenRule(I), zodat aanroepers regels kunnen itereren na lezen
Versie 2.39.0
Toegevoegd
- De Differentieel XF (DXF)-stijloverschrijving op regels voor voorwaardelijke opmaak ondersteunt nu themakleurcodering naast de bestaande RGB-modus. Elk kleurslot — letterkleur, vulachtergrond, vulvoorgrond — kan worden ingesteld tegen een werkmap-thema-index plus een tintwaarde, zodat stijlen zoals "accent-2 verlicht 50%" worden bewaard zonder te worden afgevlakt naar een bevroren RGB
- Drie nieuwe methoden op
TXLSDxfStylevoor het opt-in van een slot in thema-modus:SetFontColorTheme(themeId, tint),SetFillBgColorTheme(themeId, tint),SetFillFgColorTheme(themeId, tint). Tint is een enkele in het bereik [-1,0, +1,0] — negatieve waarden maken de themakleur donkerder, positieve waarden lichter, 0,0 laat de basiskleur ongewijzigd. De bestaandeSetXxxColor(rgb)-methoden blijven in RGB-modus; de twee modi sluiten elkaar per slot uit en de laatste aangeroepen wint - Het BIFF8-draadformaat volgt de standaard XFProp-kleur-lay-out:
xclrType=2+ 4-byte BGR LongWord voor RGB (bestaand v2.35.0-gedrag),xclrType=3+ 2-byte ondertekende tint x 32767 + 4-byte thema-index voor thema-modus (nieuw). De DXF-blok-decoder weerspiegelt deze verzending — inkomende door Excel opgeslagen bestanden die themakleur gebruiken in hun CF12 DXF-blokken stellen nu de thema-id en tint beschikbaar via de nieuwe eigenschappen - Bekende beperkingen: thema-modus-rondreis op BIFF8 (.xls) is het enige ondersteunde pad in deze release — de XLSX (.xlsx)-kant stuurt nog steeds alleen
<color rgb="..."/>uit en negeerttheme/tint-attributen (gepland voor een vervolgrelease)
Opgelost
- Bevraag de actieve modus via nieuwe
XxxColorIsTheme/XxxColorThemeId/XxxColorThemeTintalleen-lezen eigenschappen gekoppeld aan elk van de drie kleurslots.HasXxxColorgeeft True terug in beide modi; bestaande aanroepers die alleenHasXxxColorcontroleren +XxxColorlezen blijven werken
Versie 2.38.0
Toegevoegd
- Bestaande XLSX
<cfRule type="cellIs">-verwerking is ongewijzigd; de dispatch kiest de nieuwe regeltypen alleen wanneer hettype-attribuut ze benoemt, en valt anders terug op het celwaarden-pad
Gewijzigd
- De lezer verwerkt de OOXML
<cfRule type="dataBar|colorScale|iconSet">-envelop plus de binnenste<dataBar>/<colorScale>/<iconSet>-tekst, doorloopt kind-<cfvo>-invoeren om het type (num / min / max / percent / percentile / formula / autoMin / autoMax) en val van elke drempelwaarde te herstellen, en kind-<color>-invoeren om de databalkkleur of per-stop-schaalkleur te herstellen - Pictogramreeks-regels bewaren de rondreis van de
iconSet-familienaam (de 17 basislijn Excel 2007-sets), dereverse-vlag en deshowValue-vlag (verwijzen naarShowOnly) - Kleurwaarden verwerkt vanuit het OOXML
rgb="AARRGGBB"-attribuut worden omgezet naar dezelfde BGRLongWord-conventie (R in de lage byte, overeenkomend met VCLTColoren BIFF8LongRGB) die door de bestaande schrijf-API wordt gebruikt, zodat een laad-bewerk-sla-rondreis de visuele kleuren exact behoudt
Verwijderd
- XLSX (.xlsx)-lezen herkent nu de Excel 2007+-voorwaardelijke opmaak-extensieregels in inkomende bestanden — databalk, kleurenschaal (2 en 3 stops, auto-gedetecteerd uit het cfvo-aantal) en pictogramreeks — en vult het bijpassende
TXLSXConditionalFormat-object in zodat gebruikerscode deze regels kan inspecteren en bewaren zonder ze te verliezen. Eerder werden door Excel opgeslagen .xlsx-werkmappen met deze regeltypen ze stilzwijgend verwijderd bij laden
Opgelost
- Bekende beperkingen: themakleurverwijzingen (OOXML
<color theme="N" tint="0.5"/>) worden gelezen als 0 in plaats van te worden omgezet via het werkmap-themapalet;iconIdper-stop-overschrijvingen op pictogramreeksen worden nog niet vastgelegd; hetpriority-attribuut van<cfRule>wordt genegeerd bij lezen (regels behouden hun parsevolgorde)
Versie 2.37.0
Toegevoegd
- CFEX-schrijven voegt een versievlagbyte toe (ver=1) zodat oudere HotXLS-lezers die de minimale CFEX-indeling van v2.34.0 verwachten stilzwijgend terugvallen op de verouderde interpretatie. De v2.37.0-lezer herkent ook ver=0-records geproduceerd door oudere HotXLS-builds, zodat de rondreis met gemengde-versie-installaties in beide richtingen werkt voor de type/kleur-velden die het oudere formaat droeg
- De lezer detecteert nu gemengde CONDFMT + CONDFMT12-invoeren op hetzelfde bereik — een gemeenschappelijk patroon in door Excel opgeslagen bestanden waar de oude cel-waarden-back-up en de nieuwe Data Bar / Kleurenschaal / Pictogramreeks-regel identieke sqref bedekken. De oudere CONDFMT-invoer wordt gemarkeerd via een nieuwe
IsShadowed-eigenschap opTCondFormatzodat gebruikersgericht code dat door de voorwaardelijke-opmaak-collectie itereert het duplicaat kan overslaan - Nieuwe
TotalRange-eigenschap opTCondFormatstelt het samengevoegde-extensie-bereik beschikbaar dat eerder privé was
Gewijzigd
- Het BIFF8 CFEX-recordformaat draagt nu de volledige per-stop cfvo-matrix (type + waardetekenreeks + kleur, per [MS-XLS] cfvo-semantiek) in plaats van alleen de balk/stop-kleur. Data Bar-regels bewaren nu de min/max-drempelwaardetypen en -waarden, kleurenschalen bewaren elke stop zijn type + waarde + kleur-combinatie, en pictogramreeksen bewaren het type + waarde van elke drempelwaarde naast de omgekeerd / alleenWeergeven-vlaggen
- Bekende beperkingen: schaduwdetectie is begrensd door een exacte begrenzende-kader-overeenkomst. Gemengde invoeren waarbij CONDFMT een enigszins ander sqref-subset bestrijkt worden niet gededupliceerd
Versie 2.36.0
Toegevoegd
- XLSX (.xlsx)-uitvoer ondersteunt nu de drie Excel 2007+-voorwaardelijke opmaak-regeltypen — databalk, kleurenschaal (2-stop en 3-stop) en pictogramreeks — waarmee de XLSX-backend op pariteit komt met de v2.34.0 BIFF8 (.xls)-backend. Vier nieuwe openbare methoden op
TXLSXWorksheetweerspiegelen het XLS API-oppervlak:AddCondFormatDataBar,AddCondFormatColorScale2,AddCondFormatColorScale3,AddCondFormatIconSet - De ingebouwde pictogramreeksnaamtoewijzing behandelt dezelfde zeventien Excel 2007-basisreeksen die door de XLS-backend worden ondersteund (3Pijlen / 3Vlaggen / 3VerkeerslampType1 / 3Tekens / 3Symbolen / 3Symbolen2 / 4Pijlen / 4PijlenGrijs / 4RoodNaarZwart / 4Beoordeling / 4VerkeerLichten / 5Pijlen / 5PijlenGrijs / 5Beoordeling / 5Kwartieren), geproduceerd als de standaard OOXML
iconSet-attribuuttekenreeks - Bekende beperkingen: themakleurcodering wordt nog niet uitgestuurd (OOXML
<color>gebruikt alleen hetrgbARGB-tekenreeksattribuut); hetshowValue="0"-attribuut wordt ingesteld wanneerShowOnlywaar is op een pictogramreeks, maariconIdper-stop-overschrijvingen worden nog niet ondersteund. XLSX-leeskant-herkenning van inkomende databalk / kleurenschaal / pictogramreeks-regels van door Excel opgeslagen bestanden blijft uitgesteld — alleen schrijven is aangesloten in deze release
Gewijzigd
- Het opgeslagen .xlsx-bestand stuurt nu het OOXML
<conditionalFormatting>-element uit met de geschikte kindstructuur voor elk regeltype:<cfRule type="dataBar"><dataBar><cfvo/><cfvo/><color/>voor balken,<cfRule type="colorScale"><colorScale>met 2 of 3 cfvo + kleurstops, en<cfRule type="iconSet"><iconSet iconSet="...">met de geschikte cfvo-set
Opgelost
- Drempelwaardetypen en kleurwaarden gebruiken dezelfde enumeratie en kleurconventie als het XLS API — dezelfde
TXLSCfValueKindvoor num / min / max / percent / percentile / formula, hetzelfde Delphi BGRLongWord-kleurformaat. Bestaande XLSX-celwaarden-AddConditionalFormat-aanroepen blijven identiek gedragen (geen regressie)
Versie 2.35.1
Toegevoegd
- Rondreis-gedrag: een laad-bewerk-sla-cyclus weerspiegelt nu elke na-laden mutatie van
Rule.Style. Als een gebruiker een werkmap leest,Rule.Style.SetFontColorwijzigt en opslaat, wint de nieuwe kleur; als de gebruiker de Style niet aanraakt, draagt het opgeslagen bestand dezelfde overschrijvingen als het origineel - Onbekende
xfPropType-waarden in de DXF-blob worden overgeslagen in plaats van afgewezen, zodat nieuwere Excel-bestanden met eigenschapstypen die nog niet door deze release worden herkend nog steeds laden
Gewijzigd
- De BIFF8-lezer decodeert de Differentieel XF (DXF)-bytes gekoppeld aan een CF12-regel terug in de
TXLSDxfStyle-eigenschap-bag van de regel, naast het bewaren van de onbewerkte bytes inDxfBlob. Het laden van een door Excel opgeslagen werkmap met gestijlde databalk / kleurenschaal / pictogramreeks-regels stelt nu de letterkleur, vulkleuren, vet / cursief / onderstreept en getalnotatie-id rechtstreeks beschikbaar via hetHasXxx+ waarde-paar op elkeRule.Style
Versie 2.35.0
Toegevoegd
- Regels voor voorwaardelijke opmaak dragen nu een Differentieel XF (DXF)-stijloverschrijving zodat een CF12-regel die in Excel wordt geactiveerd de letterkleur, vulling, vetschrift, cursief, onderstreping of getalnotatie van de cel kan wijzigen zonder de basis-XF van de cel te veranderen. De overschrijving is beschikbaar als een nieuwe
TXLSDxfStyle-eigenschap op elkeTCondFormatRule, toegankelijk na het aanmaken van een regel via de bestaandeAddCondFormatDataBar/AddCondFormatColorScale*/AddCondFormatIconSetAPI's - Bekende beperkingen: themakleurcodering voor DXF wordt niet ondersteund (alleen RGB); randoverschrijvingen en verloopstops zijn niet in de eigenschaftenset van deze release; XLSX-pariteit voor de drie nieuwe regeltypen blijft uitgesteld
- Ondersteunde stijloverschrijvingen in deze release: letterkleur, vulachtergrondkleur, vulvoorgrondkleur, vulpatroon, lettertypevetschrift, lettertypecursief, letterstijl onderstreping en ingebouwde getalnotatie-id. Elke eigenschap heeft een gekoppelde
HasXxx-vlag — alleen expliciet viaSetXxxingestelde eigenschappen worden in het BIFF8-bestand uitgestuurd
Gewijzigd
- De BIFF8-schrijver voegt een niet-leeg DXF-blok toe aan het CF12-record wanneer de Style van de regel ten minste één overschrijving heeft ingesteld. Het DXF-blok gebruikt de openbare XFProp-matrix-lay-out (cxfp + per-eigenschap type / grootte / gegevens-tuples) zodat Excel de stijlwijzigingen kan oppikken wanneer de regel wordt toegepast
- De BIFF8-lezer bewaart de onbewerkte DXF-bytes van een door Excel opgeslagen bestand in de
DxfBlob-eigenschap van de regel, zodat een laad-bewerk-sla-rondreis de cel-stijling gedragen door CF12-regels niet langer stilzwijgend verliest - Standaardgedrag ongewijzigd voor regels die geen stijl opt-in doen —
cbdxf = 0wordt uitgestuurd, identiek aan v2.34.0, zodat bestaande databalk / kleurenschaal / pictogramreeks-regels exact zoals voorheen worden weergegeven
Versie 2.34.0
Toegevoegd
- Nieuwe openbare voorwaardelijke-opmaak-API op het werkblad voor de Excel 2007+-extensieregels:
AddCondFormatDataBar,AddCondFormatColorScale2,AddCondFormatColorScale3enAddCondFormatIconSet. Elke methode accepteert een sqref-bereik zoals"A1:A10"plus de type-specifieke parameters (balkkleur, verloop-stop-kleuren of pictogramreeks-familie) en geeft het aangemaakte regelobject terug - De BIFF8 (.xls)-schrijver stuurt nu de bijbehorende CONDFMT12 / CF12 / CFEX-recordfamilie uit naast de bestaande celwaarden-CONDFMT / CF-records, zodat werkmappen gemaakt via de nieuwe API hun databalk-, 2-kleur of 3-kleurenschaal- en pictogramreeks-regels naar schijf opslaan
- Bestaand gedrag van celwaarden-voorwaardelijke opmaak is ongewijzigd; alleen nieuwe API's en nieuwe BIFF8-recordverwerking zijn toegevoegd
- Bekende beperkingen in deze release: XLSX-uitvoer voor de drie nieuwe regeltypen is nog niet aangesloten (bestaande XLSX-celwaarden-regels niet beïnvloed); het differentieel-XF-stijlblok op CF12 wordt leeg uitgestuurd zodat Excel balken en schalen kan weergeven met standaardkleuren in plaats van de door de API opgegeven kleuren; per-stop cfvo-matrices dragen in CFEX alleen de kleur, niet de type/waarde-combinatie. Deze hiaten zijn gepland voor de v2.34.x / v2.35.x-vervolgreleases
Gewijzigd
- Ingebouwde pictogramreeks-catalogus behandelt de zeventien Excel 2007-basisreeksen — 3-pijl / 3-vlag / 3-verkeerslicht / 3-teken / 3-symbool-families, 4-pijl / 4-beoordeling / 4-verkeerslicht en 5-pijl / 5-beoordeling / 5-kwartier — selecteerbaar via de
TXLSIconSetType-enumeratie - Drempelwaardetypen voor databalkgrenzen en kleurenschaal / pictogramreeks-stops kunnen een van de volgende zijn: getal, min/max van bereik, percentage, percentile of formule, overeenkomend met de cfvo-types die door Excel worden gebruikt
Verwijderd
- De BIFF8-lezer herkent inkomende CONDFMT12 / CF12 / CFEX-records en stelt ze beschikbaar via hetzelfde in-memory regelmodel, zodat door Excel gemaakte .xls-bestanden met extensieregels niet langer stilzwijgend worden verwijderd bij laden
Versie 2.33.3
Toegevoegd
- Nieuwe XlsTables Delphi-demo onder
Demo/Delphi/XlsTables/demonstreert de BIFF8-tabellen (ListObjects)-schrijfkant van begin tot einde. Het genereertSalesTable.xlsmet een vier-koloms verkoopgebied (Regio / Product / Kwartaal / Omzet) gebonden als Tabel bij A1:D10 metSheet.AddTable('SalesTable', 'A1:D10', headers). Open het geproduceerde .xls in Excel om de kolomdropdowns, gestreepte rijen en de SalesTable gestructureerde-referentienaam in het Naamvak te verifiëren
Gewijzigd
- De demo is het kortste eind-tot-eind recept voor het adopteren van de v2.33.0
AddTable-API: het steltStyleName = 'TableStyleMedium2'enShowRowStripes = Truein, vult negen gegevensrijen + één koptekstrij en schrijft de werkmap met éénSaveAs-aanroep. Uitvoer gaat naast het uitvoerbare bestand; een knop "Open uitvoermap" is beschikbaar voor gemak - Compilatie-infrastructuur is ongewijzigd: de bestaande
build-Win32-Demo.cmdpiktXlsTables.dprautomatisch op via zijnfor /r Demo *.dpr-sweep — geen wijzigingen in bouwscripts of .cbproj/.dproj-configuraties vereist
Versie 2.33.2
Gewijzigd
- De dekkingscontrole is conservatief: een Tabel wordt beschouwd als "dekkend" voor de autofilter alleen wanneer zijn eerste/laatste rij en eerste/laatste kolom de grenzen van de autofilter omsluiten. Gedeeltelijke overlapping (bijv. autofilter die extra rijen onder een Tabel bestrijkt) blijft de autofilter op bladniveau uitsturen zodat verouderde workflows die een filter boven of naast een Tabelgebied plaatsen blijven werken
- BIFF5-opslag en bladen zonder enige Tabel zijn niet beïnvloed — de onderdrukkingscontrole wordt alleen uitgevoerd wanneer het bestandsformaat BIFF8 is en het werkblad ten minste één Tabel heeft. Geen openbare API-wijziging
Opgelost
- BIFF8 (.xls)
SaveAsonderdrukt nu de zelfstandigeAUTOFILTERINFO/AUTOFILTER-records op bladniveau ($009D / $009E) wanneer een Tabel op hetzelfde blad het autofilterbereik volledig bedekt. Excel sluit een autofilter-dropdown in in het Tabel-object zelf, zodat het uitsturen van een extra autofilter op bladniveau voor het identieke bereik ervoor zorgt dat Office File Validation het bestand afwijst. Dit komt overeen met de XLSX-kant-correctie die in v2.29.4 is uitgeleverd
Versie 2.33.1
Toegevoegd
- De leesfunctionaliteit van BIFF8 (.xls) herkent nu de gedeelde functie-tabelrecords die in v2.33.0 aan de schrijfkant zijn toegevoegd. Het openen van een .xls-bestand dat is opgeslagen door Excel (of door HotXLS zelf) met een of meer ListObjects/Tables vult nu de
Tables-verzameling van het werkblad met eenTXLSTableper geparseerde FEAT11 ($0872), waarbij het bereik van de tabel wordt gereconstrueerd op basis van de primaire Ref8U, de tabel-id, naam en weergavenaam worden hersteld indien aanwezig, en de stijlnaam van de tabel wordt ingevuld vanuit het bijbehorende LIST12 ($0877)-record. Eerder werden deze records stilzwijgend genegeerd, waardoor alle tabelstatus bij een round-trip verloren ging
Gewijzigd
- De gedeelde FEATHEADR ($0867)-opcode wordt nu gestuurd op basis van het
Isf-veld in plaats van altijd naar de beveiligingsparser te gaan. Isf=2 (Enhanced Protection) behoudt het bestaande gedrag; Isf=4 (SharedList) wordt herkend als markering voor tabellen op het blad; Isf=3 (SmartTags) en andere waarden worden veilig genegeerd. FEATHEADR11 ($0871) wordt ook stilzwijgend herkend als tabelmarkering
Opgelost
- De lezer is tolerant en werkt op best-effort-basis: misvormde of Excel-variant FEAT11-payloads worden op een veilige manier afgebouwd tot een tabel met ten minste het juiste celbereik, zelfs als de hogere offsetvelden (per-kolom-id's, gestructureerde referentiegegevens) niet kunnen worden geparseerd. De round-trip van bladbeveiliging is ongewijzigd — de bestaande optiesbit op Isf=2 payload-offset 19 wordt nog steeds identiek gelezen
Versie 2.33.0
Toegevoegd
- Nieuwe publieke API op
IXLSWorksheet: eigenschapTables: TXLSTables(alleen-lezen verzameling) en methodeAddTable. De structuur weerspiegeltTXLSXTable/TXLSXTablesaan de XLSX-kant, zodat code die tabellen aan een werkmap toevoegt onafhankelijk van het bestandsformaat kan werken.TXLSTablebiedt toegang totId,Name,DisplayName,Range,Columns,StyleName(standaard'TableStyleMedium2'),ShowFirstColumn,ShowLastColumn,ShowRowStripes(standaard true),ShowColumnStripesenTotalsRowShown - De nieuwe bladstream-records worden vlak voor de werkblad-EOF uitgezonden, na de bladbeveiliging, maar alleen wanneer het bestandsformaat BIFF8 is (
xlExcel97). Werkmappen zonder tabellen worden precies zoals voorheen opgeslagen — er wordt geen FEATHEADR uitgezonden, de recordstroom wijzigt niet en er is geen overhead. BIFF5-opslag is niet beïnvloed, omdat tabellen een BIFF8+-concept zijn - Bekende beperkingen van deze initiële versie (v2.33.0): totaalrijformules en gestructureerde referentie-hulpbereiken worden nog niet uitgezonden; conflictonderdrukking tussen
AUTOFILTERINFOop bladniveau en een tabelbereik wordt in een volgende versie toegevoegd; ook de leesfunctie (het parsen van een Excel-opgeslagen .xls met tabellen terug in deTables-verzameling) volgt in een latere versie. Tabellen die via dit v1-schrijfpad zijn gemaakt, zijn correct gevormd voor round-trip-behoud in Excel zelf
Gewijzigd
- Tabel-id's worden bij het opslaan sequentieel per blad toegewezen (1..N) als ze niet vooraf zijn ingesteld, zodat aanroepers
Idop de standaardwaarde kunnen laten staan naAddTable. De standaard stijlnaam'TableStyleMedium2'komt overeen met wat Excel en de XLSX-kant al gebruiken, waardoor de tabelweergave consistent is in beide bestandsformaten
Verwijderd
- BIFF8 (.xls)-werkbladen ondersteunen nu tabellen (Excel ListObjects). Roep
Worksheet.AddTable(Name, Range, Columns)aan op eenIXLSWorksheetom een benaamd tabelbereik aan een celbereik te koppelen — bijvoorbeeldSheet.AddTable('SalesTable', 'A1:F9', HeaderList). Het .xls-opslagpad zendt de BIFF8-gedeelde-functierecordfamilie uit die het blad markeert als tabelblad: FEATHEADR ($0867 met Isf=4), FEATHEADR11 ($0871) en een gekoppeld FEAT11 ($0872) + LIST12 ($0877) per tabel. Eerder wasAddTableaanroepen op de XLS-gevel niet beschikbaar; tabellen die op een werkblad waren gedefinieerd werden stilzwijgend weggegooid bijSaveAs(xlExcel97)
Versie 2.32.1
Opgelost
- Compilatiefout opgelost die was geïntroduceerd door de v2.32.0-functie voor FILEPASS aan de schrijfkant, waardoor de bibliotheek niet meer kon worden gebouwd onder RAD Studio 12+ met strikte typecontrole. De hulpfunctie
EncryptAllBlobsdeclareerde zijn spreidingsbuffer alsPBytein een context waarPBytewerd omgezet als het lokale alias vanlxHandle, terwijl het aanroepdoelEncryptBlobDatainlxEncrypterlxBLOB.PByteverwachtte. Hoewel beide typen aliassen zijn van^Byte, beschouwt Delphi ze als afzonderlijk bij strikte typecontrole E2010. De buffervariabele is nu volledig gekwalificeerd alslxBLOB.PByte, zodat het wachtwoordversleutelingspad van v2.32.0 correct compileert op alle ondersteunde RAD Studio-versies (12.0–37.0)
Versie 2.32.0
Gewijzigd
- Het schrijfpad zendt het BIFF8 FILEPASS-record ($002F) onmiddellijk na de werkmap-BOF uit en RC4-versleutelt elk volgend recordlichaam met het bestaande leeskant-algoritme (vMajor=1, vMinor=1 — Excel "Office 97/2000 Compatible"-versleuteling). 16-byte Salt en Verifier worden gegenereerd via Windows
CryptGenRandomin plaats van PascalRandom. Herleiding van bloksleutels elke 1024 bytes wordt behouden zodat grote werkmappen, SST CONTINUE-ketens en meerdere bladstreams correct worden versleuteld - Versleuteling is alleen van toepassing op BIFF8 (
xlExcel97) — het BIFF5-opslagpad blijft onversleuteld. Een legeEncryptionPasswordbehoudt de bestaande onversleutelde uitvoer en is de standaard, zodat bestaande applicaties die de setter nooit aanroepen niet worden beïnvloed - Beveiligingsopmerking: BIFF8 RC4 met vMajor=1/vMinor=1 gebruikt een 40-bit sleutel, die in 2025 als gecompromitteerd wordt beschouwd. Gebruik deze functie voor compatibiliteit met de klassieke wachtwoordbeveiliging in Excel, niet voor de vertrouwelijkheid van gevoelige gegevens. Geef voor echte beveiliging de voorkeur aan XLSX met AES
Opgelost
- Eigenschap
EncryptionPasswordtoegevoegd aanIXLSWorkbook. Het instellen van een niet-leeg wachtwoord vóórSaveAsproduceert nu een Excel-compatibel wachtwoord-beveiligd .xls-bestand: Excel, LibreOffice Calc en andere BIFF8-lezers vragen om het wachtwoord bij het openen en weigeren toegang als het onjuist is. Eerder werd de wachtwoordsetter stilzwijgend genegeerd aan de schrijfkant en werden werkmappen altijd als onversleuteld uitgezonden - Leesfunctie: een latente bug in
ParseFilePassopgelost waardoor het eerste recordlichaam na FILEPASS (doorgaans CODEPAGE) als onversleuteld werd behandeld. HotXLS-geschreven versleutelde bestanden worden nu correct round-tripped via HotXLS zelf, en Excel-geschreven versleutelde bestanden geven geen onleesbare CODEPAGE-waarde meer terug
Versie 2.31.0
Toegevoegd
- Eigenschap
UseSharedFormulastoegevoegd aanIXLSWorkbook. Wanneer ingesteld opTrue, groepeert BIFF8 SaveAs cellen die een sjabloonformule delen in native SHRFMLA-records ($04BC), overeenkomend met het compacte draadformaat van Microsoft Excel. Kolommen met formules zoals=A1*B1,=A2*B2, …,=A99*B99worden automatisch gegroepeerd, waardoor de bestandsgrootte met 30–60% wordt verminderd op sjabloonzware bladen - De leesfunctie is niet beïnvloed: HotXLS heeft SHRFMLA-records altijd correct gelezen, zodat round-tripped bestanden blijven werken. Dit is een MINOR-versieverhoging (2.30.x → 2.31.0) omdat een nieuwe publieke eigenschap is toegevoegd en het BIFF8-uitvoerformaat verandert wanneer de functie is ingeschakeld
Gewijzigd
- Groepering is kolom-naar-beneden, aaneengesloten en op sjabloon gebaseerd: alleen cellen in dezelfde kolom met aaneengesloten rijen en PTG-equivalente formules worden gegroepeerd. Cellen met matrixformules of samengevoegde celmarkering worden uitgesloten
- Standaard is
False, waardoor de bestaande per-cel FORMULA-recorduitvoer ongewijzigd blijft. Meld u aan doorWorkbook.UseSharedFormulas := Truein te stellen vóór het aanroepen vanSaveAs
Versie 2.30.6
Opgelost
- Een vierde klasse van compilatiefouten opgelost in de C++Builder-demo's onder de clang-gebaseerde bcc32-compiler van RAD Studio 37.0: het indexeren van een randstijl via een smart-pointer-interface met
->Borders[idx]->Propveroorzaakte fout E5843 ("member reference type is not a pointer"). Alle instanties zijn gewijzigd naar->Borders->Item[idx]->Prop, waarbij de geïndexeerde eigenschap direct op de interface wordt benaderd. Deze fix is aanwezig in de ApiTour-, ExportWithColoring-, PurchaseOrder- en QuickStart-demo's en voltooit volledige clang-compatibiliteit voor alle negen C++Builder-demoprojecten
Versie 2.30.5
Opgelost
- Alle negen C++Builder-demoprojecten worden nu correct gebouwd onder de clang-gebaseerde bcc32-compiler van RAD Studio 37.0. Drie klassen van compilatiefouten zijn opgelost: de
lxFormula-eigenschapEOFis hernoemd naarIsEofom een conflict met de Cstdio.h-macro van dezelfde naam te vermijden; XLS API-enumconstanten (xlHAlignCenter,xlAround,xlMedium, enz.) zijn nu expliciet gekwalificeerd met de naamruimteLxhandle::in C++Builder-democode; en XLSX-celwaarde-toewijzingen zijn gewijzigd vanOleVariant(...)naarVariant(...)omdatTXLSXCell.Valuevan het typeSystem::Variantis en de clang-compiler de impliciete omzetting van een beschermde basisklasse vanOleVariantafwijst
Versie 2.30.4
Gewijzigd
- De OrderCalc-demo (Delphi-inkoopordervoorbeeld) bevat nu een XLSX-exportoptie naast de bestaande XLS-, HTML- en RTF-indelingen. Door "Excel 2007+-bestand (*.xlsx)" te selecteren in het opslagdialoogvenster wordt de inkooporder geschreven met de native TXLSXWorkbook API, waardoor een standaardconform XLSX-bestand wordt geproduceerd met lettertypen, opvullingen, randen, uitlijning, getalnotaties en Excel-formules behouden
Versie 2.30.3
Gewijzigd
- SaveXLSWorkbookAsXLSX (de brug die wordt gebruikt door TDataToXLS.SaveAs en TGridToXLS.SaveAs wanneer de doelbestandsnaam eindigt op .xlsx) kopieert nu achtergrondvulkleuren van cellen, lettertypekleuren en lettertypestijlkenmerken (naam, grootte, vet, cursief) van de onderliggende XLS-werkmap naar de XLSX-uitvoer. Kolombreedten — inclusief expliciet versmalde kolommen die zijn ingesteld vóór export — worden ook gekopieerd. Eerder werden alleen celwaarden en getalnotaties overgedragen, zodat de XLSX-uitvoer uniform zonder opmaak was, alle kolombreedten op de standaardwaarde stonden en elke opzettelijk smalle decoratieve kolom verscheen als een te brede lege kolom
Versie 2.30.2
Opgelost
- Een round-trip-bug in de XLS-lezer opgelost waarbij de richting van Outline.SummaryRow werd omgekeerd na het openen. De fRwSumsBelow-vlag van het WSBOOL-record (BIFF8-specificatie p278 byte 0 bit 6, masker $0040) betekent "samenvattingsrijen verschijnen *onder* detail", maar de parser stelde eerder SummaryRow = xlAbove in wanneer de bit was gezet (en xlBelow wanneer gewist) — precies het tegenovergestelde van de specificatie. De schrijfkant was al correct (zendt $0040 uit voor xlBelow), dus het openen van een Excel-bestand met "samenvattingsrijen onder detail" en het opnieuw opslaan via HotXLS zou de overzichtsrichting stilzwijgend omdraaien naar "boven". Nu komt de parseerrichting overeen met de specificatie en de schrijver, zodat overzichtsconfiguraties correct worden round-tripped. fColSumsRight ($0080) was al correct verwerkt en is ongewijzigd
Versie 2.30.1
Gewijzigd
- De XLS (BIFF8)-schrijver zendt nu INTERFACEHDR / INTERFACEEND / WRITEACCESS-records uit in de sectie met werkmap-globals, overeenkomend met de native recordindeling van Microsoft Excel. Native Excel schrijft dit trio altijd tussen CODEPAGE/DSF en WINDOW1, en striktere BIFF-lezers/Office File Validation-paden verwachten ze mogelijk. INTERFACEHDR bevat de codepagina (1200, UTF-16), INTERFACEEND is een lege markering en WRITEACCESS bevat de gebruikersnaam "opgeslagen door" (momenteel hardgecodeerd als "HotXLS"; een toekomstige versie kan dit promoveren tot een werkmap-eigenschap). Uitvoer-XLS-bestanden komen nu nauwer overeen met de native byte-indeling van Excel
Versie 2.30.0
Toegevoegd
- Een klassiek-naar-XLSX-exportbrug toegevoegd. TDataToXLS.SaveAs en TGridToXLS.SaveAs schrijven nu .xlsx-bestandsnamen via de XLSX-engine terwijl de bestaande .xls-, .html- en .rtf-paden ongewijzigd blijven
- Werkbladweergave-API's toegevoegd voor XLS en XLSX. IXLSWorksheet.View en TXLSXWorksheet.View ondersteunen normale weergave, afdrukonderbreking-voorbeeldweergave en pagina-indeling-weergave, en de instelling wordt bewaard door het relevante bestandsschrijver/lezerpad
- Klassieke werkmap-compatibiliteits-API's toegevoegd: IXLSWorkbook.SetCodePage en IXLSWorkbook.VBAProject. VBA-projecten kunnen nu worden geïnspecteerd via TXLSVBAProject/TXLSVBAModule-modulenamen en brontekst wanneer een werkmap een VBA-opslag bevat
- De optionele eenheid cxGridAddExcel toegevoegd voor exportworkflows met DevExpress cxGrid. Deze is opzettelijk niet opgenomen in de standaardpakketten, zodat installaties zonder DevExpress correct kunnen worden gebouwd
Gewijzigd
- TXLSXWorkbook uitgebreid met ParsedVBAProject, een alleen-lezen geparseerde weergave over een geldig vbaProject.bin-payload, terwijl het bestaande raw VbaProject byte-round-trip-gedrag behouden blijft
Opgelost
- XLSX-grafiekbladrendering opgelost waarbij de grafiek leeg bleek wanneer de werkmap werd geopend in Excel (een vers geopend grafiekblad toonde kort de 3 grafiekcontextpictogrammen rechtsboven en liet ze vervolgens verdwijnen, waardoor het blad leeg bleef). Grafiekbladtekeningen gebruiken nu <xdr:absoluteAnchor> met expliciete afmetingen (~10in × 7,2in = 9525000 × 6858000 EMU) in plaats van <xdr:twoCellAnchor> met cx=0/cy=0; grafiekbladen hebben geen celraster om twoCellAnchor tegen op te lossen, waardoor Excel terugviel op de interne xfrm van nul grootte en de grafiek op nul pixels renderde. Volgens ECMA-376-1 14.2.3.2 moeten grafiekbladtekeningen absoluteAnchor gebruiken. Werkbladgrafiekankers zijn ongewijzigd
Versie 2.29.4
Gewijzigd
- De MemoryDataExport-demo (XlsxFeatureGallery) bijgewerkt om de overbodige
SetAutoFilter('A1:F9')aanroep op het blad Details te verwijderen — AddTable koppelt al een autoFilter aan het tabelbereik, dus de extra aanroep veroorzaakte eerder de OFV-afwijzing hierboven. De defensieve onderdrukking door de schrijver dekt klantcode die de demo-update niet ontvangt
Opgelost
- Gestopt met het uitsturen van een overbodige xl/worksheets/_rels/sheetN.xml.rels-bestand voor grafiekbladen die zijn toegevoegd via AddChartSheet. Het dubbele relatiebestand verwees naar een niet-bestaand werkbladonderdeel en verscheen als een wees in het .xlsx-zipbestand; grafiekbladen schrijven nu alleen het correcte xl/chartsheets/_rels/sheetN.xml.rels
- Een XLSX-pakketfout opgelost die het reparatieverzoek van Excel veroorzaakte bij werkmappen waarbij een autoFilter op bladniveau en een tabel hetzelfde bereik beslaan (bijv. het Details-blad van de MemoryDataExport-demo's XlsxFeatureGallery.xlsx, dat
AddTable('SalesTable', 'A1:F9', ...)aanriep gevolgd doorSetAutoFilter('A1:F9')). OOXML verbiedt twee filtermechanismen over hetzelfde bereik; de schrijver onderdrukt nu de dubbele<autoFilter>-uitvoer op bladniveau wanneer het bereik samenvalt met het bereik van een tabel. Het eigen autoFilter van tabellen (weergegeven als de vervolgkeuzelijsten in tabelkoppen) werkt nog steeds - Een gerelateerde schemaschending in de uitvoer van
<dataValidation>opgelost: er werd een operator-attribuut voor elke validatie uitgezonden, maar ECMA-376-1 18.3.1.32 staat dit alleen toe voor typen whole / decimal / date / time / textLength. AddListValidation produceert type="list", wat vroeger operator="between" uitlekte; OFV is strenger dan Excel hierover en kan de werkmap afwijzen. Het operator-attribuut wordt nu weggelaten voor list / custom / none - Het element
<legacyDrawing r:id="..."/>opgelost op werkbladen die interne en externe hyperlinks combineren met opmerkingen (het Dashboard-blad van XlsxFeatureGallery.xlsx heeft 1 interne + 1 externe + 1 opmerking). De rId-berekening telde alle hyperlinks in plaats van alleen de externe (interne hyperlinks gebruiken het inline location=-attribuut en verbruiken geen rId), waardoor legacyDrawing verwees naar het rels-doel van de opmerkingen in plaats van het vmlDrawing-doel. ECMA-376-1 18.3.1.51 vereist dat legacyDrawing verwijst naar een vmlDrawing-type rels. De rId wordt nu berekend op basis van alleen het aantal externe hyperlinks
Versie 2.29.3
Opgelost
- Een XLSX round-trip-regressie opgelost waarbij randen die op anderszins lege rijen waren getekend, na Openen + wijzigen + SaveAs verdwenen. Het horizontale scheidingsteken op rij 8 van ApiTour (geproduceerd door een
Range.SetBorders-aanroep op een rij zonder gegevens) renderde correct in het vers gegenereerde ApiTour.xlsx maar verdween in ApiTour-XLSX-Modified.xlsx nadat de wijzigingsomgeving van de demo het bestand opnieuw had opgeslagen, waardoor Excel een gebroken verticale rasterlijn toonde bij C8/D8 in alleen het gewijzigde bestand (het originele ApiTour.xlsx was niet beïnvloed). De XLSX-parser past nu ook celstijlen toe wanneer een<c>-element zelfsluitend is of geen waarde-/formulakinderen heeft, zodat opgemaakte lege cellen de round-trip overleven
Versie 2.29.2
Opgelost
- Een XLSX round-trip-regressie opgelost in Openen + wijzigen + SaveAs-stromen. Wanneer ParseWorksheetXml een cel las waarvan
<c s="N"/>verwees naar een styles.xml cellXf, sloeg het N direct op in cell.FormatIndex. Bij SaveAs worden de cellXfs opnieuw opgebouwd vanuit de werkmap-stijlpools en de slot op hetzelfde numerieke indexnummer in de nieuwe indeling draagt bijna nooit dezelfde semantiek; de opnieuw opgeslagen cel wees naar de verkeerde cellXf — of voorbij het einde van de nieuwe cellXfs-tabel — en Excel meldde "Office heeft een probleem gedetecteerd met dit bestand". ApplyStyle leidt nu cellStyle in omgekeerde richting terug naar FontIndex/FillIndex/BorderIndex/NumberFormatIndex/AlignmentIndex/ProtectionIndex via de CellXfXxxMap-tabellen die ParseStylesXml al vult, zodat de round-trip de cel opnieuw uitzendt tegen de vers gebouwde cellXfs
Versie 2.29.1
Opgelost
- Twee XLSX-renderingregressies opgelost die zichtbaar werden via de ApiTour-demo: (1) cellen in een rij konden in niet-monotone kolomvolgorde worden uitgezonden wanneer een
Range.SetBorders-aanroep cellen in niet-monotone volgorde toevoegde (bijv. de overzichtsomloop maakt A8/C8 aan, de binnenste omloop maakt B8 aan — uitvoer was A8/C8/B8 in plaats van A8/B8/C8, waardoor Excel "Office heeft een probleem gedetecteerd met dit bestand" meldde en de beveiligde weergave afdwong). De XLSX-schrijver sorteert nu de cellen van elke rij op kolom vóór uitvoer, in overeenstemming met het OOXML CT_Row-schema. (2) Cellen die tegelijkertijd 2 of meer stijlindexen instellen (Font + Fill + Border, enz.) werden eerder samengevouwen tot een enkeldimensionale cellXf via een prioriteitsketen (FontIndex won, Border/Fill werden weggegooid), zodat bijv. een koptekstrij met FontIndex + FillIndex + BorderIndex ingesteld op eenRange[..].SetBorderswerd weergegeven zonder de randen. De schrijver verzamelt nu een samengestelde cellXf-pool tijdens SaveAs en routeert meerdimensionale cellen naar een gesynthetiseerde cellXf die elke dimensie behoudt
Versie 2.29.0
Gewijzigd
- De interne hulpeenheid
lxList2is hernoemd naarlxKeyListen de WideString-sleutelklassen vanlxListzijn hernoemd vanTXLSKeyList/TXLSKeyEntry/TXLSKeyArraynaarTXLSStringKeyList/TXLSStringKeyEntry/TXLSStringKeyArray, zodat de eenheidsnaam overeenkomt met zijn hoofdklasseTXLSObjectKeyListen de twee sleutellijstgeneraties zelfbeschrijvend zijn (TXLSStringKey*voor de verouderde WideString-sleutelpool,TXLSObjectKey*voor de THashtableKey-gebaseerde deduplicatiepool). Als uw code verwijst naar de oude eenheidsnaam of klassennamen, werk dan uw uses-clausules en typenamen dienovereenkomstig bij
Versie 2.28.3
Opgelost
- Een XLSX-celuitvoerregressie opgelost die ertoe leidde dat randen die op anderszins lege rijen waren ingesteld, verdwenen.
Range['A3:C10'].SetBorders(xlsxEdgeOutline,...)op een blad waarvan rij 8 geen gegevens bevatte, renderde de verticale rasterlijn bij C/D gebroken over die rij omdat de schrijver elke cel oversloeg waarvan de waarde niet was toegewezen — zelfs als de cel een BorderIndex/FontIndex/FillIndex/NumberFormatIndex/AlignmentIndex/ProtectionIndex had. De schrijver zendt nu<c r='..' s='..' />uit voor cellen zonder waarde die een stijlindex bevatten
Versie 2.28.2
Opgelost
- Een XLSX-werkbladschemaschending opgelost die ervoor zorgde dat Excel bladen weigerde te laden wanneer samengevoegde cellen werden gecombineerd met AutoFilter. De XLSX-schrijver zendt nu het
<autoFilter>-element uit vóór<mergeCells>, in overeenstemming met de OOXML CT_Worksheet-volgorde (autoFilter is #11, mergeCells is #15). Eerder veroorzaakten dergelijke werkmappen het reparatiedialoogvenster van Excel metLoad error. Line 1, column 0op sheet1.xml en het herstel zou ook tableParts/autoFilter verwijderen uit onderliggende Details-bladen
Versie 2.28.1
Toegevoegd
- Handige API's toegevoegd aan de klassieke XLS-gevel.
IXLSRangebiedt nu alleen-lezen Width- en WidthInPixels-helpers plusSaveAsCSV(FileName);IXLSWorksheetenIXLSWorkbookbieden nuSaveAsCSV(FileName/Stream)-overloads voor het gebruikte bereik of actieve blad;IXLSPageSetupbiedt nu Order, Draft, BlackAndWhite, PrintNotes en alleen-lezen IsFitToPages. SETUP-record opslaan/openen bewaart nu die afdrukmarkeringen
Versie 2.28.0
Toegevoegd
- RTF-export toegevoegd aan TXLSXWorkbook. Nieuwe SaveAsRTF-overloads (FileName/Stream x standaard actief blad/expliciet SheetIndex) schrijven het gekozen blad als een RTF 1.6-document met een eenvoudige tabel. Kolombreedten worden afgeleid van de ColWidth-gegevens van het blad (1 Excel-tekeneenheid is benaderd als 96 RTF-twips); kolommen zonder expliciete breedte vallen terug op StandardWidth als ingesteld, anders op 809 twips (~8,43 tekens). Vet (\\b), cursief (\\i) en tekengrootte (\\fsN in halve punten) per cel worden toegepast vanuit de FontIndex van de cel. Niet-ASCII-tekens zijn gecodeerd als signed-16-bit RTF \\uN? unicode-escapes per RTF 1.6 §2.4.2, voor het volledige BMP-bereik. Samengevoegde cellen worden niet overgeslagen — oorsprongcellen bevatten de inhoud en niet-oorsprong cellen worden uitgezonden als lege cellen. Standaard SheetIndex schrijft het actieve blad; buiten bereik retourneert -1. Lege bladen produceren een minimaal geldig RTF-document
Versie 2.27.0
Toegevoegd
- HTML-export toegevoegd aan TXLSXWorkbook. Nieuwe SaveAsHTML-overloads (FileName/Stream x standaard actief blad/expliciet SheetIndex) schrijven het gekozen blad als een UTF-8 HTML-document met UTF-8 BOM. Uitvoer is een enkele <table> binnen een minimale HTML-pagina. Samengevoegde cellen worden uitgedrukt als colspan/rowspan-attributen. Celopmaak wordt uitgezonden als inline CSS: lettertypefamilie, grootte (pt), vet (font-weight:bold), cursief (font-style:italic), doorhaling (text-decoration:line-through) en expliciete lettertypekleur; effen-patroon vulling voorgrondkleur als background-color; horizontale uitlijning (links/midden/rechts/uitvullen) en WrapText (white-space:pre-wrap). Datumvariantwaarden renderen als 'yyyy-mm-dd hh:nn:ss'; rich-text-cellen worden afgevlakt tot hun aaneengesloten tekstinhoud. Themakleuren worden stilzwijgend overgeslagen (geen theme1.xml-oplossing in de eenvoudige HTML-export). Standaard SheetIndex schrijft het actieve blad; buiten bereik retourneert -1
Versie 2.26.0
Toegevoegd
- Ondersteuning voor themakleuren, geïndexeerde kleuren en tint/arcering toegevoegd aan TXLSXFont, TXLSXFill en TXLSXBorderEdge. Elke kleurslot bevat nu drie nieuwe velden naast de bestaande RGB-kleur: ColorTheme (Integer; -1 = niet ingesteld; 0..11 = OOXML-themaslot), ColorIndex (Integer; -1 = niet ingesteld; 0..63 = verouderd OOXML-paletslot — gecombineerd met Workbook.IndexedColor[N] en XlsxDefaultIndexedPalette) en TintAndShade (Double in [-1.0, 1.0]; alleen uitgezonden met thema). TXLSXFill biedt Foreground/Background-varianten van alle drie. Schrijverprioriteit: thema > geïndexeerd > rgb; het oudere "ColorIsAuto = True"-pad blijft het element volledig onderdrukken. SaveAs en Open maken de volledige <color theme="N" tint="..."/> en <color indexed="N"/> attribuutsets van lettertype-/vulling-/randkleuren round-trip. Boekhouding: TXLSXBorders.LookupOrAdd vergelijkt nu alle drie nieuwe velden zodat randen met themakleuren niet botsen met rgb-gekleurde vermeldingen in de pool
Versie 2.25.0
Toegevoegd
- Round-trip voor externe werkmapkoppelingen toegevoegd aan TXLSXWorkbook. Nieuwe typen: TXLSXExternalLink (doel-URL + SheetNames-lijst) + TXLSXExternalLinks-verzameling. De eigenschap TXLSXWorkbook.ExternalLinks biedt toegang tot de verzameling; Add(Target) voegt een nieuwe koppeling toe die de aanroeper verder invult. SaveAs zendt een <externalReferences>-blok op werkmap-niveau uit in xl/workbook.xml, een externalLink-rel in xl/_rels/workbook.xml.rels (aan het einde van de rid-reeks zodat bestaande rids stabiel blijven), het xl/externalLinks/externalLink{N}.xml-deel per vermelding (<externalBook><sheetNames>) en het bijbehorende .rels-bestand dat verwijst naar de externe URL met TargetMode="External", plus passende ContentType-overschrijvingen. Open scant externalLink{N}.xml + .rels-paren vanaf index 1 en stopt bij de eerste ontbrekende. De huidige versie rondt alleen doel-URL + SheetNames round-trip; gecachte celwaarden in <sheetDataSet> worden niet behouden
Versie 2.24.0
Toegevoegd
- Samenstellende randhulp TXLSXRange.SetBorders toegevoegd. Nieuwe TXLSXBorderEdgeKind-enum (xlsxEdgeAll / Outline / Inside / InsideHorizontal / InsideVertical / Top / Bottom / Left / Right / DiagonalUp / DiagonalDown) bepaalt welke randen worden geschreven. SetBorders(Kind, Style, Color) / SetBorders(Kind, Style) (standaard ondoorzichtig zwart) itereert elke cel in het bereik, berekent het randmasker per celposittie (hoekse cellen krijgen twee buitenranden, randcellen krijgen er één, binnenste cellen krijgen binnenrasterlijnen, enz.), componeert Style + Color op een kloon van de huidige rand van de cel (zodat opeenvolgende Outline + Inside-aanroepen worden gestapeld in plaats van overschreven), doet vervolgens een opzoek-of-toevoeg-bewerking op werkmap-niveau op Workbook.Borders en schrijft de resulterende 1-gebaseerde BorderIndex terug op de cel. Nieuwe hulp TXLSXBorders.LookupOrAdd retourneert 0 voor lege randen zodat de pool nooit opbloat met no-op-vermeldingen
Versie 2.23.0
Toegevoegd
- CSV-exportoverloads toegevoegd aan TXLSXWorkbook. Nieuwe invoerpunten: SaveAsCSV(FileName) / SaveAsCSV(FileName, SheetIndex, Delimiter) / SaveAsCSV(Stream) / SaveAsCSV(Stream, SheetIndex, Delimiter) schrijven het gevulde bereik van het gekozen blad als UTF-8 met leidende BOM en CRLF-regelafsluitingen. Standaardvarianten kiezen het actieve blad en komma als scheidingsteken; de SheetIndex/Delimiter-overload accepteert elk WideChar-teken (veelgebruikt is tab #9 voor TSV). Veldcitatie volgt RFC 4180 — waarden die het scheidingsteken, aanhalingstekens, CR of LF bevatten worden ingepakt in aanhalingstekens waarbij ingesloten aanhalingstekens worden verdubbeld. Datumwaarden renderen als 'yyyy-mm-dd hh:nn:ss'; rich-text-cellen worden afgevlakt tot de aaneengesloten tekst; lege cellen in het midden van het begrenzende rechthoek renderen als kale scheidingstekens en de rij eindigt bij de laatste gevulde kolom
Versie 2.22.0
Verwijderd
- Overschrijvingen van de geïndexeerde kleurenpaletten op werkmap-niveau toegevoegd aan TXLSXWorkbook. Nieuwe invoerpunten: IndexedColor[Index: Integer]: LongWord (lezen/schrijven, geldige slots 0..63, ARGB LongWord), HasCustomIndexedColor(Index): Boolean (meldt of de aanroeper een slot heeft overschreven), CustomIndexedColorCount: Integer (aantal overschreven slots; 0 = palet wordt als standaard uitgezonden), ResetIndexedColors: procedure (gooit alle overschrijvingen weg). De nieuwe constante XlsxDefaultIndexedPalette biedt het OOXML-verouderde ECMA-376-palet voor slots 0..63. SaveAs zendt <colors><indexedColors> uit met alle 64 <rgbColor>-kinderen alleen wanneer ten minste één slot is overschreven; ongewijzigde slots vallen terug op het standaardpalet zodat bestanden die worden opgeslagen zonder wijzigingen schoon blijven. Open parseert het blok en laat stilzwijgend slots vallen waarvan de waarde overeenkomt met de standaard zodat round-trips minimaal blijven. Buiten-bereik-slottoewijzingen (< 0 of > 63) worden weggegooid in plaats van een fout te gooien
Versie 2.21.0
Toegevoegd
- Zes weergave-eigenschappen voor bladweergave toegevoegd aan TXLSXWorksheet. Zoom: Integer is het zoompercentage in de statusbalk van Excel (10..400, standaard 100; buiten-bereik-toewijzingen worden bijgesneden bij schrijven). DisplayGridLines / DisplayZeros: Boolean (standaard True) verbergen celrasterlijnen of renderen cellen met nulwaarde als leeg wanneer ingesteld op False. DisplayRightToLeft: Boolean (standaard False) schakelt het blad om naar RTL-indeling voor Arabisch/Hebreeuws/enz. StandardWidth / StandardHeight: Double stellen de standaard kolombreedte (Excel-tekeneenheden) / standaard rijhoogte (punten) in; 0 = niet ingesteld, in welk geval Excel zijn ingebouwde standaardwaarden 8,43/15 toepast. SaveAs zendt <sheetView showGridLines/showZeros/rightToLeft/zoomScale> en <sheetFormatPr defaultColWidth/defaultRowHeight> alleen uit wanneer de waarden afwijken van de Excel-standaardwaarden; Open parseert ze terug. De bestaande verwerking van bevroren deelvensters en tabblad-selectie op <sheetView> is ongewijzigd en deelt nu één enkele uitvoerder
Versie 2.20.7
Toegevoegd
- TStream-overloads toegevoegd aan TXLSXWorkbook voor in-memory serialisatie. Nieuwe invoerpunten: SaveAs(Stream: TStream) / SaveAs(Stream: TStream; FileFormat: TXLSXFileFormat) schrijven het volledige .xlsx-pakket naar de gegeven stream vanaf de huidige positie; Open(Stream: TStream) leest het terug. De aanroeper is eigenaar van de stream en moet deze vrijgeven. Nuttig voor HTTP-reacties, blob-opslag, in-memory-pijplijnen en eenheidstests die het lokale bestandssysteem omzeilen. De bestaande op bestanden gebaseerde SaveAs/Open-overloads zijn ongewijzigd en delegeren nu naar dezelfde interne schrijf-/leeshulpen
Versie 2.20.6
Toegevoegd
- Eigenschappen Hidden / Visible / Comment toegevoegd aan TXLSXDefinedName. Hidden wordt gekoppeld aan het OOXML-attribuut <definedName hidden="1"/> (standaard False / Visible=True; True verbergt de naam in Excel's Naammanager). Visible is een Boolean-alias (omgekeerde van Hidden) voor duidelijkere aanroepcode. Comment wordt gekoppeld aan <definedName comment="..."/>. SaveAs zendt beide attributen uit wanneer ze afwijken van de standaard; Open parseert ze terug. SheetIndex (de bestaande lokale scopebinding via localSheetId) is ongewijzigd
Versie 2.20.5
Toegevoegd
- Vijf extra lettertypekenmerken toegevoegd aan TXLSXFont. Nieuwe TXLSXFontVertAlign-enum (xlsxVertAlignBaseline / Superscript / Subscript) bestuurt de bestaande Excel-lettertypevakjes "Superscript"/"Subscript" via een enkele VertAlign-eigenschap (wederzijds exclusief in de UI). Nieuwe Boolean-eigenschappen OutlineFont en Shadow voor de overeenkomende Excel-lettertype-effecten. Nieuwe Integer Family (OOXML-lettertypefamilienummer: 1=Roman / 2=Swiss / 3=Modern / 4=Script / 5=Decorative; 0=niet ingesteld) en CharSet (GDI-tekensetnummer: 0=ANSI / 1=Standaard / 134=GB2312 / 136=ChineseBig5 / enz.; -1=niet ingesteld). SaveAs zendt de overeenkomende <vertAlign> / <outline/> / <shadow/> / <family> / <charset>-kinderen uit binnen <font>; Open parseert ze terug. ColorIndex/ThemeColor/TintAndShade worden uitgesteld naar de komende thema-mijlpaal
Versie 2.20.4
Toegevoegd
- Schakeleigenschappen voor diagonale randrichting toegevoegd. TXLSXBorder biedt nu DiagonalUp: Boolean en DiagonalDown: Boolean. De twee markeringen delen de stijl en kleur van de bestaande diagonale rand en bepalen welke diagonale richting(en) Excel rendert — alleen omhoog (linksonder naar rechtsboven), alleen omlaag (linksboven naar rechtsonder) of beide. SaveAs zendt diagonalUp/diagonalDown-attributen uit op het <border>-element wanneer ingesteld; Open parseert ze terug. Eerder schreef de engine één diagonale rand zonder richtingscontrole, zodat Excel nooit een diagonale lijn tekende
Versie 2.20.3
Toegevoegd
- Werkmap-Date1904-schakelaar toegevoegd. TXLSXWorkbook biedt nu een Date1904: Boolean-eigenschap die kiest tussen het Windows 1900-tijdperk (standaard; overeenkomstig Excel voor Windows) en het Mac 1904-tijdperk (verouderd Excel voor Mac). SaveAs zendt <workbookPr date1904="1"/> uit in xl/workbook.xml wanneer ingesteld; Open leest het terug. De markering is alleen metadata — de engine transformeert opgeslagen seriële nummers niet; aanroepers moeten Date1904 instellen vóór het toewijzen van TDateTime-celwaarden zodat de round-trip in de juiste kalender terechtkomt
Versie 2.20.2
Toegevoegd
- Ondersteuning voor AutoFilter-criteria per kolom toegevoegd. Nieuwe typen: TXLSXAutoFilterOp-enum (Equal / NotEqual / GreaterThan / LessThan / GreaterOrEqual / LessOrEqual), klasse TXLSXAutoFilterColumn (ColId + 1 of 2 criteria + AND/OR-verbinding), verzameling TXLSXAutoFilterColumns. TXLSXWorksheet biedt de eigenschap AutoFilterColumns en de gemaksmethoden AddAutoFilterColumn(ColId, Op, Criteria) / AddAutoFilterColumn(ColId, Op1, Criteria1, Op2, Criteria2, AndConnector) / ClearAutoFilterColumns. SaveAs breidt het bestaande <autoFilter ref="..."/> uit tot een reeks <filterColumn colId=N><customFilters and=0|1><customFilter operator="..." val="..."/>...</customFilters></filterColumn> per kolom wanneer criteria zijn ingesteld; Open parseert dezelfde structuur terug. Eerder sloeg de engine alleen het autofilter-bereik (sqref) op en toonde Excel lege filtervervolgkeuzelijsten
Versie 2.20.1
Toegevoegd
- Ondersteuning voor handmatige pagina-einden toegevoegd aan TXLSXWorksheet. Nieuwe invoerpunten: AddRowBreak(BeforeRow) / AddColBreak(BeforeCol) om een horizontaal of verticaal pagina-einde in te voegen vóór een gegeven rij/kolom (Excel UI "Vóór"-semantiek — rij N begint een nieuwe pagina). HasRowBreak / HasColBreak controleert; RemoveRowBreak / RemoveColBreak verwijdert een enkele vermelding; ClearRowBreaks / ClearColBreaks / ClearAllPageBreaks wist alles in bulk. RowBreakCount / ColBreakCount + geïndexeerde RowBreaks(Index) / ColBreaks(Index) bieden toegang tot de opgeslagen 1-gebaseerde "Vóór"-indices voor iteratie. SaveAs zendt <rowBreaks> / <colBreaks> uit met <brk id="N-1" max="..." man="1"/>-kinderen tussen <headerFooter> en <drawing>; Open parseert ze terug
Versie 2.20.0
Toegevoegd
- Bladzichtbaarheid (Hidden / VeryHidden), per-blad-selectie en bijhouden van het actieve blad toegevoegd aan TXLSXWorkbook / TXLSXSheets / TXLSXWorksheet. Nieuwe typen: TXLSXSheetVisibility-enum (xlsxSheetVisible / xlsxSheetHidden / xlsxSheetVeryHidden). Nieuwe TXLSXWorksheet-eigenschappen: Visibility, Visible (Boolean-alias), IsSelected (alleen-lezen). Nieuwe TXLSXSheets-leden: ActiveIndex, Activate(Index), Move(FromIndex, ToIndex). Nieuwe proxy TXLSXWorkbook.ActiveSheet. SaveAs zendt <sheet state="..."/> uit op de bladvermeldingen van de werkmap, <bookViews><workbookView activeTab=N/></bookViews> wanneer het actieve blad niet de standaard 0 is, en tabSelected="1" op de <sheetView> van het actieve blad; Open parseert alle drie terug naar de nieuwe eigenschappen. Het eerste toegevoegde blad wordt standaard zowel zichtbaar als actief zodat bestaande aanroepsites blijven werken
Versie 2.19.2
Toegevoegd
- Vier extra PageSetup-attribuutschakelaars toegevoegd aan TXLSXWorksheet om de OOXML <pageSetup>-dekking te voltooien: BlackAndWhite (zwart-witrendering), Draft (afbeeldingen onderdrukken voor snellere voorbeeldweergave), PrintNotes (celopmerkingen afdrukken zoals weergegeven in plaats van verbergen) en PrintOverThenDown (eerst rijen van links naar rechts in plaats van de standaard kolommen van boven naar beneden). SaveAs zendt de overeenkomende blackAndWhite/draft/cellComments/pageOrder-attributen uit; Open parseert ze terug. Standaarden blijven uitgeschakeld zodat ongewijzigde werkbladen geen extra attributen krijgen