Note de lansare HotXLS
Istoricul versiunilor HotXLS pentru funcționalități vizibile utilizatorului, remedieri, îmbunătățiri XLS/XLSX, actualizări de export, modificări de compatibilitate și actualizări de documentație
Cea mai recentă lansare
- Ultima versiune: 2.229.0; Data lansării: 2026-08-03
Versiune 2.229.0
Adăugat
TXLSXWorksheet.HeaderFooterImagescreează, găsește, înlocuiește și elimin acum sloturi de imagine tipizate pentru fiecare poziție stângă, centru și dreapta a antetului sau subsolului pe paginile impare, pare și prima pagină- Imaginile de antet și subsol expun datele brute, formatul, titlul, dimensiunile în puncte și marginile în puncte, cu încărcare directă din fișiere PNG, JPEG, GIF, BMP, EMF și WMF
Modificat
- Imaginile pentru paginile pare și prima pagină activează automat variantele de pagină corespunzătoare și mențin codurile de câmp pentru imagine necesare atunci când se editează textul din antet sau subsol
Remediat
- Comentariile foii de lucru și imaginile de antet sau subsol păstrează acum relații VML independente atunci când împart aceeași foaie de lucru
- Sloturile de imagine de antet și subsol create de Excel păstrează acum octeții de imagine, formatele, titlurile, dimensiunile, marginile și relațiile prin cicluri de deschidere și salvare
Versiune 2.228.0
Adăugat
- Foile de calcul XLS clasice și colecțiile de forme creează și descoperă acum controale tipizate
TXLSButtonșiTXLSRadioButtonalături de casete de selectare, casete combinate și casete listă - Controalele de formular expun acum nume de macrocomenzi, celule legate, intervale de intrare, stări de selectare, aspect plat sau 3D și legături de grup radio prin proprietăți tipizate
- Numele definite expun
IsMacro, astfel încât legările de macrocomenzi păstrează metadatele necesare ale numelui registrului de lucru
Remediat
- Editarea și resalvarea controalelor de formular clasice nu mai elimină stări de selectare, legări de macrocomenzi, formule de celule legate, intervale sursă sau metadate de grup radio acceptate
- Ștergerea unui interval sursă de casetă combo sau casetă listă elimină acum formula de intrare serializată în loc să restaureze intervalul anterior la următoarea deschidere
Versiune 2.227.0
Adăugat
LINESTșiLOGESTreturnează acum matrice complete de coeficienți multivariabili și matrice statistice opționale pe cinci rânduriTRENDșiGROWTHreturnează acum matrice de predicție modelate pentru intrări cu o singură variabilă și multivariabile
Modificat
- Aritmetica de matrice, comparațiile, concatenarea, negarea unară și operațiile procentuale difuzează acum scalari și rânduri sau coloane singleton, păstrând rezultatele per celulă
- Dependențele de calcul extind acum numele imbricate de registre de lucru și foi de calcul, numele definite prin formule și referințele multi-zonă cu protecție de ciclu conștientă de domeniul de aplicare
Remediat
- O eroare într-un element de matrice nu mai prăbușește rezultatul complet și nu revine incorect la evaluarea scalară
- Numele definite prin formule ale căror dependențe pot fi rezolvate static nu mai forțează un recalculare completă volatilă inutilă
Versiune 2.226.0
Adăugat
- Cache-urile pivot XLSX existente și vizualizările de tabele pivot se încarcă acum în modelul tipizat prin relații de pachet, inclusiv înregistrări de cache, câmpuri, elemente partajate, grupare, filtre, formate, definiții calculate și extensii
TXLSPivotTable.Makeevaluează acum câmpurile de cache calculate, elementele calculate și membrii de date calculați cu legare de nume conștientă de dependențe- Modurile
ShowDataAsextinse adaugă procente părintești, procente cumulative și rang crescător sau descrescător cu marcare de extensie XLSX validă
Modificat
- Generarea rezultatelor pivot aplică acum vizibilitatea elementelor, selecțiile de pagină și filtrele de legendă, dată, agregare și valoare înainte de construirea domeniilor grupate
- Grupurile numerice, de dată și discrete, sortarea după etichetă sau valoare de date, subtotalurile configurate și rândurile sau coloanele de total general materializate opțional participă acum la generarea rezultatelor
Remediat
- Filtrele pivot folosesc acum marcare de filtru de nivel rădăcină validă pentru schemă și tipuri de filtru simbolice în loc de valori numerice ambigue
- Încărcarea condusă de relații nu mai presupune nume convenționale sau secvențiale de părți de cache pivot, înregistrări de cache sau tabele pivot
Versiune 2.225.0
Adăugat
TXLSXWorkbook.ConnectionsșiTXLSXWorksheet.QueryTablesoferă acum crearea și editarea tipizate pentru metadatele bazelor de date externe, web, text și ale rezultatelor interogărilor- Parametrii conexiunii își păstrează tipul exact Boolean, întreg, în virgulă mobilă, șir sau referință de celulă, inclusiv valorile explicite zero, false și șir gol
Modificat
- Deschiderea și salvarea XLSX rezolvă și scriu acum componentele conexiunilor și ale tabelelor de interogare prin relațiile care le dețin, sincronizează tabelele de rezultate și numele definite și păstrează atributele, nodurile copil și listele de extensii necunoscute
- Editările de rânduri și coloane mențin aliniate intervalele rezultatelor interogărilor, în timp ce copierea foilor de lucru în același registru și între registre păstrează proprietatea interogărilor și remapează identificatorii conexiunilor și numele aflate în conflict
Remediat
- Tabelele de interogare pot coexista cu tabele standard, comentarii înfiripate și tabele pivot fără coliziuni ale identificatorilor de relații ale foii sau registrului de lucru
Versiune 2.224.0
Adăugat
- Foi de calcul XLS clasice și foi de calcul XLSX moderne expun acum
AddDataTableșiDataTablespentru tabele de date What-If cu o variabilă pe rând, o variabilă pe coloană și două variabile
Modificat
- Recalcularea registru de lucru evaluează fiecare rezultat al tabelei de date cu un context de intrare izolat, incluzând dependențele indirecte de formule, și păstrează definițiile plus rezultatele memorate în cache prin deschidere, salvare, copierea foii de calcul și editări structurale pe rânduri sau coloane
Remediat
- Celulele de intrare What-If șterse produc acum rezultate
#REF!, iar recalcularea clasică a registrului de lucru vizitează fiecare foaie de calcul în loc să omite prima foaie - Inserarea rândurilor în partea superioară a unei foi de calcul clasice nu mai riscă o încălcare a accesului pe Win64
Versiune 2.223.0
Modificat
- Anularea cititorului direct paralel se propagă acum prin citirile active ale membrilor ZIP și prin fiecare etapă de decomprimare în loc să aștepte următoarea extragere XML
Remediat
- Abortarea unei scanări paralele a foii de calcul nu mai așteaptă finalizarea unei citiri XML comprimate mari înainte ca lucrătorii blocați să fie eliberați
Versiune 2.222.0
Adăugat
TXLSDirectReader.ParallelBufferMemoryLimitlimitează încărcarea utilă agregată a cozii de celule brute pentru scanarea paralelă a foii de calcul, în timp ceParallelPeakBufferedBytesexpune vârful măsurat pentru diagnosticare și teste de capacitate
Modificat
- Citirile directe paralele transmit acum intrările ZIP ale foii de calcul în cititoare XML locale lucrătorului și în cozi limitate producător-consumator în loc să rețină XML-ul complet decomprimat al foii de calcul și memoirele tampon complete de celule pe foaie
- Foiile de calcul active primesc bugete de coadă independente și sunt procesate în ferestre de dimensiunea lucrătorului, păstrând ordinea apelurilor inverse fără a permite foilor ulterioare să înfometeze foaia de calcul în curs de emitere
Remediat
- Abortările celulelor, eșecurile de apel invers și erorile lucrătorului trezesc acum producătorii și consumatorii blocați, opresc cooperativ extragerile XML, unesc toți lucrătorii și lasă cititorul direct reutilizabil
Versiune 2.221.0
Modificat
- Deschiderea XLSX cu mai multe foi transmite acum fiecare intrare ZIP a foii de calcul direct în decompressoarea și cititorul XML locale lucrătorului în loc să rețină XML-ul decomprimat al foii de calcul înainte de analiză
- Cititoarele simultane de foi de calcul serializează doar citiri scurte poziționate din sursa pachetului, astfel încât decomprimarea și analiza XML rămân paralele în timp ce memoria de intrare tranzitorie a foii de calcul este limitată de numărul de lucrători activi
Versiune 2.220.0
Adăugat
- Generarea rezultatelor tabelului pivot execută acum toate cele nouă moduri clasice
ShowDataAs, inclusiv diferență, procent dintr-un element de bază, diferență procentuală, total rulantic, procent din rând, procent din coloană, procent din total și calcule de index xlPivotBaseItemPreviousșixlPivotBaseItemNextoferă selectori tipizați pentru elementele de bază adiacente în calculele de comparație
Modificat
- Procentajele pivot și valorile index folosesc subtotaluri pe rând, coloană și totaluri generale agregate direct din înregistrările sursă, păstrând semantica corectă de medie, produs, numărare, varianță și deviație standard fără rescanarea sursei
- Totalurile rulante urmează ordinea elementelor pivot, se resetează independent pentru fiecare grup de omologi și păstrează stocarea rară a rezultatelor pentru pivoturi de cardinalitate ridicată
Remediat
- Înregistrările BIFF8
SXDIfolosesc acum dispunerea fixă standard de 14 octeți și păstreazăShowDataAs, câmpul de bază, elementul de bază, formatul numeric și numele de afișare prin citiri tipizate, în timp ce înregistrările HotXLS moștenite rămân lizibile - Câmpurile de date XLSX scriu acum indexuri de câmp pivot, mapează selectorii anterior și următor la valorile OOXML necesare și emit atribute de bază doar pentru modurile care le folosesc
- Celulele de comparație lipsă rămân necompletate, în timp ce numitorii zero prezenți returnează
#DIV/0!în loc să fie confundați cu date lipsă
Versiune 2.219.0
Remediat
VDBaplică acum amortizarea descendentă pe perioade fracționale, trece la amortizarea liniară când este avantajos și respectăno_switch- Factorii zero, limitele valorii reziduale, perioadele de început fracționale și intervalele de perioadă nevalide urmează acum rezultate compatibile cu Excel în loc să rotunjească perioadele și să returneze o aproximare simplificată a soldului descendent
Versiune 2.218.0
Adăugat
TXLSXWorksheet.Scenariosoferă acum crearea tipizată a Managerului de scenarii What-If cu scenarii denumite, indici activi și afișați, intervale de celule variabile, metadate de utilizator și comentariu, stări blocate și ascunse și valori proprii ale celulelor de intrare- Definițiile scenariilor urmează acum copiile foilor de lucru și editările structurale pe rânduri sau coloane, în timp ce limitele de compatibilitate Excel sunt validate înainte ca metadate nevalide să poată fi scrise
Remediat
- Deschiderea și salvarea scenariilor create în Excel păstrează acum atributele rădăcină și celulele de intrare imbricate în loc să aplatizeze ierarhia în XML brut cu pierderi
- Elementele de foaie de lucru pentru scenarii, AutoFiltru, consolidare de date, celule îmbinate și fonetice folosesc acum ordinea schemei, astfel încât consumatorii stricți de foi de calcul să nu necesite o trecere de reparare
Versiune 2.217.0
Adăugat
TXLSXWorksheet.IgnoredErrorsoferă acum crearea tipizată pentru fiecare categorie standard de erori ignorate, cu referințe multi-zonă, suport pentru copierea foilor de calcul, actualizări de editare structurală și cicluri de deschidere/salvareTXLSXWorkbookexpune acum modul de referință, recalcularea la salvare, precizia completă, calculul concurent și setările de concurență manuală alături de opțiunile sale de calcul existente
Remediat
- Fiecare setare de calcul a registrului de lucru non-implicit produce acum independent și păstrează într-un ciclu dus-întors un element
calcPrordonat după schemă, inclusiv limitele de iterație configurate înainte de activarea iterației - Modurile de calcul, modurile de referință, limitele de iterație, identificatorii de calcul și numărătoarele de concurență manuală resping acum sau normalizează valorile nevalide în loc să scrie o stare ambiguă a registrului de lucru
Versiune 2.216.0
Modificat
XMATCHșiXLOOKUPexecută acum căutări binare logaritmice ascendente sau descendente atunci când sunt solicitate, inclusiv limite compatibile cu Excel pentru duplicate și potriviri aproximativeXIRRrespectă acum estimarea inițială cu un rezolvator protejat care poate găsi rădăcini înalte și sensibile la estimare, în timp ceXNPVfolosește o sumă compensată și intrări validate pentru date și rată- Căutarea numelor definite XLSX cu cardinalitate mare folosește acum un index hash leneș, conștient de domeniu, păstrând ordinea serializată, precedența numelui local și comportamentul primei potriviri
- Părțile de pachet XLSX păstrate își alocă acum dimensiunea necomprimată declarată o singură dată, păstrând verificarea completă a lungimii și CRC
Remediat
- Modurile de căutare invalide, căutările binare cu metacaractere, intervalele de căutare bidimensionale și vectorii de retur
XLOOKUPnepotriviți raportează acum erori de formulă în loc să producă rezultate ambigue XIRRșiXNPVresping acum semne de flux monetar invalide, rate, estimări și date, trunchează seriile fracționale de date și raportează neconvergența în loc să returneze un punct intermediar neverificat
Versiune 2.215.0
Adăugat
FREQUENCYreturnează acum o matrice verticală cu un rezultat per interval plus intervalul de depășire
Modificat
SORTfolosește acum o ordonare stabilă și scalabilă pentru rânduri sau coloane, păstrând ordinea sursă a cheilor egaleUNIQUEfolosește acum potrivire indexată hash stabilă pentru rânduri sau coloane, inclusiv rezultateexactly_onceși text insensibil la majusculePERCENTRANK.INC,PERCENTRANK.EXCșiMODE.MULTse scalează acum eficient pe intrări cu cardinalitate mare în loc să se bazeze pe scanări pătratice
Remediat
- Opțiunea
by_colaSORTșiUNIQUEoperează acum pe coloane în loc să revină la comportamentul pe rânduri
Versiune 2.214.0
Adăugat
- Deschiderea XLSX acceptă acum părți XML streaming UTF-16 little-endian și big-endian cu marcă de ordine a octeților sau declarația specifică endian necesară, inclusiv caractere în afara Planului Multilingv de Bază
Modificat
- Reîmprospătările cache-ului PivotTable cu cardinalitate mare folosesc acum index hash determinist pentru valori partajate și alocă matricea de înregistrări o singură dată, păstrând ordinea elementelor văzute primele, evitând căutările liniare repetate și creșterea rând cu rând
- Citirile directe proiectate renunță la celulele din afara rândurilor și coloanelor selectate înainte de a copia valori brute, formule și text formatat în buffere per-foaie
Remediat
- XML-ul malformat cu mărci de ordine a octeților duplicate, declarații de codare nesuportate sau contradictorii, semnături UTF-32, lungimi impare de octeți UTF-16 sau perechi de substituenți invalide este acum respins
- Lucrătororii de citire directă paralelă inițializează acum toată starea lucrării înainte de pornire, nu mai preiau lucrări noi de foaie după o eroare, ridică din nou determinist eroarea lucrării cu indexul cel mai mic și curăță fiecare lucrător creat dacă construirea pool-ului eșuează
Versiune 2.213.0
Adăugat
T.TESTevaluează acum eșantioane independente fie cu varianță egală cumulată, fie cu varianță inegală Welch, pe lângă eșantioane perechi, inclusiv probabilități unilaterale și bilaterale
Modificat
- Deschiderea XLSX urmărește acum țintele de relație ale registrului de lucru, foii de calcul și desenului pentru foi de calcul, șiruri partajate, stiluri, teme, macrocomenzi, legături externe, comentarii, comentarii înfiripate, VML, desene, imagini, grafice, tabele și PivotTable-uri, inclusiv pachete valide care folosesc căi de parte redenumite sau necontigue
Remediat
- Pachetele malformate cu identificatori de relație duplicați nu mai permit unei relații ulterioare nesuportate să înlocuiască prima țintă utilizabilă în timpul recuperării de compatibilitate
Versiune 2.212.0
Modificat
- Urmărirea dependențelor formulor se scalează acum mai bine pe foi de calcul mari prin indexarea dependențelor de celule și intervale înainte de reconstrucții și invalidarea celulelor murdare
- Formulele statistice și de regresie mari evaluează acum fiecare valoare numerică din intervalele furnizate în loc să se oprească la buffer-ul anterior de dimensiune fixă
Remediat
- Celulele XLSX din afara grilei foii de calcul sunt respinse consecvent astfel încât coordonatele invalide nu mai pot aliasa celule valide
- Editarea formulor nu mai resetează modul de calcul al registrului de lucru, limitele de iterație, indicatoarele de calcul complet sau alte setări de calcul
- Citirile listei de blob validează acum explicit intervalele solicitate și permit felii goale valide la sfârșitul fluxului
Securitate
- Criptarea XLS clasică acoperă acum fluxurile cache-ului pivot pe lângă datele foii de calcul
- Cozile de extensie SST malformate și înregistrările directorului central ZIP sunt respinse înainte ca o alocare supradimensionată, citiri trunchiate sau înregistrări de director false încorporate în comentarii să poată afecta încărcarea
Versiune 2.211.0
Adăugat
TXLSPivotTable.Makematerializează acum fiecare câmp de date configurat cu propria agregare și extinde valorile pe rânduri sau coloane conformDataFieldAxisIsRow
Modificat
- Generarea rezultatelor pivot reutilizează domeniile de chei de rând și coloană indexate hash pe toate câmpurile de date, selectează stocarea acumulatorului densă sau rară în funcție de forma rezultatului, păstrează ordinea elementelor cache dincolo de nouă chei și emite etichete combinate lizibile pentru axele cu mai multe câmpuri
Remediat
Countinclude acum valori de cache text nevid, booleene, de eroare, dată și numerice, în timp ceCountNumsinclude doar valori numerice și de dată,Productreturnează zero pentru intersecții fără valori numerice, celulele goale nu mai sunt numărate ca intrări, iar pivoturile doar cu valori își pot materializa totalurile generale fără câmpuri de rând sau coloană
Versiune 2.210.0
Adăugat
TXLSWorkbookViewerrandează acum umpluturi condiționale XLSX, culoarea și accentuarea fontului, formatele numerice, barele de date direcționale pozitive și negative, gradientele, marginile, axele, valorile ascunse și toate familiile de seturi de pictograme integrateTXLSWorkbookViewer.RefreshConditionalFormatsreconstruiește starea agregată pregătită și a pragurilor după ce apelanții modifică un registru de lucru XLSX atașat pe loc
Modificat
- Vizualizatorul cache-ează un evaluator de formatare condiționată pregătit per foaie de calcul activă, îl reutilizează între operațiuni de derulare, selecție și reincidentare și îl eliberează când registrul de lucru sau foaia de calcul se schimbă
Remediat
- Axele barelor de date la limita din extrema dreaptă sunt acum decupate în interiorul celulei care le deține în loc să fie desenate în celula adiacentă
Versiune 2.209.0
Adăugat
- Foile de calcul XLSX expun acum un evaluator de formatare condiționată pregătit care rezolvă prioritatea regulii,
StopIfTrue, formulele relative, stilurile diferențiale, clasamentul Sus/Jos, testele deasupra/sub-mediei, valorile duplicate și unice, perioadele de date relative, scările cu două și trei culori, barele de date și seturile de pictograme pentru orice celulă
Modificat
- Exporturile HTML și PDF randează acum umpleri condiționate potrivite, accentuarea și culoarea fontului, formatele numerice, scările de culoare, barele de date direcționale pozitive și negative, axele explicite, glifele de familie de pictograme, valorile ascunse și culorile temei cu rezoluție de nuanță
- Domeniile mari de formatare condiționată reutilizează acum formulele relative compilate fără alocare de arbore de sintaxă per celulă, fluxează statisticile de medie, deviație, minim și maxim, păstrează valorile ordonate doar pentru regulile de clasament sau percentile, sortează în lot cheile duplicate Unicode și folosesc indecșii candidați pe benzi de rând pentru a evita scanarea regulilor neînrudite
Remediat
- Regulile clasice condiționale încarcă acum corect tipurile de expresie și evaluează consecvent inversări între limite, predicate de text insensibile la majuscule, celule goale și predicate de eroare
Versiune 2.208.0
Modificat
- Motorul de stocare compactă de celule scrie acum încărcături native etichetate de șir, Boolean, eroare și gol, iterează celulele în ordine pe rânduri și codifică prin run-length celule consecutive de tip egal pentru un consum de memorie mai mic și o ieșire secvențială mai rapidă
- Șirurile partajate clasice ale registrului de lucru păstrează acum octeții de caractere într-o singură alocare și creează valorile de șir decodate leneș, reducând supraîncărcarea de alocare pentru tabele mari de șiruri unice
Adăugat
- Tabelele pivot pot acum calcula o matrice completă de rezultate din înregistrările cache cu gruparea cheilor de rând și coloană și toate cele 11 funcții de agregare suportate
- Graficele clasice de registru de lucru expun acum informații tipizate despre serii, axe, legendă și grup de grafic pentru fluxurile de conversie și inspectare
Versiune 2.207.0
Adăugat
TXLSPivotCache.RefreshFromSourceconstruiește un cache pivot dintr-un interval de foaie de calcul sursă: citește rândul de antet pentru a numi câmpurile, distilează valorile distincte ale fiecărui rând de date în domeniul de elemente partajate per câmp, blochează tipul câmpului din prima valoare nevidă și înregistrează indexul elementului partajat pentru fiecare (înregistrare, câmp) — astfel încât un tabel pivot poate fi creat programatic dintr-un interval de date în loc să se bazeze perefreshOnLoadal Excel. Un cititor de valori bazat pe callback păstrează unitatea pivot liberă de o dependență directă de foaia de calcul
Versiune 2.206.0
Adăugat
- Noul
TlxCellMMU(unitatealxCellMMU) implementează un motor de stocare compactă de celule pe rânduri cu codificare run-length a secvențelor de celule de tip egal și goale și un cod de tip pe octet etichetat care servește și ca selector al lățimii datelor — astfel încât o coloană de întregi mici costă un octet per celulă în loc de opt. Motorul codifică numerele în cea mai mică lățime care păstrează valoarea (întregi scalati int8 / int16 / int32 / cu 2 zecimale / cu 4 zecimale / IEEE double), stochează compact celule cu index de șir, booleene, de eroare și goale și expune o APIGetValue/SetNumber/SetStringplus un iterator înainte. Acesta este backend-ul de generație următoare, în spatele unui fanion de funcționalitate pentru API-ulTXLSXCellsexistent, vizând o reducere de 10–25× a setului de lucru pe foi dense
Versiune 2.205.0
Adăugat
TXLSCustomChart.GetChartInfodecodifică acum un rezumat semantic din fluxul brut de înregistrări de grafic BIFF — familia de tip de grafic (bară, linie, plăcintă, arie, dispersie, radar, gogoașă, suprafață, bule), numărul de serii și prezența legendei — astfel încât tipul unui grafic BIFF poate fi interogat programatic, iar o conversie de grafic BIGH-în-XLSX poate alege familia țintă corectă. Stocarea cu pasare de octeți care garantează fidelitatea ciclului complet rămâne neschimbată
Versiune 2.204.0
Modificat
- Tabelul clasic de șiruri partajate
.xlsscrie acum șirurile doar-ASCII în codarea Latin-1 comprimată ([MS-XLS] §2.5.294fHighByte=0, un octet per caracter) în loc să folosească mereu UTF-16, reducând aproximativ la jumătate dimensiunea SST — și deci a fișierului.xls— pentru registre de lucru încărcate cu ASCII
Versiune 2.203.0
Adăugat
- Noul
TlxCompoundFilecitește și scrie formatul de container Compound File Binary (OLE2) direct în Pascal pur, fără nicio dependență deole32.dll/ COMIStorage— deschizând ușa către gestionarea.xlsîn memorie și pe platforme multiple. Cititorul acoperă dispunerea v3 pe care HotXLS o întâlnește în practică (antet + DIFAT în antet + parcurgerea lanțului FAT + MiniFAT și mini-fluxul pentru fluxuri sub 4096 octeți + arborele de directoare); scriitorul emite un container v3 minim dar valid, suficient pentru ieșirea HotXLS
Versiune 2.202.0
Adăugat
- Starea de sortare a autofiltrului are acum un model tipizat (
TXLSXSortStatecu copiiTXLSXSortCondition) care acoperă sortarea după valoare / culoare de celulă / culoare font / pictogramă, metoda de sortare (niciuna / stroke / pinYin), sensibilitatea la majuscule, sortarea pe coloane și listele personalizate per condiție — astfel încât aplicațiile pot construi stări de sortare programatic în loc să editeze XML brut, în timp ce pasarea legacy opacăSortStateXmlcâștigă încă pentru fișiere pe care HotXLS nu le-a creat - Filtrele dinamice sunt acum citite și scrise ca un
TXLSXDynamicFilterTypetipizat (deasupra/sub medie și deviație standard, astăzi/ieri/mâine, această/ultima/următoarea săptămână, lună, trimestru și an, de la începutul anului, T1–T4, L1–L12) cu limite opționaleval/maxVal— deschiderea unui registru de lucru care folosește un filtru dinamic nu îl mai pierde la salvare
Versiune 2.201.0
Adăugat
- Graficele de suprafață și suprafață 3D (
xlsxChartSurface/xlsxChartSurface3D) sunt acum tipuri de grafice de prim rang — scrise, citite și parcursă ciclul complet ca și celelalte familii de grafice - API-ul de creare a autoshape-urilor acoperă un subansamblul practic din lista de geometrii OOXML predefinite — triunghiuri, romburi, paralelograme, hexagoane, octogoane, săgeți, blindaje, apeluri, noduri de organigramă, stele, inimi, soare, lună, paranteze și acolade — fiecare mapând la jetonul său corect
prstși identificatorul de formă[MS-ODRAW], astfel încât formele create se randează corect în Excel (lista completă de 187 de predefinite era deja păstrată la ciclul complet prin pasare raw-anchor)
Versiune 2.200.0
Remediat
- Deschiderea unui registru de lucru al cărui autofiltru folosește un filtru de culoare sau un filtru de pictogramă nu mai pierde acel filtru la salvare —
colorFilterșiiconFiltersunt acum citite în coloane tipizate (TXLSXAutoFilterColumn.SetColorFilter/SetIconFilter) și reemise textual, în loc să se piardă ca fii necunoscuți ai coloanei de filtru
Versiune 2.199.0
Adăugat
TCondFormatRule.Evaluaterăspunde dacă o regulă de formatare condiționată se declanșează pentru o celulă dată, acoperind comparații de valoare a celulei, expresii de formulă, text conține/începe/se termină, reguli de goluri și de eroare — fundamentul pentru interogarea căror celule o regulă le evidențiază curent și pentru randarea rezultatelor CF în afara Excel
Modificat
FACTși ajutoarele interne de factorial folosesc acum un tabel precalculat 0!..170! în loc să recalculeze un produs O(n) la fiecare apel, accelerândFACT, coeficienții multinomiali și căile de distribuție Poisson/Binomial/chi-pătrat
Versiune 2.198.0
Modificat
- Salvarea unei foi de calcul grupează acum celulele în rânduri cu o singură trecere numără-și-umple în loc să crească indexul fiecărui rând cu o realocare-per-celulă, eliminând o copiere ascunsă O(celule × celule-pe-rând) pe foi mari
- Graful de dependențe de formule își indexează acum intervalele de referință după (foaie, rând), astfel încât însămânțarea unei celule murdare caută binar banda candidat în loc să scaneze fiecare formulă la fiecare celulă modificată — cu cât registrul de lucru este mai mare și cu cât are mai multe foi, cu atât accelerarea este mai mare la recalculare
- Parcurgerea celulelor pe rânduri, sortate pe coloane, este acum expusă ca
TXLSXWorksheet.BuildRowMajorCellOrder, astfel încât salvarea, clipboard-ul, autofiltrul și alți consumatori ordonați pe rânduri partajază o singură parcurgere în loc să o rederive
Versiune 2.197.0
Remediat
- Graficele radar, bursiere și pie-of-pie/bar-of-pie nu se mai pierd atunci când un registru de lucru
.xlsxcare le conține este deschis și resalvat — cititorul de grafice recunoaște acum elementele containerc:radarChart,c:stockChartșic:ofPieChartpe care le scrie deja, restabilind acoperirea simetrică de citire/scriere SUBTOTALcu coduri de funcție 101–111 exclude acum valorile de pe rânduri ascunse, iarAGGREGATErespectă acum codurile sale de opțiune de ignorare-rând-ascuns (2, 3, 6, 7), potrivind Excel în loc să trateze identic variantele includ-ascuns și ignoră-ascuns- Apelarea unei funcții integrate cu aritate fixă cu mai multe argumente decât cele declarate (de exemplu
=SIN(1,2)) ridică acum#VALUE!central în loc să fie acceptată de dispatcher
Versiune 2.196.0
Remediat
- Inserarea sau ștergerea de rânduri și coloane partiționează acum formatele condiționate de valoare de celulă și expresie plus validările de date atunci când zonele țintă editate necesită ancore de formulă relative diferite, păstrând setările regulii, atribuind priorități unice de formatare condiționată și menținând intacte domeniile agregate de formatare condiționată
Versiune 2.195.2
Modificat
- Exportul PDF subscrie acum fontul TrueType încorporat prin API-ul Windows
fontsub.dllCreateFontPackage, păstrând doar glifele pe care documentul le-a randat efectiv în loc să încorporeze întregul.ttf— reducând de obicei PDF-ul de 8–20× pentru foi încărcate cu Unicode; revine la încorporarea completă când subscrierea nu este disponibilă
Versiune 2.195.1
Remediat
- Inserarea sau ștergerea de rânduri și coloane pe motorul clasic
.xlsrescrie acum fiecare referință de formulă afectată (formule de celulă și nume definite) pentru a se potrivi cu semantica Excel — referințele de sub o inserare se deplasează, referințele complet în interiorul unei ștergeri devin#REF!, iar zonele suprapuse parțial se micșorează — în loc să lase coordonate învechite
Versiune 2.195.0
Modificat
- Ștergerea coloanelor de tabel convertește acum fiecare jeton de referință structurată afectat în
#REF!prin formulele de foaie de calcul, formulele de tabel, numele definite și seriile de grafic, păstrând referințele neînrudite și literele de șir
Remediat
- Ștergerea unui tabel întreg nu mai lasă referințe structurate calificate să indice un tabel care nu mai există
- Validările de date clonate păstrează acum modul lor de intrare IME
Versiune 2.194.0
Modificat
- Editările de rânduri și coloane păstrează acum identificatorii coloanelor de tabel Excel, numele, formulele calculate, formulele de totaluri, coloanele de filtru, intervalele de filtru și condițiile de sortare aliniate cu tabelul editat
Remediat
- Formulele de formatare condiționată și de validare a datelor rebasează acum referințele relative și mixte atunci când ștergerea le elimină prima zonă țintă
- Stările de sortare ale foii de calcul și tabelului scriu acum atribute valide și renunță la condițiile ale căror intervale au fost șterse
Versiune 2.193.0
Modificat
- Editările de rânduri și coloane actualizează acum formulele complexe și de domeniu încrucișat de nume definite, intervalele de date ale graficelor bule și pragurile de formatare condiționată vizuală bazate pe formule
- Graficele bule și de dispersie își restaurează acum intervalele de serii pentru axa X, axa Y și dimensiunea bulei la redeschidere
Remediat
- Țintele multi-zonă de formatare condiționată și validare a datelor deplasează acum fiecare zonă supraviețuitoare independent în loc să lase lista completă de ținte neschimbată
- Ancorele casetelor de text și WordArt se mută acum sau se redimensionează cu rândurile și coloanele inserate și șterse
Versiune 2.192.0
Adăugat
- Citirile directe streaming și parcurgerea prin cursor de rând pot opta acum pentru șiruri bogate structurate cu formatare completă a rulărilor, rulări fonetice și proprietăți fonetice, păstrând stocarea mărginită de șiruri partajate
TXLSDirectWriter.WriteRichStringscrie text formatat și fonetic ca șiruri inline sau ca șiruri partajate deduplicate
Modificat
- Deduplicarea șirurilor partajate bogate distinge acum formatarea rulărilor și metadatele fonetice, menținând interning-ul obișnuit de șiruri pe calea sa rapidă existentă
Remediat
- Textul fonetic din șirurile inline nu mai este inclus în valoarea afișată a celulei
Versiune 2.191.0
Adăugat
TXLSXRange.SetDynamicArrayFormulacreează acum formule de matrice dinamică native cu lanțul complet de metadate XLDAPR Excel
Modificat
- Rădăcinile de matrice dinamică partajează acum o înregistrare de metadate de registru de lucru deduplicată, iar copiile de foi de calcul sau de intervale între registre de lucru remapează acea înregistrare în registrul de lucru destinație
- Metadatele de matrice dinamică suportate rămân disponibile când păstrarea componentelor de pachet nesuportate este dezactivată, în timp ce metadatele de valoare neînrudite sunt încă eliminate
Remediat
- Celulele de revărsare (spill) ale matricei dinamice nu mai sunt modelate ca urmăritoare CSE legacy, iar înlocuirea sau ștergerea rădăcinii nu mai lasă indecși de metadate învechiți
- Eliminarea rădăcinii finale de matrice dinamică elimină acum partea de metadate neutilizată, relația registrului de lucru și intrarea de tip de conținut
Versiune 2.190.0
Modificat
- Citirile directe streaming și parcurgerea prin cursor de rând extind acum urmăritoarele de formulă partajată în formule complete relative la celulă, păstrând comportamentul de proiecție și de memorie mărginită
Remediat
- Registrele de lucru cu matrice dinamică păstrează acum indecșii de metadate de celulă și valoare, atributele de recalculare a formulei, relațiile pachetului de metadate și prefixele funcțiilor viitoare neschimbate în timpul ciclurilor de deschidere și salvare
- Dezactivarea păstrării componentelor nesuportate nu mai lasă indecși de metadate de foaie de calcul atârnați după eliminarea părții de metadate
Versiune 2.189.0
Adăugat
- Deschiderea registrelor de lucru XLSX extinde acum urmăritoarele de formulă partajată în formule complete per celulă cu referințe corecte relative, absolute, mixte, de interval și calificate cu foaie
Remediat
- Urmăritoarele de formulă partajată cu auto-închidere nu mai captează XML ulterior de valoare sau formulă, iar rezultatele lor stocate în cache supraviețuiesc ciclurilor de deschidere și salvare
- Formulele de matrice CSE își păstrează acum ancora și relațiile de urmăritor prin editări structurale de rând sau coloană, copieri de interval complet, duplicarea foii de calcul și copierile de foi între registre de lucru
- Atribuirea unei formule normale sau ștergerea unei celule elimină acum apartenența învechită la matricea CSE, astfel încât calculul nu poate fi redirecționat către o ancoră de matrice veche
- Copierea doar a unei părți a unei matrice CSE nu mai creează referințe de urmăritor atârnate în destinație
- Copierile de interval fac acum instantanee ale surselor suprapuse și deplasează referințele de formulă relative, prevenind suprascrierea celulelor sursă sau a ancorelor de matrice înainte de a fi copiate
- Editările de rând sau coloană care intersectează doar o parte a unei matrice CSE sunt respinse în loc să redimensioneze sau să detașeze silențios matricea
Versiune 2.188.0
Adăugat
TXLSDirectReader.SharedStringMemoryLimitlimitează memoria șirurilor partajate decodate și migrează automat tabelele mai mari către stocare indexată temporară de șters-la-închidere cu un cache de valori de dimensiune fixăTXLSRowCursor.SharedStringMemoryLimitexpune același control de stocare mărginită de șiruri partajate pentru parcurgere înainte pe rânduri
Modificat
- Parsarea directă a șirurilor partajate păstrează acum valorile doar-spațiu, CDATA, entitățile XML, caracterele non-BMP, elementele goale și ordinea rulărilor de text bogat, excludând textul ghid fonetic din valoarea afișată
Remediat
- Deschiderea registrelor de lucru XLSX păstrează acum fiecare element de șir partajat în ordinea documentului, prevenind prăbușirea textului duplicat sau a șirurilor bogate diferit formatate asupra indecșilor ulteriori de celule
- Salvarea registrelor de lucru XLSX deduplică acum șirurile bogate după limitele rulărilor și proprietățile de formatare în loc de doar textul vizibil, păstrând formatarea distinctă pentru celulele cu aceeași valoare afișată
Versiune 2.187.0
Adăugat
TXLSDirectReader.FirstRowșiLastRowrestrâng citirile streaming la un interval de rânduri bazat pe 1 și opresc parsarea foii de calcul după intervalul solicitatTXLSDirectReader.IncludeColumnșiClearColumnProjectionoferă proiecție de coloană în timp constant care sare peste celulele neselectate înainte de decodarea valorii și dispatch-ul callback-ului
Versiune 2.186.0
Adăugat
TXLSDirectWriter.UseSharedStringspoate deduplica textul repetat într-o parte OOXML de șiruri partajate cu numere totale și unice exacte, reducând dimensiunea pachetului pentru date cu repetiții multeTSimpleDomReaderoferă un arbore XML compact într-o singură trecere pentru interogări cu acces aleatoriu ale metadatelor registrului de lucru și ale componentelor de pachet, cu căutare QName sensibilă la majuscule și după nume local
Modificat
- Citirea directă XLSX folosește acum dispatch de elemente exacte asistat de hash, recoltare de atribute într-o singură trecere și căutare de coloană pe rând curent în timp constant, păstrând comportamentul de memorie streaming
- Generarea XML a șirurilor partajate folosește acum un buffer cu creștere liniară pentru a evita copierile repetate ale întregului șir pe tabele mari de șiruri distincte
Remediat
- Exportul CSV de formule nu mai adaugă un al doilea semn de egal atunci când textul formulei include deja unul
- Exportul PDF XLSX nu mai trunchează textul celulei folosind o estimare a numărului de caractere înainte de dispunere
- Hash-urile de nume ale cititorului XML urmăresc acum instrucțiunile de procesare, atributele și revin la elementele lor care le dețin fără a expune stare de element învechită
Versiune 2.185.1
Remediat
- Inserarea sau ștergerea de rânduri și coloane ajustează acum referințele de formulă locale și între foi exact o singură dată, păstrând numele funcțiilor și literele de text
Versiune 2.185.0
Adăugat
TXLSPDFExportoferă acum selecție de ieșireFirstPageșiLastPagebazată pe 1, unPageCountlogic complet și șase supraîncărcăriCalculatePageCountpentru intervale clasice și XLSX, foi de calcul și registre de lucru fără a construi obiecte de pagină PDFTXLSXWorkbook.SaveWorkbookAsHTMLpublică foile de calcul vizibile într-un singur document HTML navigabil cu ancore stabile per-foaie, titluri și nume de foi escapate și o opțiune de a include foi ascunse sau foarte ascunseTDataToXLS.BeforeRecordpoate sări înregistrări înainte de ieșirea pe rând, iarBeforeValuepoate transforma sau suprima valori de câmp cu context de set de date, nivel de detaliu, câmp sursă și coloană de exportTXLSWorkbookViewerexpune comentarii și hyperlinkuri ale celulei selectate, ridică un eveniment de hyperlink controlat de aplicație, pictează indicatori de comentariu și fonturi XLSX, umpleri și aliniere, și normalizează selecția și randarea pe intervale îmbinate
Modificat
- Exemplul ConversionWorkbench poate acum produce ieșire PDF și publică toate foile de calcul XLSX vizibile pentru ținte HTML, în timp ce exemplul WorkbookViewer demonstrează navigarea celulelor îmbinate, comentariile și activarea hyperlinkurilor
Versiune 2.184.0
Adăugat
- Intervalele XLS clasice și XLSX pot copia text tabular Unicode și HTML stilizat în clipboard-ul Windows prin
CopyToClipboard, păstrând formule, celule îmbinate, linkuri, formatare de afișare și tabulatori încorporați, linii noi și ghilimele escapate sigur TXLSXWorkbookpăstrează acum părți de pachet personalizate accesibile din relații necunoscute la rădăcina pachetului, registrului de lucru, foii de calcul sau desenului, inclusiv gestionarea coliziunilor de ID de relație, tipuri de conținut, relații copil, alegerea compresiei și octeții exacți de încărcătură;PreserveUnsupportedParts,UnsupportedPartCount,UnsupportedPartBytesșiClearUnsupportedPartsexpun control și diagnosticare- Salvările XLS clasice expun callback-uri de început, lucru și sfârșit cu anulare prin
OnProgressEx, în timp ceIXLSWorkbookProgressoferă diagnosticare structurată cu coduri stabile, severitate, operațiune, context de foaie, valori de retur native și detalii de excepție TXLSXWorkbookexpune acum aceleași suprafețe structurateDiagnostics,LastDiagnosticșiOnDiagnosticpentru raportarea salvării, deschiderii, recalculării, anulării și excepțiilor- Modulele VBA parsate suportă acum editarea
SourceCodeși scrierea fluxului de modul comprimat actualizat înapoi prin salvări XLS clasice, stocare VBA independentă și OOXML cu macrocomenzi, păstrând prefixele de flux și conținutul neatins al proiectului - Foile de calcul clasice și colecțiile de forme expun acum controale de formular tipizate
TXLSCheckBox,TXLSComboBoxșiTXLSListBoxcu ajutoare de creare, etichete, inspectare a tipului de control, ancore de celulă, ștergere și descoperire la deschidere/salvare TXLSXRange.ApplyFormatPatchpoate copia selectiv componentele font, umplere, bordură, format numeric, aliniere și protecție cu mozaic de model-sursă, păstrând valorile destinației și formatarea neselectatăTDataToXLSpoate exporta recursiv seturi de date master-detail legate prinReadDetailTablesșiIndentDetailTables, păstrând legăturile de date active, adăugând fiecare tabel de detaliu sub înregistrarea sa master și moștenind opțiunile de câmp, titlu și formatare la fiecare nivelTXLSXWorksheet.AddWordArtcreează text DrawingML ancorat pe celulă cu deformare predefinită plus culori configurabile de text și contur, iar calea de păstrare a ancorei brute de desen păstrează forma WordArt completă pe cicluri ulterioare de deschidere/salvareTXLSWorkbookVieweradaugă un vizualizator VCL de foi de calcul pentru obiecte clasice și moderne de registru de lucru cu încărcare de fișiere XLS, XLSX, XLSM, șablon și ODS, text formatat de celulă, stiluri clasice, dimensionare de rânduri și coloane, antete, randare de grilă și selecție, bare de derulare, selecție cu mouse, navigare cu tastatura, poziționare celule, comutare foi de calcul și evenimente de selecție sau foaie de calcul- Noile exemple Delphi
FeatureShowcaseșiWorkbookViewerdemonstrează tipărire PDF stilizată, titluri de tipărire, pauze manuale, controale de formular clasice, patch-uri selective de format, WordArt, diagnosticare, creare la rulare a vizualizatorului, încărcare de fișiere, navigare celule, comutare foi de calcul și evenimente ale vizualizatorului, cu ghiduri englezești potrivite și subiecte de referință pentru dezvoltatori
Modificat
- Exportul PDF pentru registre de lucru, foi de calcul și intervale XLS clasice și XLSX moderne scrie acum fiecare foaie de calcul vizibilă într-un document, sare peste foile ascunse și de grafic, randează umpleri solide, culori de font, mărimi de font, accentuări aldine și cursivă, aliniere orizontală și verticală, borduri explicite de celulă și opțional grilele foii de calcul, urmează zona de tipărire, dimensiunea hârtiei, orientarea, marginile, zoom-ul, setarea potrivire-la-lățime, lățimile coloanelor, înălțimile reale ale rândurilor, pauzele manuale de pagină pe rând și coloană, rândurile și coloanele de titlu repetate și anteturile și subsolurile în trei părți cu câmpuri de pagină, total-pagini, nume-foaie, dată și oră, paginează intervalele late și înalte pe ambele axe, emite o sintaxă numerică PDF independentă de localizare și încorporează un font TrueType eligibil plus o hartă ToUnicode pentru text în afara WinAnsi
- Callback-urile extinse de progres XLSX primesc acum stări reliable de început, lucru și sfârșit pentru salvare, deschidere și recalculare, în timp ce callback-ul legacy rămâne doar-lucru și fiecare operațiune resetează starea de anulare anterioară
- Serializarea XLS clasică propagă acum eșecurile de foaie de calcul, grafic, extensie de stil, VBA, flux de control, stocare și comitere a ieșirii în loc să raporteze succes, iar salvările de fișiere stagnează întregul fișier compus înainte de a înlocui atomic destinația
- Salvările de fișiere XLSX și ODS construiesc acum un pachet temporar frate complet și înlocuiesc atomic destinația doar după finalizarea cu succes, lăsând fișierele existente neschimbate după anulare sau eșec
Versiune 2.183.0
Adăugat
TXLSDirectWritersuportă acum handles de stil de celulă la nivel de pachet reutilizabile și clonare de stil fără a stoca în buffer rândurile foii de calcul; același index de stil poate fi aplicat oricărui număr de celule sau reutilizat pe foi de calcul- Stilurile directe de celulă oferă 30 de capabilități de formatare cuprinzând numele fontului, dimensiunea, culoarea BGR, aldine, cursivă, tăiat, contur, umbră, cinci moduri de subliniere, 19 modele de umplere cu culori de prim-plan/fundal, cinci margini de bordură colorate independent cu 14 stiluri de linie și direcții diagonale, formate numerice integrate sau personalizate, aliniere orizontală și verticală, încadrare, potrivire-la-micșorare, indentare, rotație text, prefixe de citare și protecție blocat/ascuns
- Supraîncărcări stilizate sunt disponibile pentru șiruri, numere, booleene, date, formule, erori și fiecare tip de rezultat de formulă stocat în cache, permițând exportatorilor de volum mare să selecteze un stil preconstruit după index întreg în timpul scrierilor secvențiale
Modificat
- Scriitorul direct deduplică componentele egale de font, umplere, bordură și format numeric la construirea
styles.xml, păstrând indecșii stabili de stil de celulă deja scriiți în fluxurile foii de calcul - Tabelele de stil generate de scriitorul direct includ acum umplerile implicite standard
noneșigray125înaintea umplerilor personalizate pentru o compatibilitate OOXML mai strictă
Versiune 2.182.0
Adăugat
TXLSDirectWriterscrie acum formatare condiționată păstrându-și profilul de memorie independent de numărul de rânduri, cu opt operatori de valoare a celulei, reguli de expresie, reguli de text conține/nu-conține/începe-cu/se-termină-cu, reguli de valoare și procentaj sus sau jos, reguli deasupra sau sub medie, valori duplicate și unice, celule goale și nevide, celule de eroare și non-eroare, bare de date, scări cu două și trei culori și toate cele 17 familii de seturi de pictograme de bază- Regulile directe de formatare condiționată suportă priorități explicite, evaluare stop-if-true, opțiuni de deviație standard și egalitate a mediei, înlocuirea pragului pictogramei, afișare doar-pictograme și inversă, vizibilitatea valorii barelor de date, culori BGR și stiluri diferențiale de umplere, culoare font, aldine și cursivă
Modificat
- Scriitorul direct deduplică stilurile diferențiale echivalente pe foi de calcul și stochează doar reguli și stiluri de formatare condiționată, astfel încât consumul de memorie se scalează cu numărul de reguli mai degrabă decât cu numărul de rânduri ale foii de calcul
- Tipurile de prag minim și maxim automat pentru barele de date sunt normalizate la jetoanele standard
minșimaxîn elementul OOXML de bază pentru o compatibilitate largă cu programele de calcul tabelar
Versiune 2.181.0
Adăugat
TXLSDirectWriterscrie acum protecția foii de calcul și a registrului de lucru fără a stoca în buffer datele foii de calcul, inclusiv 15 permisiuni granulare de foaie de calcul, verificatori legacy de parolă, metadate moderne de hash, intervale protejate editabile cu parole opționale sau descriptori de securitate, blocări de structură și fereastră ale registrului de lucru, atribuire brută de verificator și ștergerea protecției
Remediat
- Ancorele de desen nesuportate păstrează acum fiecare element de închidere când sunt reconstructuite pentru ieșirea ciclului complet, astfel încât desenele doar-cu-formă rămân bine-formate după deschidere și salvare
- Permisiunile de protecție ale foii de calcul XLSX urmează acum definiția OOXML a indicatorului blocat, astfel încât acțiunile permise scriu
0, acțiunile interzise scriu1, iar atributele omise se redeschid cu valorile lor implicite de schemă - Parolele legacy de foaie de calcul, interval protejat și registru de lucru XLSX folosesc acum algoritmul verificator pe 16 biți compatibil cu Excel cu conversie ANSI și limita de 15 octeți
Versiune 2.180.0
Adăugat
- Modelul foii de calcul XLSX parcurge acum ciclul complet al elementelor What-If Scenario Manager (
<scenarios>) și Data Consolidation (<dataConsolidate>). Noile proprietățiScenariosXmlșiConsolidateXmlcu XML brut peTXLSXWorksheetpoartă conținutul interior textual — scriitorul emite elementele de înveliș, cititorul parsează înapoi copiii de scenariu/consolidare-date. Fișierele de modelare financiară care definesc scenarii sau definiții de consolidare nu le mai pierd la ciclul complet.
Versiune 2.179.0
Adăugat
- O nouă funcție ajutătoare
XlsxBuildNumFmtconstruiește coduri de format numeric OOXML din proprietăți semantice —Decimals,Thousands(separator),NegativeRed(negative roșii),CurrencySymbolșiPercent. Apelanții nu mai trebuie să scrie manual șiruri de format precum"$#,##0.00;[Red]-$#,##0.00"— constructorul le produce din parametri simpli. Proiectat pentru utilizare cuCell.NumberFormatsauWorkbook.NumberFormats.Add.
Versiune 2.178.0
Adăugat
- Modelul foii de calcul XLSX parcurge acum ciclul complet al numelui de cod VBA (
<sheetPr codeName="..."/>), esențial pentru interop VBA unde proiectul VBA referențiază foile de calcul după numele de cod. Noua proprietateCodeNamepeTXLSXWorksheet. - Comentariile suportă acum un comutator de vizibilitate
AlwaysShowpeTXLSXComment— când este True balonul de comentariu este mereu vizibil (comutatorul per-comentariu „Arată/Ascunde Comentariu” al Excel), nu doar la survolare. - Validarea datelor parcurge acum ciclul complet al atributului de mod IME (
imeMode) peTXLSXDataValidation. Enumerația cu 11 valori controlează comportamentul metodei de intrare CJK la introducerea unei celule (noControl / off / on / hiragana / fullKatakana / etc.). Esențial pentru fișierele cu localizare japoneză/coreeană/chineză. - Modelul foii de calcul capătă o proprietate
PaneStatepentru atributul de stare a panoului pe<pane>dincolo de gestionarea existentă a modului înghețat — suportă stărilefrozenSplit(înghețat-apoi-derulabil) șisplit.
Versiune 2.177.0
Adăugat
- Trei funcții de foaie de calcul înregistrate anterior dar neimplementate au acum dispatch complet:
DOLLAR(text formatat ca monedă),FIXED(text cu zecimale fixe cu suprimare opțională a virgulei) șiAREAS(numărul de zone dintr-o referință). Anterior acestea erau înregistrate înInitFuncHashdar nu aveau niciun caz în motorul de calcul — evaluarea=DOLLAR(...)returna silențios rezultate greșite. - Modelul foii de calcul XLSX parcurge acum ciclul complet al scalelor de zoom per tip de vizualizare (
zoomScaleNormal/zoomScalePageLayoutView/zoomScaleSheetLayoutView), culorii grilei (sheetView color) și indicatoarelor de afișare a vizualizării foii (showFormulas/showZeros). Noi proprietăți peTXLSXWorksheet:ZoomNormal,ZoomPageLayout,ZoomSheetLayout,GridColor,ShowFormulas,ShowZeros. - Direcția rezumatului de contur parcurge acum ciclul complet. Noile proprietăți
SummaryBelow,SummaryRightșiShowOutlineSymbolspeTXLSXWorksheetcontrolează dacă rândurile/coloanele de rezumat apar sub/dreapta detaliului și dacă simbolurile de contur sunt vizibile. Scriitorul emite<outlinePr>în interiorul<sheetPr>; cititorul îl parsează înapoi. - calcPr-ul registrului de lucru poartă acum atributele
forceFullCalcșicalcCompletedalături de trio-ul existentcalcId/fullCalcOnLoad/calcMode/iterate.
Versiune 2.176.0
Adăugat
- Motorul de formule XLSX rezolvă acum referințele de tabel structurate înainte de compilare. O nouă metodă
ResolveStructuredRefspeTXLSXWorkbookscanează textul formulei după tipareTableName[ColumnSpec]și le înlocuiește cu referințe concrete de interval A1 folosind colecțiaTXLSXTablea registrului de lucru. Specificațiile suportate includ intervalul de date al coloanei (Sales[Qty]), coloana pe rândul curent (Sales[@Total]), date complete (Sales[#Data]/Sales[#All]), antete (Sales[#Headers]) și rândul de totaluri (Sales[#Totals]). Rezolvarea rulează automat în interiorulGetCompiledFormula— formulele existente nu sunt afectate deoarece identificatorii care nu sunt de tabel sunt lăsați textual. Anterior referințele structurate provocau eșecul compilării formulei.
Versiune 2.175.0
Adăugat
- Motorul de formule suportă acum compilarea formulor în stil de referință R1C1. O nouă metodă
GetCompiledFormulaR1C1peTXLSCalculator(șiGetCompiledR1C1peTXLSFormula) acceptă o formulă scrisă în notație R1C1 (R2C3pentru absolut,R[-1]C[2]pentru relativ,RCpentru celula curentă) și o compilează convertind mai întâi în notație A1 folosind rândul/coloana celulei formulei. O funcție independentăR1C1ToA1efectuează conversia — detectează marcajeleR/Ccare sunt de sine stătătoare (nu parte a unui nume de funcție precum ROUND), parsează decalajele opționale între paranteze și produce referința A1 echivalentă. Literele de șir și identificatorii sunt săriți. Anterior doar formulele în stil A1 puteau fi compilate.
Versiune 2.174.0
Adăugat
- Ieșirea AutoFilter a
TXLSDirectWritersuportă acum coloane de filtru de foaie de calcul și de tabel, filtre de valoare, filtre de gol, filtre de grupare pe dată, filtre de comparație personalizate, filtre dinamice, filtre sus/jos, indicatoare de buton de filtru, stări de sortare, condiții de sortare, escapare XML și suprimarea duplicată a intervalului de filtru foaie de calcul/tabel la streaming de fișiere XLSX
Versiune 2.173.0
Adăugat
- Ieșirea de tabel a
TXLSDirectWritersuportă acum comentarii de tabel, numărători de rând de totaluri, etichete de rând de totaluri pe coloană, funcții de rând de totaluri pe coloană, formule de coloană calculată, formule de rând de totaluri și escapare XML pentru metadatele de coloană de tabel la streaming de fișiere XLSX
Versiune 2.172.0
Adăugat
TXLSDirectWriterscrie acum părți de tabel Excel la streaming de fișiere XLSX, inclusiv relații de tabel ale foii de calcul, tipuri de conținut ale părții de tabel, intervale de tabel, nume de coloane, indicatoare de rând de antet și rând de totaluri și indicatoare de afișare a stilului de tabel integrat fără a construi un model complet de obiect al registrului de lucru
Versiune 2.171.0
Adăugat
TXLSDirectWriterscrie acum validări de date ale foii de calcul la streaming de fișiere XLSX, inclusiv listă, număr-întreg, zecimal, dată, oră, lungime-text, formulă-personalizată,sqrefarbitrar, prompt, alertă-de-eroare, permitere-gol, dropdown și indicatoare de mesaj de intrare/eroare fără a construi un model complet de obiect al registrului de lucru
Versiune 2.170.0
Adăugat
TXLSDirectWriterscrie acum nume definite de registru de lucru și locale de foaie la streaming de fișiere XLSX, inclusiv nume ascunse, comentarii, intervale absolute generate, zone de tipărire, rânduri de titlu de tipărire, coloane de titlu de tipărire, titluri de tipărire combinate, referințe de nume-foaie între ghilimele, escapare XML și semantică de înlocuire pentru setări repetate de nume de tipărire fără a construi un model complet de obiect al registrului de lucru
Versiune 2.169.0
Adăugat
TXLSDirectWriterscrie acum hyperlinkuri de foaie de calcul la streaming de fișiere XLSX, inclusiv relații URL externe, mailto și de fișier, locații interne de foaie, text de afișare, indicii (tooltips), intervale de hyperlink cu o singură celulă sau mai multe celule, normalizare URL barewww., escapare XML și ținte de relație codate-procent fără a construi un model complet de obiect al registrului de lucru
Versiune 2.168.0
Adăugat
TXLSDirectWriterscrie acum metadate de tipărire și de vizualizare a foii la streaming de fișiere XLSX, inclusiv comutoare de afișare a grilei și a antetelor de rând/coloană, margini de pagină, text de antet/subsol impar, grile de tipărire și titluri, centrare pagină, dimensiune hârtie și orientare peisaj, dimensiuni potrivire-la-pagină și pauze manuale de pagină pe rând sau coloană fără a construi un model complet de obiect al registrului de lucru
Versiune 2.167.0
Adăugat
TXLSDirectWriterscrie acum metadate de dispunere a foii de calcul la streaming de fișiere XLSX, inclusiv dimensiuni implicite de coloană și rând, lățimi personalizate de coloană, rânduri și coloane ascunse, intervale îmbinate, intervale AutoFilter, panouri înghețate, culori ale filei foii și vizualizări de foaie de la dreapta-la-stânga fără a construi un model complet de obiect al registrului de lucru
Versiune 2.166.0
Adăugat
- Fluxurile de lucru XLSX streaming includ acum listarea numelor de foi fără scanări ale foii de calcul, selectarea foii de cursor de rând după nume, streaming de date numerice brute, reutilizarea scriitorului direct, scrierea de celule de eroare și scriitori de rezultate de formulă stocate în cache pentru valori numerice, șir, Boolean, dată și eroare
Versiune 2.165.0
Remediat
TXLSDirectReader.ReadStreamrestaurează acum poziția fluxului apelantului după scanare directă, potrivind contractul de flux documentat și permițând aplicațiilor să reutilizeze același flux după o trecere de citire directă
Versiune 2.164.0
Adăugat
- Exporturile de set de date
TDataToXLSsuportă acum liste de șiruriIncludeFieldsșiExcludeFields. Aplicațiile pot lista pe alb câmpurile exportate, omite coloane sensibile și menține antetele, rândurile de date, lățimile coloanelor și callback-urile de export aliniate cu setul de câmpuri selectat
Versiune 2.163.0
Adăugat
- Exportul CSV capătă citare configurabilă a textului pe motoarele XLS și XLSX.
TXLSWorkbookexpune acumCSVEmitFormulasșiCSVQuoteAllStrings, iarTXLSXWorkbookadaugăCSVQuoteAllStrings. Când este activat, exportul de formule scrie textul formulei, iar câmpurile de șir sunt citate, în timp ce câmpurile numerice, de dată, Boolean, Null și Empty păstrează regulile normale de citare
Versiune 2.162.0
Adăugat
- Motorul XLSX capătă un sistem de evenimente de progres abortabil. Un nou callback
OnProgressExpeTXLSXWorkbookse declanșează alături deOnProgressexistent cu trei îmbunătățiri: (1) un parametruTXLSXProgressState(ppsBegin/ppsWork/ppsEnd) care încadrează fiecare fază astfel încât UI-urile să știe când o operațiune începe și se termină; (2) un parametru varAbort: Booleancare permite callback-ului să anuleze operațiunea curentă la mijlocul fluxului — buclele de citire/scriere/calcul verificăWorkbook.Abortedși ies curat; (3) o nouă fazăxlsxProgressExportingpentru operațiuni de export (HTML/RTF/CSV/ODS). O metodă ajutătoareFireProgresscentralizează dispatch-ul dual-callback. IndicatorulFAbortedeste resetat la începutul fiecărei operațiuni de nivel superior (Open / SaveAs / Recalculate).
Versiune 2.161.0
Adăugat
- Modelul de grafic XLSX suportă acum patru noi elemente de grafic pentru o compatibilitate Excel mai puternică. Tabel de date de grafic (
c:dTable):TXLSXChartcapătă comutatoareleShowDataTable+ShowDataTableKeys— când sunt activate, scriitorul emite elementul tabel de date în interiorul zonei de trasare astfel încât Excel randează datele sursă ca o grilă sub axa graficului. Bare sus/jos + linii hi-low (elemente de grafic bursier/OHLC):TXLSXChartcapătăHasUpDownBars+UpDownGapWidthșiHasHiLowLines— scriitorul emitec:upDownBarsșic:hiLowLinesîn interiorul elementului de grafic (grafice linie/bursier). Controale de vizualizare 3D:TXLSXChartcapătăRotation3DX/Rotation3DY/Elevation3D/Perspective3D/RightAngleAxes3D— scriitorul emitec:view3Dla nivel de grafic atunci când orice proprietate 3D diferă de implicit. Anterior niciunul dintre aceste elemente nu era emis, astfel încât graficele construite cu tabele de date, elemente de grafic bursier sau vizualizări 3D le pierdeau la ciclul complet.
Versiune 2.160.0
Adăugat
- Referințele de formulă se ajustează acum automat atunci când rânduri sau coloane sunt inserate sau șterse în motorul XLSX. Metoda
ShiftSheetGeometry— apelată deInsertRows/DeleteRows/InsertCols/DeleteCols— parcurge acum fiecare celulă de formulă supraviețuitoare și îi rescrie referințele A1 pentru a reflecta schimbarea structurală. Un nou scaner de textXlsxAdjustFormulaRowColRefsdetectează referințele cu o singură celulă (A1,$B$2) și referințele de interval (A1:B3), deplasează componentele lor de rând/coloană dincolo de punctul de inserare și convertește referințele șterse în#REF!. Atât referințele relative, cât și absolute sunt deplasate (potrivind comportamentul Excel). Anterior formulele rămâneau silențios îndreptate către celulele greșite după o editare structurală.
Versiune 2.159.0
Adăugat
- Starea de sortare a autofiltrului parcurge acum ciclul complet prin motorul XLSX.
TXLSXWorksheetcapătă o proprietateSortStateXmlcare poartă XML-ul interior brut al elementului OOXML<sortState>(direcția sortării pe coloană, sensibilitatea la majuscule, metoda de sortare și fiecare<sortCondition>cu indicatorul său descendent + ref). Scriitorul emite elementul după<autoFilter>; cititorul parsează înapoi atributele și condițiile de sortare. Anterior starea de sortare era silențios pierdută la citire și niciodată scrisă. - Setările fonetice/ruby CJK parcurg acum ciclul complet prin motorul XLSX.
TXLSXWorksheetcapătăPhoneticFontId,PhoneticType(hiragana / katakana / fullWidthKatakana / noConversion) șiPhoneticAlignment(left / center / distributed). Scriitorul emite<phoneticPr>după<sheetData>; cititorul parsează înapoi atributele. Anterior elementul fonetic era silențios pierdut la citire — fișierele pentru piața japoneză își pierdeau setările de ajutor de citire furigana.
Versiune 2.158.0
Adăugat
- Motorul XLSX parcurge acum ciclul complet al tabelului de stiluri de celulă denumite (
<cellStyles>). O nouă clasăTXLSXNamedStyle+ colecțiaTXLSXNamedStylespeTXLSXWorkbookpoartă suprafața completă:Name,XfId,BuiltInId,CustomBuiltIn,Hidden,BuiltinLevel. Scriitorul emite un<cellStyle>per intrare când colecția este nevidă; cititorul le parsează înapoi. Anterior scriitorul codifica hardcodat o singură intrare"Normal", iar cititorul elimina toate stilurile denumite, astfel încât fișierele cu stiluri „Good”/„Bad”/„Total”/denumite personalizat își pierdeau acele nume la ciclul complet.
Versiune 2.157.0
Adăugat
- Motorul XLSX parcurge acum ciclul complet al elementului
<calcPr>întreg, nu doar comutatoarele de calcul iterativ.TXLSXWorkbookcapătăCalcId(identificatorul motorului de calcul pe care Excel îl folosește pentru a decide dacă valorile stocate în cache sunt învechite),FullCalcOnLoad(forțează Excel să facă un recalcul complet la deschidere — critic pentru registre de lucru produse de un motor non-Excel) șiCalcMode(auto / manual / autoNoTable). Scriitorul emite atributele potrivite pe<calcPr>; cititorul le parsează înapoi. Anterior doariterate/iterateCount/iterateDeltaerau gestionate, iar restul erau silențios pierdute.
Versiune 2.156.0
Adăugat
- Evaluatorul de formule implementează acum 37 de funcții de foaie de calcul care erau anterior înregistrate (ptg atribuit în InitFuncHash) dar nu aveau nicio implementare de dispatch — cădeau prin la
#NAME?. Noile implementări se întind pe cinci familii de funcții: Regresie (FORECAST,LINEST,TREND,GROWTH,LOGEST,CORREL,PEARSON,SLOPE,INTERCEPT,RSQ,STEYX), Depreciere (SLN,SYD,DB,DDB,VDB), Statistici descriptive (AVEDEV,DEVSQ,KURT,SKEW,GEOMEAN,HARMEAN,TRIMMEAN,FREQUENCY), Perechi pe matrice (SUMXMY2,SUMX2MY2,SUMX2PY2) și Combinatorică/Matematică (COMBIN,PERMUT,FACT,QUOTIENT,ROMAN,DEGREES,RADIANS,STANDARDIZE). Funcțiile de regresie folosesc un rezolvator al celor mai mici pătrate; funcțiile de depreciere implementează metode pe linie dreaptă, suma-anilor-cifre și sold descrescător; funcțiile de statistici descriptive calculează deviația medie absolută, kurtosis, asimetria, mediile geometrică/armonică/trimisă; iar funcțiile perechi calculează suma diferențelor pătrate între două intervale de dimensiuni egale. Un nou ajutătorCollectRangeValuespeTXLSCalculatorextrage valorile numerice din argumentele de interval pentru funcțiile statistice.
Versiune 2.155.0
Adăugat
- Evaluatorul de formule suportă acum cinci nume suplimentare de compatibilitate statistică și de inginerie:
ERFC,ERFC.PRECISE,BINOM.INV,CHI.INV.RTșiF.TEST.ERFCcompletează seria funcției de eroare existentă,BINOM.INVcaută pragul CDF binomial,CHI.INV.RTalias-ează inversa chi-pătrat a cozii drepte, iarF.TESTreturnează valoarea p bilaterală a varianței eșantionului
Versiune 2.154.0
Adăugat
- Evaluatorul de formule rezolvă acum referințele între registre de lucru printr-un nou callback
OnGetExternalValuepeTXLSCalculator. Când o referință de interval 3D punctează într-un registru de lucru extern ([1]Sheet1!A1), evaluatorul rutează prin callback în loc să returneze#REF!. Motorul XLSX conectează acest callback laGetExternalCellValue, care mapează indexul SupBook + indexul foii la cache-ul<sheetDataSet>alTXLSXExternalLinkpotrivit și decodifică valoarea celulei stocate în cache după atributul său de tip OOXML (numeric / boolean / șir / eroare). Anterior formulele între registre de lucru returnau#REF!necondiționat; infrastructura de callback permite acum oricărui motor (BIFF8, XLSX sau o gazdă de calculator personalizată) să furnizeze valori externe. - Evaluatorul de formule efectuează acum difuzare de matrice element-cu-element pe operatori binari (
+/-/*///^). Când oricare operand este o matrice variantă 1D sau 2D (de ex. un rezultat de funcție matrice, un interval revărsat sau un operand de matrice CSE), operatorul este aplicat element-cu-element; un operand scalar este difuzat la fiecare element al operandului matrice. Noul ajutătorApplyArrayBinaryOpgestionează validarea formei, difuzarea scalară și propagarea împărțirii-la-zero. Aritmetica scalară legacy este neschimbată — calea de matrice se activează doar când cel puțin un operand este o matrice variantă. - Evaluatorul de formule recunoaște acum funcția
TABLE(What-If Analysis DataTable). Excel stochează tabelele de date ca formule de matrice CSE al căror corp esteTABLE(rowRef, colRef); anteriorTABLEnu era recunoscut și cădea prin la#NAME?. Funcția este înregistrată cu un ptg sintetic (ftabTABLE = 4232) astfel încât parcurge ciclul complet prin codificarea de formulă BIFF8, iar la momentul evaluării returnează o valoare substitutivă (0) — rezultatele reale sunt precalculate de Excel și stocate ca valori de celulă în cache, deci HotXLS nu reevaluează logica de substituție.
Versiune 2.153.0
Adăugat
- Modelul tipizat PivotTable poartă acum proprietățile tipizate ale axei de pagină (Hier / Caption / Name), domeniul de sortare automată și cârligele de parcurgere-ciclu XML-raw pentru
<formats>și<extLst>necesare pentru o compatibilitate Excel mai completă.TXLSPivotFieldcapătăPageHier/PageCaption/PageName(F16 — nume de ierarhie OLAP + legendă axă-pagină + nume de afișare) șiAutoSortScope(F20 — referință de interval A1 care fixează celulele pe care Excel le folosește pentru a sorta automat elementele câmpului);TXLSPivotTablecapătăFormatsXml/ExtLstXml(F17 — parcurgere-ciclu XML interior brut pentru blocul de suprascrieri CF / format numeric<formats>și blocul slicer / timeline / x14<extLst>, emis textual când este setat, astfel încât parcurgerea-ciclu este sigură chiar și între versiuni de motor). Scriitorul XLSX emite atributele potrivite<pageField hier=... cap=... name=.../>, copilul<autoSortScope>al<pivotField>și blocurile<formats>+<extLst>înainte de sentinelul de închidere. - Trasorul de formule înregistrează acum instantanee per-pas ale stivei de operanzi, activând un adevărat depanator „Evaluate Formula” pas-cu-pas.
TXLSFormulaStepcapătăStepKind(push / reduce / function),StackBefore/StackAfter(instantanee separate prin virgulă ale stivei de operanzi la momentul în care fiecare pas a început / terminat) șiTokenStart/TokenEnd(interval de caractene bazat pe 1 care fixează pasul înapoi la formula sursă).TXLSFormulaTracercapătăTraceReversed(returnează aceiași pași în ordine inversă de evaluare — util pentru un UI pas-înapoi care merge de la rezultatul final spre operanzii originali) și o proprietateStepCount. Anterior trasorul înregistra doar Depth / Source / Expression / Value fără stare a stivei. - Exportul HTML încorporează acum imagini per-celulă printr-un nou callback
OnCellImagepeTXLSHTMLExportși o nouă opțiunexhImages. Când opțiunea este setată și callback-ul este conectat, exportatorul cere implementatorului fragmentul<img>al fiecărei celule (de obicei un data-URI Base64) și îl adaugă după textul celulei. Acest lucru decuplabilizează exportatorul de stocarea de imagini BIFF8 a motorului XLS (care trăiește în înregistrarea MsoDrawing per-foaie), astfel încât exportatorul nu trebuie să parseze ancorele el însuși. Exportul HTML al motorului XLSX încorpora deja imagini; acest lucru închide golul pentru motorul XLS. - Importul RTF aplică acum proprietățile de caracter (aldin / cursiv / subliniat / tăiat / dimensiune) din cuvintele de control RTF la fontul celulei destinație.
TXLSRTFImporturmărește\b/\i/\ul/\strike/\fsprin document și împinge formatarea rulajului dominant în XF-ul celulei la momentul comiterii. O nouă proprietateImportCharFormat(implicit True) comută comportamentul; setați False pentru a restabili importul legacy doar-text. Celulele multi-rulaj colapsează la un singur XF (ultimul rulaj activ câștigă), deoarece API-ul de celulă al motorului XLS este la nivel de celulă, nu per-fragment — dar acest lucru este mult mai bine decât a pierde toată formatarea, ceea ce făcea importatorul legacy. - O nouă clasă
TXLSHTMLImportparsează tabele HTML în celule de foaie de calcul. Parcurge primul<table>din sursă, emițând un rând de foaie de calcul per<tr>și o celulă per<td>/<th>. Onoreazăcolspan/rowspan(îmbinare în stil Excel), desprinde etichetele în interiorul unei celule (colapsând formatarea imbricată la text simplu), decodifică cele cinci entități standard de caractere (&/</>/"/'/ ) și formele&#NNN;/&#xNN;numerice și forțează șirurile numerice curate la Double astfel încât tabelele importate rămân calculabile. Proiectat pentru ieșirea pe care HotXLS însuși o produce (SaveAsHTML) plus tabele HTML de calitate generală copy-paste; nu un parser HTML5 complet.
Versiune 2.152.0
Adăugat
- Tabelele XLSX păstrează acum metadatele de totaluri la nivel de coloană și formulele de tabel.
TXLSXTableexpuneColumnTotalsRowFunctions[],ColumnTotalsRowLabels[],ColumnCalculatedColumnFormulas[]șiColumnTotalsRowFormulas[];SaveAsemite XML-ul de coloană de tabeltotalsRowFunction,totalsRowLabel,calculatedColumnFormulașitotalsRowFormulapotrivit,Openle citește înapoi, iar clonele de tabel le păstrează
Versiune 2.151.0
Adăugat
- Modelul tipizat PivotTable poartă acum colecția de filtre per-câmp, comutatorul de selecție-multiplă, suprafața discretePr a fieldGroup + groupItems și modelul de elemente calculate / membri calculați necesare pentru o compatibilitate PivotTable mai completă.
TXLSPivotFieldcapătă o colecție tipizatăTXLSPivotFilters(fiecare intrare poartăFilterTypepeste enum-ul OOXMLST_FilterTypede 80 de membri — count / percent / sum / caption / value / date families — plusValue1/Value2/StrValue1/StrValue2,EvalOrder,DataField,MemberPropertyId,Name,Description), un comutatorMultipleItemSelectionAllowed(F9) și o colecțieTXLSPivotCalculatedItem(F14).TXLSPivotCacheFieldcapătăDiscreteIndices[]+AddDiscreteIndexșiGroupItemLabels[]+AddGroupItempentru blocurile fieldGroup discretePr + groupItems (F13).TXLSPivotTablecapătă o colecțieTXLSPivotCalculatedMember(F14). Scriitorul XLSX emite<pivotField multipleItemSelectionAllowed="1">potrivit, blocul per-câmp<filters><filter .../>, elementul<fieldGroup><discretePr>...</discretePr><groupItems>...</groupItems></fieldGroup>, blocul per-câmp<calculatedItems>și blocul la nivel de tabel<calculatedMembers>— astfel încât pivot-urile construite programatic cu filtre / selecție-multiplă / grupare / elemente calculate parcurg ciclul complet.
Versiune 2.150.0
Adăugat
- Numele definite își păstrează acum textul formulei valid atunci când foaia de calcul pe care o referențiază este ștearsă sau redenumită. Ștergerea unei foi rescrie fiecare calificator
SheetN!din interiorul formulei unui nume definit în#REF!(potrivind comportamentul Excel); redenumirea unei foi rescrie calificatorul în noul nume. Anterior textul formulei rămânea îndreptat către un nume de foaie inexistent, pe care Excel îl marca apoi ca link rupt la redeschidere. - Modelul tipizat PivotTable poartă acum ordinea de sortare la nivel de câmp și comutatoarele de dispunere, plus atributele de dispunere / afișare la nivel de tabel necesare pentru o compatibilitate de dispunere PivotTable mai completă.
TXLSPivotFieldcapătăSortType(manual / ascendent / descendent),Compact,Outline,SubtotalTop,DragToRow/DragToCol/DragToPage/DragToData,ShowAll,InsertBlankRow,NumFmtId;TXLSPivotTablecapătăCompact/CompactData/Outline/OutlineData/Indent/ShowEmptyRow/ShowEmptyCol/ShowHeaders/ShowDrill/EnableDrill/FieldListSortAscending/GridDropZonesplusRowHeaderCaption/ColHeaderCaption/ErrorCaption/MissingCaption/ShowError/ShowMissingși perechea de dispunere axă-paginăRowPageCount/ColPageCount. Scriitorul XLSX emite atributele potrivite<pivotField sortType=... compact=... outline=...>și<pivotTableDefinition indent=... outline=... showEmptyRow=...>și elementul<location rowPageCount=... colPageCount=.../>astfel încât pivot-urile construite programatic poartă dispunerea setată de utilizator în loc de valorile implicite ale Excel. - O nouă metodă
FormulaIsVolatilepeTXLSWorkbookraportează dacă o formulă ar forța o recalculare la fiecare trecere de calcul — i.e. apelează o funcție volatilă (NOW / RAND / TODAY / OFFSET / INDIRECT) sau poartă o referință nerezolvabilă. Sonda partajează același extractor de dependențe pe care îl folosește motorul de recalculare, astfel încât răspunsul se potrivește cu ce faceRecalculateefectiv. Apelanții îl pot folosi pentru a marca celule pentru un UI de verificare, pentru a popula o setare volatilă de lanț de calcul pe un registru de lucru nou, sau pentru a sări stocarea în cache a rezultatului unei formule proaspăt introduse.
Versiune 2.149.0
Adăugat
- Cache-urile PivotTable pot fi acum reîmprospătate din intervalul lor sursă programatic. O nouă metodă
RefreshPivotCache(ACacheId)peTXLSXWorkbookrescanează intervalul sursă al cache-ului, reconstruiește domeniul de elemente partajate per câmp (re-deduplicând valorile și re-derivând limitele per-tip) și rescrie indecșii de element per-înregistrare. Anterior HotXLS se baza pe fanionul hardcodatrefreshOnLoad="1"și amâna toată lucrul de reîmprospătare la Excel la următoarea deschidere; fluxurile programatice pot acum reîmprospăta în-proces.
Versiune 2.148.0
Adăugat
InsertColspe motorul XLSX moștenește acum lățimea coloanei de la vecinul său din stânga, potrivind comportamentul implicit al Excel pentru „inserare coloană”. Anterior coloana inserată prelua lățimea implicită a registrului de lucru, producând un gol vizibil de fidelitate după o redeschidere.- Motorul XLSX capătă ajutoare convenabile de prăbușire-contur
ToggleColGrouped/ToggleRowGroupedpeTXLSXWorksheet, care parcurg arborele de contur și prăbușesc sau extind grupul la un nivel dat. Indicatoarele de prăbușire în sine parcurgeau deja ciclul complet; aceasta adaugă API-ul convenabil lipsă de parcurgere-a-arborelui.
Versiune 2.147.0
Adăugat
- Exportul HTML emite acum ancore
<a name>la celulele care sunt ținte de hyperlink intern, astfel încât hyperlinkurile#SubAddressse rezolvă corect când cititorul dă click pe ele. Anterior linkurile erau emise, dar țintele nu aveau ancore, astfel încât salturile interne se rezolvau la nimic. - Exportul CSV a căpătat o proprietate
CSVEmitFormulaspeTXLSXWorkbook. Când este True, celulele de formulă își exportă textul formulei (=SUM(A1:A2)) în loc de valoarea calculată — util pentru depanare și pentru fluxuri care se re-importă într-un motor diferit. - URL-urile de hyperlink extern sunt acum codate-procent la scriere (
XlsxEncodeHyperlinkUrl): spațiu, paranteze unghiulare, ghilimele, acolade, conducte, bare oblice inverse, circumflexe și backticks sunt codate ca%XXîn atributul<Relationship Target="..."/>astfel încât fișierul se deschide corect în fiecare browser. Secvențele existente codate-procent (%20) sunt păstrate ca atare. - Informațiile de stil PivotTable poartă acum suprafața completă
pivotTableStyleInfo:StyleName,ShowRowHeaders,ShowColHeaders,ShowRowStripes,ShowColStripes,ShowLastColumnpeTXLSPivotTable. Scriitorul XLSX emite elementul potrivit astfel încât pivot-urile construite programatic poartă stilul de bandare ales de utilizator în loc de implicitul hardcodat. - O nouă metodă
CalculateAndVerifypeTXLSXWorkbookre-evaluează fiecare celulă de formulă și compară rezultatul calculat cu valoarea celulei stocată în cache. Returnează numărul de nepotriviri (0 = toate valorile stocate în cache se potrivesc cu calculul proaspăt al motorului; formulele volatile sunt excluse). Util pentru QA la portarea registrelor de lucru între motoare sau la validarea că un scriitor nu a corupt valorile stocate în cache.
Versiune 2.146.0
Adăugat
- Motorul XLSX suportă acum calculul iterativ de referințe circulare (modul de calcul iterativ al Excel). Un triplu de proprietăți nou
Iterate/IterateCount/IterateDeltapeTXLSXWorkbookcontrolează comportamentul: cândIterate=Trueși un ciclu de referință este detectat în timpulRecalculate, motorul re-evaluează celulele membre ale ciclului de până laIterateCountori (implicit 100) sau până când schimbarea fiecărei celule este< IterateDelta(implicit 0.001), în loc să returneze#REF!. Setările parcurg ciclul complet prin elementul OOXML<calcPr iterate="1" iterateCount="N" iterateDelta="X"/>. Modelele financiare cu referințe circulare intenționate (dobândă-pe-dobândă, alocări circulare) converg acum în loc să dea eroare. - Câmpurile cache PivotTable poartă acum un model de grupare pentru gruparea pe interval numeric și pe ierarhie de date.
TXLSPivotCacheFieldcapătăHasGroup+GroupStartNum/GroupEndNum/GroupInterval(interval numeric) șiGroupByDate/GroupDays/GroupMonths/GroupQuarters/GroupYears/GroupHours/GroupMinutes/GroupSeconds/GroupStartDate/GroupEndDate(dată). Scriitorul XLSX emite elementul<fieldGroup><rangePr groupBy="range|days|months|..."/>astfel încât pivot-urile construite programatic cu câmpuri grupate se potrivesc cu ieșirea Excel. - Exportul HTML emite acum note de subsol de comentarii. Când
xhCommentseste în opțiunile de export, fiecare celulă comentată primește un link suprascris[n], iar textul complet al comentariului (autor + corp) este listat ca secțiune de notă de subsol după tabel cu o ancoră-înapoi la celulă. Anterior comentariile erau disponibile doar prin atributultitle=al celulei, care este invizibil la tipărire sau copy-paste.
Versiune 2.145.0
Adăugat
- Literalele de eroare de formulă BIFF8 (jeton
tErr) se decodifică acum într-un element de sintaxăSA_ERRORtipizat în loc să eșueze parsarea formulei. O celulă stocând=#N/A(sau oricare din cele șapte constante de eroare Excel) cauzau anterior ca întreaga formulă să fie pierdută la citire; octetul de eroare parcurge acum ciclul prin citire → evaluare → scriere și se reconstruiește la forma sa text (#NULL!,#DIV/0!,#VALUE!,#REF!,#NAME?,#NUM!,#N/A) printr-un nou ajutătorXlsErrorToString. - Jetonul BIFF8
tIsect $0F(operator de intersecție implicită) se decodifică acum în traducătorul de formulă binară, construind același nodSA_ISECTpe care parserul de text îl produce pentru@. Anterior o formulă binară care conținetIsectar eșua să se parseze. - Formatarea condiționată cu bare de date emite acum blocul de extensie
x14Excel 2010+ înextLstal foii de calcul când modelul poartă orice câmp x14 non-implicit (culoare de umplere negativă, gradient oprit, culoare axă, direcție, bordură). Un nouBuildDataBarExtXmlconstruiește elementulext<x14:conditionalFormattings>cu prioritatea potrivită, perechea cfvo, culorile de umplere + negativ + axă și atributele gradient/bordură/direcție/negativeBarColorSameAsPositive.
Versiune 2.144.0
Adăugat
- Motorul XLSX poate acum scrie registre de lucru criptate Agile (
TXLSXWorkbook.SaveAsEncryptedAgile), închizând un gol de compatibilitate de citire/scriere de valoare ridicată. Agile este ceea ce Excel 2010+ scrie implicit pentru fișiere .xlsx protejate prin parolă; HotXLS putea anterior să citească Agile dar doar să scrie Criptare Standard (AES-128). Noul flux de scriere oglindește calea de decriptare existentă: hashing de parolă SHA-512 cu un număr de iterații de 100000, criptare a pachetului AES-256-CBC per-segment, o cheie intermediară generată aleatoriu încadrată conform celor trei chei de bloc spec-fixate și un descriptor XML<encryption>complet purtând verificatorul criptat + blob-uri de cheie. Ieșirea este fidelă la octet cu ceea ce Excel produce și parcurge ciclul complet curat prinXlsLoadAgileEncryptedFile(verificat prin test: parola corectă decriptează, parola greșită respinsă). - Noi primitive criptografice stau la baza căii de scriere Agile:
XlsHMACSHA512(RFC 2104, necesar pentru elementuldataIntegrity),XlsBase64Encode(encoder RFC 4648 care oglindește decoder-ul existent) șiAESEncryptCBC(criptare AES-CBC pentru orice dimensiune de cheie 128/192/256, inversulAESDecryptCBCexistent). Unitatea AES importă acumaes_encrypt_key192/aes_encrypt_key256din obj Gladman (anterior doar criptarea pe 128 biți era disponibilă).
Versiune 2.143.0
Adăugat
- Evaluatorul de formule parsează și evaluează acum operatorul de intersecție explicită
@(sintaxă de matrice dinamică Excel 365, de ex.=A2:A4 @ B2:B4). Lexerul emite un nou jetonLT_ISECTpentru simbolul@, parserul de precedență construiește un nodSA_ISECT(legate mai strans decât^, mai larg decât%), iar un nou evaluatorIntersectRangesrezolvă ambii operanzi ca intervale și returnează valoarea singurei celule care se intersectează — regula de intersecție implicită a Excel. Serializatorul de jeton BIFF emitetIsect $0Fastfel încât operatorul parcurge ciclul prin XLS, iar calea de reconstrucție text-formulă emite forma cu spațiu implicit. Anterior astfel de formule eșuau să se parseze. - Un encoder Base64 standard (
XlsBase64Encode) este acum disponibil, oglinzindXlsBase64Decodeexistent. Acesta este prerequizitul pentru calea de scriere cu criptare Agile, care emite saltValue / encryptedVerifierHashInput / encryptedKeyValue / encryptedHmacValue ca valori de atribut Base64. - Evenimentul
OnProgressal registrului de lucru se declanșează acum și în timpul recalculării complete (Recalculate), cu o nouă fazăxlsxProgressCalculating. Anterior evenimentul se declanșa doar în timpul citirii și scrierii, astfel încât recalculările complete lungi nu ofereau UI-ului niciun puls. Evenimentul se declanșează aproximativ la fiecare 4% din celule pentru a evita inundarea. - Proprietățile extinse ale documentului (
docProps/app.xml) parcurg acum ciclul complet cu încă trei câmpuri pe care Excel le scrie pentru documente protejate prin parolă / bazate pe șablon:Manager,TemplateșiDocSecurity(un câmp de biți: 1=protejat prin parolă, 2=doar-citire recomandat, 4=doar-citire impus, 8=blocat pentru adnotare).
Versiune 2.142.0
Adăugat
- Modelul tipizat PivotTable poartă acum suprafața de metadate, sursă, câmp-calculat, „arată valorile ca” și limite-elemente-partajate pe care runda anterioară de analiză a marcat-o ca goluri.
TXLSPivotCachecapătăRefreshOnLoad/RefreshedBy/RefreshedDate/MissingItemsLimit/CreatedVersion/RefreshedVersion/MinRefreshableVersion/EnableRefresh/BackgroundQuery/SaveDataplus o formă tipizată de sursă-foaie-de-calcul (SourceName/SourceRelId/SourceIsNamedRange);TXLSPivotCacheFieldcapătăFormula/DatabaseField/MemberPropertyField(câmpuri calculate) și limitele elemente-partajate (ContainsBlank/ContainsInteger/ContainsString/ContainsNumber/ContainsDate/MinValue/MaxValue/MinDate/MaxDate/HasBounds);TXLSPivotDataFieldcapătăShowDataAs/BaseField/BaseItempentru transformările „arată valorile ca” (procent-din / diferență / total-curent / index). Scriitorul XLSX (BuildPivotCacheDefinitionXml/BuildPivotTableXml) onorează toate acestea astfel încât un pivot construit programatic (AddPivotTable) emite unpivotCacheDefinition+pivotTableDefinitionmai bogat — refreshOnLoad / trio-ul de versiune / refreshedBy / sursă numit-interval / formulă cacheField calculată / limite sharedItems / subtotal dataField + showDataAs. Tabelele pivot citite dintr-un fișier continuă să parcurgă ciclul XML-ul lor brut textual. - Comportamentul ancorei imaginii parcurge acum ciclul complet printr-o nouă proprietate
AnchorTypepeTXLSXImage(xaTwoCell= mută și dimensionează cu celulele,xaOneCell= mută dar nu dimensiona,xaAbsolute= nu muta sau dimensiona). Scriitorul alege elementul de ancoră (xdr:oneCellAnchor/xdr:twoCellAnchor editAs=.../xdr:absoluteAnchor) pentru potrivire; cititorul parsează înapoi numele elementului + atributuleditAs. Mapează la dialogul Excel click-dreapta → Dimensiune și Proprietăți → Proprietăți. - Antetul/subsolul parcurge acum ciclul complet cu diferențierea pagină-par/impar-prima.
TXLSXWorksheetcapătăEvenHeaderText/EvenFooterText/FirstHeaderText/FirstFooterTextplus cele patru comutatoare<headerFooter>(DifferentOddEven,DifferentFirst,ScaleWithDoc,AlignWithMargins). Fișierele în care utilizatorul a activat „Pagini pare și impare diferite” sau „Prima pagină diferită” nu mai pierd secțiunile pagină-par/prima-pagină la ciclul complet. - Configurarea paginii parcurge acum ciclul complet cu atributele
<pageSetup>extinse pe care Excel le scrie pentru configurări de tipărire non-implicite:Copies,FirstPageNumber+UseFirstPageNumber,HorizontalDpi,VerticalDpi,PrintErrors(afișat/gol/liră/NA),UsePrinterDefaults. <sheetFormatPr>parcurge acum ciclul complet cucustomHeight,zeroHeight,outlineLevelRowșioutlineLevelCol, astfel încât fișierele în care utilizatorul a setat o înălțime implicită de rând fixată de utilizator, rânduri-implicit-ascunse sau un nivel de contur implicit nu mai pierd acel comportament.- Formatarea condiționată cu bare de date parcurge ciclul complet cu atributul standard
gradient(umplere gradient vs. solidă), iarTXLSDataBarSpeccapătă câmpurile de extensiex14Excel 2010+ (NegativeBarColor,NegativeBarColorSameAsPositive,GradientFill,AxisColorcu temă/nuanță,Direction,Border) pe model astfel încât consumatorii API le pot seta. - Baloanele de comentariu parcurg ciclul complet cu desenul VML textual. Cititorul captează
xl/drawings/vmlDrawingN.vmlca atare, iar scriitorul îl redă la salvare (în loc de șablonul integrat de balon-galben), astfel încât poziția / dimensiunea / culoarea de umplere / vizibilitatea setate de utilizator ale fiecărui balon supraviețuiesc. - Corpul comentariilor parcurge ciclul complet cu formatare per-rulare.
TXLSXCommentcapătă o încărcăturăRichText: TXLSXRichTextleneșă (reutilizând modelul de rulare al șirurilor partajate); scriitorul emite un<r><rPr>...</rPr><t>...</t></r>per rulare când RichText poartă formatare, iar cititorul parsează<b/>,<i/>,<sz val=N/>,<color rgb=.../>înapoi astfel încât aldin / cursiv / dimensiune / culoare supraviețuiesc. - Evaluatorul de formule implementează acum
SUBTOTAL(toți cei unsprezece agregatori: AVERAGE / COUNT / COUNTA / MAX / MIN / PRODUCT / STDEV / STDEVP / SUM / VAR / VARP, plus variantele 101–111 ignoră-ascuns) șiAGGREGATE(nouăsprezece agregatori cu indicatoarele de cod-opțiune 0–7 care selectează ignorarea eroare/ascuns, inclusiv familia LARGE / SMALL / MEDIAN / PERCENTILE / QUARTILE cu argumentul lork). Ambele cădeau anterior prin calea funcției-nesuportate;SUBTOTALera înregistrat dar nu avea implementare,AGGREGATEnu era înregistrat deloc. - Funcțiile de foaie de calcul
CELLșiINFOsunt acum evaluate:CELLsuportăaddress,col,row,type,contents,filename,format, iarinfo_type-urile de stare-GUI (color,parentheses,prefix,protect,width) returnează implicite neutre;INFOsuportăosversion,system,recalc,memavail,numfile,release,origin. Ambele erau înregistrate dar cădeau prin la#NAME?. - Formatarea condiționată parcurge acum ciclul complet cu atributele
cfRulestopIfTrue,stdDev,equalAverageșitimePeriod, plus întreaga familietimePeriodde zece membri (yesterday / today / tomorrow / last7Days / lastWeek / thisWeek / nextWeek / lastMonth / thisMonth / nextMonth). Acestea erau silențios pierdute la citire; Excel le scrie de rutină pe regulile deasupra-mediei și de bandă-de-date, iar pierderea lor schimba modul în care regula se reevalua la redeschidere. - Exportul CSV a căpătat o proprietate
TXLSCsvEncodingpeTXLSCSVSavercu trei moduri:ceSystemAnsi(implicit legacy),ceUtf16(modul Unicode istoric) șiceUtf8care scrie un fișier UTF-8 cu marca de ordine a octeților EF BB BF — implicitul modern prietenos-cu-Excel care se redeschide fără expertul de import-text pe orice localizare. - Importul CSV a căpătat o proprietate
LocaleTolerantNumberspeTXLSCSVLoader. Când este activat, un câmp numeric care eșuează să se parseze cu.ca separator zecimal este reîncercat cu,(și invers), astfel încât un3,14european se importă ca numărul 3.14 pe o mașină US. Modul strict (implicitul) este neschimbat, astfel încât textul cu zero în frunte, codurile poștale și alte jetonane cu virgulă rămân text.
Remediat
- Inferența numerică în mod-strict a motorului XLSX nu mai forțează câmpurile text cu virgulă (de ex.
3,14) în numere prinTryStrToFloatal Delphi, care tolerază o virgulă ca separator de miime chiar și cândThousandSeparatoreste setat la#0. Astfel de câmpuri rămân acum text dacă opțiunea nouăLocaleTolerantNumbersnu este activată.
Versiune 2.140.0
Modificat
- Motorul XLSX compactează acum cele șase pool-uri de stil per-atribut (Fonts / Fills / Borders / NumberFormats / Alignments / Protections) înainte de fiecare salvare: o nouă trecere
CompactStylePoolsscanează indecșii de stil ai fiecărei celule și renunță la intrările de pool care nu mai sunt referențiate de nicio celulă — intrările care se acumulează când celulele sunt șterse, eliminate sau restilizate după ce intrarea de pool a fost adăugată prima dată. Pool-urile compactate produc un tabel<cellXfs>mai mic în fișierul de ieșire (de obicei 30–70% mai mic pentru documente care au trecut prin mai multe cicluri de editare), potrivind compactarea pe care motorul XLS o face deja prinCreateAllReferredList
Versiune 2.139.0
Adăugat
- Formele stratului de desen, conectorii, formele de grup și cadrele grafice non-grafic parcurg acum ciclul complet textual: când cititorul XLSX întâlnește o ancoră
<xdr:sp>,<xdr:cxnSp>,<xdr:grpSp>sau<xdr:graphicFrame>non-grafic pe care modelul tipizat (imagini / grafice / casete de text) nu o acoperă, captează XML-ul complet al ancorei și îl redă neschimbat la salvare — astfel încât desenele create în Excel (săgeți, apeluri, forme grupate, cadre smart art) supraviețuiesc unui ciclu citire→scriere fără pierderi. Fiecare foaie de calcul expuneRawDrawingAnchorCount/RawDrawingAnchor(i)pentru inspectare
Versiune 2.138.0
Adăugat
- Valorile de celulă stocate în cache ale linkului extern parcurg acum ciclul complet pe motorul XLSX: un nou model
TXLSXExternalCell/TXLSXExternalRow/TXLSXExternalSheetDataatârnă de fiecareTXLSXExternalLinkprinAddSheetData/AddRow/AddCell, scriitorul emite blocul<sheetDataSet>potrivit în interiorulexternalLinkN.xml, iar redeschiderea restaurează fiecare valoare stocată în cache.FindCachedCell(sheetIdx, row, col)caută ultima valoare cunoscută a unei celule referențiate extern — datele pe care Excel însuși le arată când registrul de lucru la distanță este offline
Versiune 2.137.0
Adăugat
- Fanionul OOXML cellXf
quotePrefix— mecanismul Excel pentru marcarea textului stocat ca literal astfel încât supraviețuiește coerciției numerice (coduri importate CSV precum00123, numere lungi de cont, orice prefăsit de utilizator cu un apostrof) — parcurge acum ciclul complet pe motorul XLSX:TXLSXAlignmentcapătă o proprietateQuotePrefix, pool-ul de aliniere îl numără la deduplicare, scriitorul emitequotePrefix="1"pe<xf>potrivit, iar redeschiderea îl restaurează fie că cellXf a purtat un copil<alignment/>sau a fost un<xf quotePrefix="1"/>gol cu auto-închidere
Versiune 2.136.0
Added
- Axele graficului sunt acum complet programabile: un model nou
TXLSXChartAxispeCategoryAxisșiValueAxisfiecărui grafic expuneLogBase(scară logaritmică, de ex. 10 pentru logaritm în bază 10),Orientation(normală / inversată),MajorGridlines/MinorGridlines,MinValue/MaxValue(NaN = automat),MajorUnit/MinorUnit,CrossesAt,TickLblPosșiDispUnits(unități de afișare: sute / mii / milioane / miliarde / trilioane). Toate au ca implicit comportamentul automat al Excelului, deci graficele existente emit același XML ca înainte; scriitorul adaugă<c:logBase>,<c:orientation>,<c:majorGridlines>,<c:majorUnit>,<c:crossesAt>,<c:tickLblPos>și<c:dispUnits>doar când apelantul stabilește o valoare non-implicită, iar redeschiderea unui astfel de grafic restabilește fiecare setare
Versiune 2.135.0
Added
- Barele de eroare ale graficului sunt acum programabile și se păstrează la nivelul motorului XLSX: fiecare
TXLSXChartSeriesprimeșteAddErrorBar(dir)care returnează unTXLSXChartErrBarcuValueType(fix / procentual / stdDev / stdErr / personalizat),Value,PlusValue/MinusValue(personalizat) șiNoEndCap; se stochează un slot de bară de eroare pe direcție (X / Y), scriitorul emite blocul corespunzător<c:errBars>, iar redeschiderea restabilește direcția, tipul și magnitudinea, astfel încât graficele științifice / inginerești își păstrează indicatorii de incertitudine
Versiune 2.134.0
Added
- Etichetele de date ale graficului sunt acum programabile și se păstrează la nivelul motorului XLSX: fiecare
TXLSXChartSeriesprimește proprietățileShowValue,ShowCategoryName,ShowSeriesName,ShowLegendKey,ShowPercent,ShowBubbleSizeșiSeparatorcare emit blocul corespunzător<c:dLbls>cu elementele sale<c:show*/>; redeschiderea unui astfel de grafic restabilește comutatoarele, astfel încât setările „afișare valoare” / „afișare procent” supraviețuiesc unui ciclu salvare-editare-salvare
Versiune 2.133.0
Added
- Formatele de imagini vectoriale EMF și WMF sunt acum tipuri de imagini de prim rang în motorul XLSX:
TXLSXImageFormatprimeștexlsxImageEmf/xlsxImageWmf, scriitorul emite tipurile de conținut potriviteimage/x-emf/image/x-wmfși extensiile.emf/.wmf, iar detectorul de format recunoaște antetele EMF (01 00 00 73), WMF plasabil (D7 CD C6 9A) și WMF standard — astfel încât imaginile lipite din Word sau PowerPoint pe care Excel le încorporează ca date vectoriale fac acum o călătorie completă (round-trip) în loc să fie eliminate
Corectat
- Subfluxurile de diagramă BIFF8 a căror înregistrare GELFRAME (
$1066) depășește limita de continuare de 8224 octeți nu mai pierd geometria de umplere/linie: cititorul acceptă acum auto-continuarea GELFRAME (Excel scrie o altă înregistrare$1066în loc de standardul$003CCONTINUE) și permite, de asemenea, îmbinarea înregistrărilor standard CONTINUE în interiorul contextului diagramei, potrivindu-se cu procesarea multi-fragment existentă a scriitorului - Imaginile de fundal pentru antet/subsol BIFF8 (
$0866) al căror conținut util depășește înregistrările de continuare nu se mai corup: fiecare segment de continuare repetă un antet MSO de 14 octeți pe care cititorul îl elimină acum înainte de concatenare, astfel încât datele imaginii încorporate nu mai sunt decalate cu 14 octeți per segment
Versiune 2.132.19
Corectat
- Curățarea stocării XLS moștenite și XLSX criptate eliberează acum fluxurile de fișiere compuse în mod determinist, prevenind blocarea fișierelor temporare după operațiunile de salvare, încărcare, VBA sau pachet criptat
- Afișarea formatată a valorilor variantelor întregi extinse aplică acum în mod consecvent formatul numeric solicitat, potrivindu-se cu comportamentul existent pentru valorile întregi standard
- Șirurile partajate, validarea datelor, foile de diagrame, arhivele ZIP, desenarea PNG și formulele text repetate curăță acum bufferele temporare într-un mod mai defensiv în timpul căilor de eroare și a operațiunilor cu text mare
Versiune 2.132.18
Corectat
- Atribuirea valorii pentru constructorul de șiruri intern curăță acum textul anterior când este atribuit un șir gol, prevenind reținerea de conținut învechit de către bufferele XML și de text reutilizate
Versiune 2.132.17
Corectat
- Crearea foilor de diagramă XLS acceptă acum numele de foi sursă citate care conțin un semn de exclamare, respinge referințele de rând supradimensionate înainte ca acestea să se poată încadra într-un rând BIFF valid și limitează numele legendelor liniilor de tendință la limita de text scurt BIFF, astfel încât înregistrările diagramei generate să rămână bine formate
Versiune 2.132.16
Corectat
- Listele interne cu cheie de șir și cheie de obiect elimină acum cheile de căutare învechite atunci când un slot existent este suprascris, prevenind cheile vechi să conducă la intrări de înlocuire
- Înlocuirile interne din listele de obiecte și cache-urile de chei unice transformate eliberează acum intrările deținute la suprascriere, golire și distrugere, prevenind scurgerile de memorie în timpul operațiunilor repetate de registre de lucru și stiluri
Versiune 2.132.15
Corectat
- Citirile directe de tip flux XLSX decodifică acum celulele booleene care stochează valori literale OOXML precum true și false
- Actualizările interne ale indexului listei de șiruri elimină acum cheile învechite când un slot existent este suprascris, prevenind rezolvarea numelor vechi la noua valoare
Versiune 2.132.14
Corectat
- Mesajele de avertizare și de eroare pentru validarea datelor BIFF8 al căror prim caracter este NUL păstrează acum limitele înregistrării în loc să scrie o lungime DV necorespunzătoare
Versiune 2.132.13
Corectat
- Analizarea textului XML respinge acum începuturile de entități imbricate, cum ar fi &&, în loc să ignore în liniște entitatea neterminată
- Formulele decompilate scriu acum constante numerice cu un separator zecimal punct invariant, astfel încât textul formulei să rămână portabil între setările regionale
Versiune 2.132.12
Corectat
- Transparența PNG de paletă ignoră acum culorile transparente care nu sunt prezente în paleta imaginii, în loc să marcheze un index de paletă arbitrar ca fiind transparent
- Formulele SUMPRODUCT se opresc acum din scanarea rândurilor rămase după primul rând din afara intervalului utilizat în argumentele de interval lungi, evitând citirea inutilă a celulelor și păstrând în același timp rezultatul calculat
Versiune 2.132.11
Corectat
- Formulele TEXT returnează acum #VALUE! atunci când un format de număr nevalid sau supradimensionat nu poate fi aplicat, în loc să fie tratat silențios ca un rezultat de succes gol
- Trunchierea tabelului de șiruri partajate eliberează acum blocurile de coadă corecte și menține tabelul reutilizabil după cicluri mari de ștergere
Versiune 2.132.10
Corectat
- Căutările exacte MATCH respectă acum caracterele joker (wildcards) Excel, iar metadatele de deplasare a rândului din formatul XLS clasic ignoră acum rândurile din afara blocului în loc să corupă structura salvată a registrului de lucru
- Metadatele text comprimat PNG eliberează acum în siguranță bufferele temporare dacă procesarea fragmentelor (chunks) generează o eroare
Versiune 2.132.9
Corectat
- Metadatele text comprimat PNG, inserarea în lista de fragmente și gestionarea ordinii octeților CRC rămân acum stabile pe toate platformele Windows acceptate
Versiune 2.132.8
Corectat
- Formulele LEFT și RIGHT raportează acum #VALUE! atunci când num_chars nu poate fi convertit într-un număr întreg valid
Versiune 2.132.7
Corectat
- Formulele SEARCH acceptă acum caractere joker (wildcards) ?, * și ~ în stil Excel
- Validarea numelui foii de lucru respinge acum caracterele nevalide pentru numele foilor Excel la redenumirea foilor
- Ștergerea manuală a întreruperilor de pagină funcționează acum după introducerea unei întreruperi înaintea întreruperilor existente
Versiune 2.132.6
Corectat
- Formulele DATE corespund acum comportamentului de reportare a lunii și zilei compatibil cu Excel, inclusiv apeluri precum DATE(2008,14,2)
- Citirile proprietății Hidden pe un interval de coloane raportează acum vizibilitatea fiecărei coloane în loc să amestece starea de vizibilitate a rândurilor
- Metadatele de rând BIFF la limita de rânduri Excel 97-2003 se încarcă acum corect, astfel încât setările pentru rândul 65536 sunt păstrate
Versiune 2.132.5
Corectat
- Încărcarea registrului de lucru BIFF tolerează acum culorile malformate al tab-urilor foii de lucru, etichetele pivot trunchiate și fragmentele de dată nevalide din cache-ul pivot fără a genera excepții
- Încărcarea pachetului și fluxului registrului de lucru curăță acum mai consecvent căile eșuate de configurare a arhivei și stocării, evitând scurgerile de resurse în cazul unor intrări incorecte sau al eșecurilor la deschiderea stocării bazate pe flux
Versiune 2.132.4
Corectat
- Gestionarea arhivelor ZIP finalizează acum pachetul curent înainte de a reutiliza același obiect de arhivă pentru un alt pachet, iar deschiderea arhivei bazate pe fișiere permite acum cititori partajați concurenți
Versiune 2.132.3
Corectat
- Scrierea pachetului registrului de lucru păstrează acum numele de intrări ZIP non-ASCII cu metadate UTF-8, prevenind apariția caracterelor ilizibile (mojibake) atunci când numele părților din pachet conțin text Unicode
- Rezultatul XML scrie acum textul brut și valorile atributelor sub formă de octeți UTF-8 atunci când eludarea (escaping) este dezactivată, potrivindu-se cu codificarea declarată a documentului
- Evaluarea formulelor își curăță acum starea de desfășurare după excepțiile de tip callback și gestionează corect anularea numerelor mari pe compilările Delphi Unicode
- Extragerea matricei pentru formulele matrice respectă acum limitele inferioare non-zero ale tablourilor Variant în loc să genereze erori pentru tablourile valide bazate pe unu
Versiune 2.132.2
Modificat
- Sortarea intervalelor folosește acum o trecere de ordonare stabilă O(n log n) pentru intervale sortate mari, păstrând în același timp comportamentul existent de salvare-încărcare a conținutului rândurilor
- Analizarea și formatarea numerică ODS și XLSX reutilizează acum starea de formatare invariantă în loc să o creeze în mod repetat în căile cele mai utilizate (hot paths)
Corectat
- Analizarea XML acceptă acum blocuri CDATA valide și instrucțiuni de procesare UTF-8 fără a corupe textul sau a eșua pe marcaje valide
- Analizarea formulelor acceptă acum notația științifică cu semn și respinge în mod curat octeții de formulă malformați sau trunchiați
- Căile clasice de deschidere și salvare a registrului de lucru eliberează acum fluxurile și stocările în mod fiabil după erori, prevenind menținerea blocată a fișierelor temporare
- Gestionarea bufferului binar validează acum limitele de copiere și citire, mărește bufferele de destinație înainte de copiere și respinge corect referințele inverse de compresie VBA malformate
Versiune 2.132.1
Corectat
- S-a corectat mesajul de eroare generat atunci când un registru de lucru criptat utilizează o schemă de criptare neacceptată: anterior se susținea că ECMA-376 Agile Encryption nu poate fi citit, deși decriptarea Agile (AES-128/192/256) este acceptată începând cu versiunea 2.119.0. Mesajul listează acum schemele care sunt de fapt acceptate
- Open direcționează acum apelanții către TXLSXWorkbook.OpenEncrypted atunci când refuză un pachet OOXML criptat, în loc să specifice că registrele de lucru criptate nu sunt acceptate
Versiune 2.132.0
Modificat
- Încărcarea XLSX este substanțial mai rapidă: cititorul XML internează acum numele elementelor repetate și convertește valorile textului și ale atributelor direct din bufferul său de scanare, reducând alocările de memorie per celulă cu mai mult de jumătate. Deschiderea multi-threaded (2.128.0) beneficiază cel mai mult — alocările eliminate fiind cele care serializau firele de execuție lucrătoare —, registrele de lucru cu mai multe foi deschizându-se acum de aproape două ori mai rapid decât calea single-threaded pe mașinile multi-core; deschiderea single-threaded câștigă, de asemenea, câteva procente
Versiune 2.131.0
Added
- Blocurile de extensie a foii de lucru pe care HotXLS nu le modelează — intrările
<ext>din<extLst>-ul unei foi de lucru, altele decât liniile de tendință (sparklines), așa cum sunt scrise de Excel pentru caracteristici precum formatarea condiționată x14 sau slicers — sunt acum păstrate verbatim când un registru de lucru este deschis și scrise înapoi la salvare, astfel încât deschiderea și resalvarea unui fișier nu mai elimină acele extensii. Blocurile capturate sunt vizibile doar pentru citire prinWorksheet.RawWorksheetExtsși călătoresc împreună cu foaia atunci când aceasta este copiată într-un alt registru de lucru
Versiune 2.130.0
Added
- Registrele de lucru salvate care conțin formule conțin acum componenta lanțului de calcul
xl/calcChain.xml, permițând Excel să își alimenteze motorul de dependențe din ordinea înregistrată în loc să o reconstruiască la încărcare. După un apelRecalculate, lanțul urmează ordinea topologică a grafului de dependențe; în caz contrar, celulele cu formule sunt listate în ordinea documentului (un indiciu valid pe care Excel îl rafinează din mers). Partea respectivă, tipul său de conținut și relația sa cu registrul de lucru sunt emise împreună și supraviețuiesc ciclurilor de deschidere/salvare
Versiune 2.129.0
Added
- Noua proprietate
Workbook.ParallelParseThreadsajustează numărul de workeri pentru calea multi-threaded Open introdusă în 2.128.0 (0 = automat, un worker per nucleu CPU). Analizarea foii de lucru alocă intens memorie, iar alocarea de memorie este serializată între firele de execuție, astfel încât pe unele sarcini de lucru o limită explicită mică performează la fel de bine — sau chiar mai bine decât — numărul maxim de nuclee; proprietatea le permite integratorilor să aleagă ce funcționează cel mai bine pentru fișierele lor
Versiune 2.128.0
Added
- Încărcare XLSX multi-threaded: deschiderea unui registru de lucru analizează acum XML-ul fiecărei foi de lucru — costul dominant pe fișierele mari — pe fire de execuție de tip worker, astfel încât registrele cu mai multe foi se deschid mai rapid pe mașinile multi-core. Părțile foilor sunt extrase din pachet în prealabil și fiecare worker accesează doar propria foaie, astfel încât registrul de lucru încărcat este identic cu rezultatul serial
- Noua proprietate
Workbook.ParallelParse(implicitTrue) revine la analizarea pe un singur fir de execuție când este setată laFalseînainte deOpen— o opțiune de renunțare pe o singură linie pentru medii cu resurse limitate
Modificat
- Funcția callback de citire
OnProgressse declanșează în continuare o singură dată per foaie de calcul pe firul de execuție apelant, acum pe măsură ce fiecare foaie este trimisă spre analiză, mai degrabă decât strict între foi de calcul
Versiune 2.127.0
Added
- Recalculare incrementală pe motorul XLSX: noua metodă
Workbook.Recalculateconstruiește un grafic de dependență a formulelor, evaluează fiecare celulă cu formulă o singură dată în ordinea dependențelor și stochează fiecare rezultat în valoarea memorată în cache a celulei. Apelurile ulterioare reevaluează doar celulele afectate de modificările de valoare de la ultima trecere — pe modelele înlănțuite (foi financiare, cascade de rapoarte), editarea unei intrări recalculează doar formulele din aval, în loc de întregul registru de lucru - Funcțiile volatile (
NOW,TODAY,RAND,OFFSET,INDIRECT) se recalculează la fiecare trecere, la fel ca și formulele ale căror referințe nu pot fi rezolvate static (nume cu zone multiple, registre de lucru externe) — motorul recalculează mai degrabă în exces decât să riște un rezultat învechit - Ciclurile de referințe sunt detectate în loc de a se bucla la infinit:
Recalculatereturnează un cod de eroare atunci când formulele formează un lanț circular, omite membrii ciclului și evaluează în continuare fiecare formulă din afara ciclului. Referințele între foi de calcul, intervalele denumite și formulele matriceale CSE (rezultatele fiind extinse pe intervalul ancorat) participă pe deplin la graful de dependență
Modificat
- Calea existentă de tip
Calculatela cerere rămâne neschimbată;Recalculateeste un API opțional separat, iar registrele de lucru care nu îl apelează niciodată se comportă exact ca înainte
Versiune 2.126.0
Added
- Linii grafice (sparklines) pe motorul XLSX: foile de calcul conțin acum grupuri de linii grafice — mini-diagramele din celulă pe care Excel le randează dintr-un interval de date — cu cele trei tipuri Excel (linie, coloană, win/loss stivuite). Creați una cu
Worksheet.AddSparklineGroupsau creați grupuri manual prin intermediul noii colecțiiWorksheet.SparklineGroups, adăugând orice număr de linii grafice per grup, fiecare având un interval sursă și o celulă de afișare - Grupurile de linii grafice (sparklines) expun setul complet de opțiuni oferite de Excel: grosimea liniei, marcajele punctelor de date, comutatoarele de evidențiere pentru punctele ridicate/scăzute/negative/primele/ultimele, opt sloturi de culoare ARGB (serie, negativ, axă, marcaje, primul, ultimul, maxim, minim), scalarea axei verticale per grup sau per linie grafică și gestionarea spațiului/zeroului/extinderii pentru celulele sursă goale
- Liniile grafice supraviețuiesc unui ciclu complet de salvare-deschidere: salvarea emite blocul de extensie
extLstal foii de calcul ([MS-XLSX] §2.3.6), astfel încât Excel 2010 și versiunile ulterioare să poată reda liniile grafice, iar deschiderea unui astfel de registru de lucru — fie că este scris de HotXLS, fie de Excel — reconstruiește fiecare grup, opțiune și interval, astfel încât acestea să persiste prin ciclurile de editare. Copierea unei foi de calcul în alt registru de lucru clonează, de asemenea, grupurile sale de linii grafice
Versiune 2.125.0
Added
- Șapte funcții text DBCS bazate pe numărarea octeților din analiza lacunelor XLSSuit sunt evaluate acum pe ambele motoare:
LEFTB,RIGHTB,MIDB,LENB,FINDB,SEARCHBșiREPLACEB. Fiecare tratează datele de intrare ca pe un șir de octeți sub pagina de cod ANSI a sistemului, astfel încât caracterele CJK (chineză/japoneză/coreeană) ocupă 2 octeți, în timp ce ASCII ocupă 1; operațiunile care ar diviza o pereche de octeți de început/sfârșit DBCS revin la cel mai apropiat hotar de caracter, potrivindu-se cu comportamentul Excel
Versiune 2.124.0
Added
- Cinci funcții de testare a ipotezelor și de distribuție identificate ca lacune în analiza comparativă cu XLSSuit sunt acum evaluate pe ambele motoare:
Z.TEST(probabilitatea unilaterală pe coada dreaptă ca media eșantionului să fie cel puținxsub ipoteza nulă),T.TEST(valoarea p a testului t pereche pentru două eșantioane; tipurile neasociate cu varianță egală/inegală sunt amânate),CHISQ.TEST(valoarea p a testului de concordanță prin CDF chi-pătrat pe coada superioară),HYPGEOM.DIST(PMF/CDF hipergeometric cu indicatorul cumulativ) șiNEGBINOM.DIST(PMF/CDF binomial negativ). Calculul matematic al valorii p reutilizează funcțiile ajutătoare CDF normală/Student-t/chi-pătrat existente ale motorului prin rutine de sine stătătoare imbricate, astfel încât nicio metodă Calc existentă nu se modifică
Versiune 2.123.0
Added
- Paisprezece funcții de formulă identificate ca lacune în urma unei comparații cu XLSSuit sunt acum evaluate pe ambele motoare:
AVERAGEIF(medie pe un singur criteriu, echivalentul funcțiilor SUMIF/COUNTIF care îi lipsea motorului),WORKDAY.INTLșiNETWORKDAYS.INTL(măști de weekend personalizate prin coduri numerice de la 1 la 17 sau un șir de 7 caractere de la Luni la Duminică),XIRRșiXNPV(rata internă de rentabilitate și valoarea actuală netă pentru fluxuri de numerar cu date neregulate, rezolvate prin bisecție de încadrare),CEILING.PRECISE/FLOOR.PRECISE/ISO.CEILING(rotunjire independentă de semn),PERCENTRANK.INC/PERCENTRANK.EXC(rang procentual cu interpolarea incluzivă/exclusivă corespunzătoare),MODE.MULT(returnează sub formă de tablou toate valorile aflate la egalitate pentru frecvența cea mai mare),ERF.PRECISE(funcția de eroare Gauss prin seria sa alternantă),ACCRINT(dobândă acumulată) șiISPMT(dobândă periodică pentru amortizare cu principal constant)
Versiune 2.122.0
Added
- Comentariile fir (threaded comments - Excel 365) fac acum o călătorie completă (round-trip) în motorul XLSX:
AddThreadedCommentșiAddThreadedReplype o foaie de lucru creează un arbore de răspunsuri părinte→copil ancorat la o celulă, înregistrează automat fiecare autor într-o nouă listăPersonsla nivel de registru de lucru și emit partea dedicatăxl/threadedComments/threadedCommentN.xmlper foaie, plus fișierulxl/person/person.xmlla nivel de registru de lucru; redeschiderea unui astfel de pachet reconstruiește arborele conversației și lista de participanți din acele părți, astfel încât lanțurile de răspunsuri, identificatorii și numele afișate supraviețuiesc unui ciclu complet citire→scriere
Versiune 2.121.0
Added
- Evaluatorul de formule calculează acum funcțiile de matrice dinamică Excel 365
XMATCH,SORT,UNIQUEșiSEQUENCE, alăturându-se celor deja acceptateXLOOKUPșiFILTER; rezultatele se extind ca matrice 2D, astfel încâtSEQUENCE(3;2;1;1)returnează o grilă de 3×2,SORTreordonează rândurile după orice coloană cheie în ordine crescătoare sau descrescătoare,UNIQUErestrânge rândurile duplicate păstrând prima apariție, iarXMATCHraportează poziția bazată pe 1 a unei valori de căutare cu aceleași moduri de potrivire exactă/caractere joker/următoarea mai mică/următoarea mai mare caXLOOKUP
Versiune 2.120.0
Added
- Noua metodă
PasteFromClipboardpe foile de lucru ale ambelor motoare citește text delimitat prin tab-uri din clipboard-ul Windows — datele utile pe care Excel le plasează acolo când este copiat un interval sau o selecție simplă din orice altă aplicație — și le scrie în celule începând de la rândul și coloana specificate, cu aceeași conversie a tipurilor de numere/date/valori booleene pe care o utilizează deja încărcătorul CSV; textul care începe cu=devine o formulă activă, potrivindu-se cu modul în care Excel însuși efectuează lipirea
Versiune 2.119.0
Added
- Citirea ECMA-376 Agile Encryption — protecția prin parolă pe care Excel 2010 și versiunile ulterioare o aplică în mod implicit:
OpenEncryptedanalizează acum descriptorul de criptare XML, derivă cheile cu hashing cu număr de rotații (spin-count) SHA-512, verifică parola și decriptează pachetul segmentat AES-CBC (AES-128/192/256), astfel încât registrele de lucru protejate prin parolă direct în Excel se deschid fără a avea instalat Excel OpenEncryptedgestionează toate cele trei cazuri printr-un singur punct de intrare:.xlsxsimplu necriptat, Standard Encryption (ciclul nostru completSaveAsEncrypted) și Agile Encryption; o parolă greșită generează aceeași eroare clară în fiecare schemă
Corectat
- Salvarea unui registru de lucru
.xlsxal cărui fișier XML de foaie de calcul depășea aproximativ 116 KB — cam 3.000 de rânduri de date tipice de șir — se bloca cu o eroare de depășire a stivei (stack overflow); suma de control CRC-32 a scriitorului ZIP procesează acum datele în felii de 64 KB, ceea ce menține backendul de compresie în afara căii sale de cod pentru date de intrare mari care alocă un buffer temporar supradimensionat pe stivă. Rezultatul sumei de control rămâne neschimbat
Modificat
- Deduplicarea șirurilor partajate rulează acum printr-o tabelă hash în loc de a scana lista de șiruri, iar componenta
sharedStrings.xmleste asamblată prin intermediul unui generator de șiruri pre-mărit în loc de concatenări repetate — împreună cu indexul celulelor în timp constant, acest lucru reduce timpul de salvare a 120.000 de celule de șiruri de la zeci de secunde la aproximativ o treime de secundă
Versiune 2.117.0
Modificat
- XLSX celulă access is now constant-time: the foaie de lucru celulă colecție carries a hash index over (rând, coloană), replacing the previous linear scan — so populating, reading back, or loading a large sheet scales linearly with the celulă count instead of quadratically; filling 100,000 cells now takes well under a second where it previously took minutes
- The speedup applies across the engine:
Cells[r, c],HasCell, registru de lucru loading, saving, cross-registru de lucru copies, auto-fit, and every helper that touches cells by position all benefit; rând and coloană insertion or deletion rebuilds the index in a single pass
Versiune 2.116.0
Adăugat
- PDF export in the classic XLS engine: new
SaveAsPDFmethods on the foaie de lucru and registru de lucru render the used interval (or a caller-supplied interval throughTXLSPDFExport) as a paginated grid — celulă display text through the number format, gridlines, coloană widths derived from the Excel widths and scaled to fit the page, and automatic multi-page pagination - Output is a self-contained PDF 1.4 fișier with no external dependencies, using the built-in Helvetica font with WinAnsi text encoding; portrait or landscape A4 orientation, page margin, and font size are configurable on the exporter
- This is a data-presentation export alongside HTML and RTF: it reproduces tabular content and layout for reports and document handoff rather than full per-celulă styling
Versiune 2.115.0
Adăugat
- Crearea unui grafic cu un singur apel dintr-un interval de date în motorul XLSX: noul
AddChartFromRangeconstruiește un grafic complet și își derivă automat seriile dintr-un bloc de date dreptunghiular — echivalentul funcției „inserare grafic din selecție” din Excel — cu un aranjament al seriilor pe coloane sau seriile transpuse pe rânduri - Named shortcuts
AddColumnChart,AddBarChart,AddLineChart,AddPieChart, andAddAreaChartpick a chart type by name over the same one-call flow, reading series names from the header rând and category labels from the first coloană - Actualizare: Series references are qualified with the source sheet's quoted name, so a generated chart keeps working when placed on any sheet and survives save and reload
Versiune 2.114.0
Adăugat
- RTF import in the classic XLS engine, the inverse of the existing
SaveAsRTFexport: newOpenRTFmethods on the foaie de lucru and registru de lucru read an RTF document's table into foaie de lucru cells —\celladvances the coloană,\rowadvances the rând — starting at A1 - Actualizare: Recuperează date tabelare din fișiere produse de
SaveAsRTF, Word sau WordPad: textul numeric este stocat ca numere, deci formulele continuă să funcționeze, escape-urile hexa (\'hh) și Unicode (\uN) se decodează corect, iar grupurile de antet (tabel de fonturi, tabel de culori, foaie de stil, info) sunt omise - Documents with no table fall back to paragraph mode, importing each
\paras the next rând in coloană A
Versiune 2.113.0
Adăugat
- Citirea registrelor de lucru
.xlsxcriptate:OpenEncrypteddecriptează acum pachetele cu criptare standard ECMA-376 (AES-128), completând ciclul complet cuSaveAsEncryptedexistent — citește containerul de fișier compus, derivă cheia din parolă, o verifică și încarcă registrul de lucru recuperat - A wrong parolă raises a clear "parolă is incorrect" error, and
OpenEncryptedon a plain unencrypted.xlsxcontinues to load it directly, so callers can route every fișier through one entry point
Modificat
- Actualizare: The unsupported-encryption message now names ECMA-376 Agile Encryption specifically as the remaining unsupported scheme, since Standard Encryption reading and writing are both available
Versiune 2.112.0
Adăugat
- New
TaggedTextproperty on XLSX cells converts between rich text and lightweight markup:<b>,<i>,<u>,<s>,<sub>,<sup>,<color=#RRGGBB>,<font=Name>, and<size=N>, with</>/&escapes — so multi-format celulă content can be produced from a template String instead of assembling run objects by hand - Scrierea marcajelor construiește lista de rulări și păstrează
Valueca text simplu concatenat; marcajele fără etichete stochează un șir simplu fără încărcătură bogată; citirea serializează atributele fiecărei rulări ca seturi complete de etichete; etichetele necunoscute trec ca text literal
Remediat
- A rich-text run consisting entirely of whitespace (for example a single styled space between words) now survives save and reload; previously the space was dropped when the fișier was reopened
Versiune 2.111.0
Adăugat
- Noul eveniment
OnProgresspe registrul de lucru XLSX raportează progresul de încărcare și salvare: se declanșează o dată per foaie de lucru pe măsură ce este analizată în timpulOpensau emisă în timpulSaveAs, transportând faza (citire sau scriere), numărul curent de foaie în bază 1 și totalul — astfel încât aplicațiile pot comanda o bară de progres în operații lungi cu mai multe foi, la un cost de apel invers neglijabil
Versiune 2.110.0
Adăugat
- New
TXLSRowCursordataset-style rând cursor for.xlsx/.xlsmfiles:Open,SelectSheet, thenFindFirst/FindNextwalk a foaie de lucru one rând at a time with only the current rând's cells in memory — a pull-driven alternative toTXLSDirectReader's callbacks for sequentially processing multi-million-rând sheets - Each rând exposes its 1-based foaie de lucru rând number, the populated cells in document order (typed valoare, formulă text, style index), and a
ValueByCollookup that returnsNullfor columns not populated on that rând; rows with no populated cells are skipped - Sheet names and count are available after
Open(fișier and stream overloads), with shared strings and date-format detection handled the same way as the streaming reader
Versiune 2.109.0
Adăugat
- Noua „pensulă de format”
TXLSXCellFormatpentru motorul XLSX: descrieți fontul, umplerea, chenarul, alinierea, formatul numeric și protecția o singură dată, apoi ștampilați oricâte ținte cuApply(celulă singulară),ApplyRange,ApplyRows,ApplyColssauApplySheet - Actualizare: Sunt aplicate doar aspectele atinse efectiv — o pensulă care stabilește doar
Font.Boldlasă neatinse umplerile, chenarele și formatele numerice ale țintelor — astfel încât pensulele se compun cu formatarea existentă, ca pensula de format din Excel - Each apply resolves the touched aspects into the registru de lucru style pools once and then writes only pool indices per celulă, so formatting large ranges costs one pool lookup per aspect rather than per celulă;
ApplyRangematerializes missing cells while the rând/coloană/sheet forms stamp existing cells only
Versiune 2.108.0
Adăugat
- Text de afișare boolean localizabil: noile variabile
XLSBooleanTrueText/XLSBooleanFalseTextcontrolează modul în care se randează valorile celulelor booleene oriunde se produce text de afișare —FormattedText, export HTML și măsurarea automată a potrivirii — astfel încât aplicațiile localizate pot afișa de exemplu WAHR/FALSCH sau VRAI/FAUX
Modificat
- Actualizare: Boolean cells now display as
TRUE/FALSEby default, matching Excel's grid, instead of the runtime'sTrue/Falsecapitalization
Versiune 2.107.0
Adăugat
- New
OnPasswordevent on the classic XLS registru de lucru: whenOpenmeets an encrypted registru de lucru and the supplied parolă is missing or wrong, the event asks the application for a parolă and retries the open (up to three attempts) — so interactive tools can prompt the user instead of pre-loading passwords or inspecting error codes - The event receives the current parolă by reference and a
Retryflag; leavingRetryatFalsegives up and returns the original parolă error
Versiune 2.106.0
Adăugat
- Noua clasă
TXLSFileMonitorurmărește un fișier de registru de lucru pe disc și declanșeazăOnFileChangedcând alt proces — de obicei Excel — îl suprascrie, astfel încât aplicațiile pot reîncărca și reîmprospăta automat vizualizarea - Actualizare: Bazat pe interogare (timpul ultimei scrieri plus dimensiunea,
IntervalMsconfigurabil, implicit 1 s), deci funcționează pe discuri locale și partajări de rețea deopotrivă, fără o buclă de mesaje;SynchronizeEventalege între livrarea pe firul principal pentru gestionarii UI (implicit) și livrarea directă pe firul observator pentru cod de consolă sau serviciu - A fișier that briefly disappears during a save cycle does not fire a false event; the change is reported once the new content is in place
Versiune 2.105.0
Adăugat
- Potrivire automată mărginită în motorul XLS clasic, corespunzând limitelor pe care motorul XLSX le oferă deja: noile supraîncărcări
AutoFit(Columns, AMin, AMax),ColumnsAutoFit(AMinWidth, AMaxWidth)șiRowsAutoFit(AMinHeight, AMaxHeight)restrâng lățimea fiecărei coloane potrivite (unități de lățime Excel) sau înălțimea fiecărui rând (puncte) la intervalul dat — 0 lasă o parte nemărginită, iar o coloană sau un rând complet gol primește în continuare minimul cerut
Versiune 2.104.0
Adăugat
- New Doar citire
FormattedTextproperty Returnează celulă's display text — the stored valoare rendered through its number format, the way Excel shows it in the grid — covering thousands separators, decimals, percentages, date and time masks, multi-section positive/negative/zero masks, and Boolean formats - Available in both engines: on
IXLSRangein the classic XLS engine (multi-celulă ranges render their anchor celulă) and onTXLSXCellin the XLSX engine (rich-text cells return their concatenated run text)
Versiune 2.103.0
Adăugat
- Noua funcție
DetectExcelContentFormat(supraîncărcări de nume de fișier și flux) identifică containerul unui registru de lucru din octeții săi de început, mai degrabă decât din extensia fișierului — raportând un fișier compus BIFF/OLE, un pachet OOXML.xlsx, un pachet OpenDocument.odssau text simplu delimitat — astfel încât aplicațiile pot direcționa fișierele redenumite sau fără extensie către încărcătorul potrivit
Modificat
- Actualizare:
TXLSWorkbook.Opendetectează acum semnătura de conținut și respinge pachetele bazate pe ZIP (un.xlsxsau.odsredenumit.xls) cu un mesaj clar care numește încărcătorul potrivit, în loc să eșueze cu un cod de eroare opac TXLSXWorkbook.Opennow recognizes OLE compound-fișier content (a legacy.xlsrenamed to.xlsx, or an encrypted package) and reports what the fișier actually is, instead of surfacing a ZIP parser error
Versiune 2.102.0
Adăugat
- Cross-registru de lucru foaie de lucru copy in the classic XLS (BIFF8) engine now brings the registru de lucru-level defined names a formulă uses over to the destination — the same thing Excel does when a sheet moves between workbooks: a name the destination already has is bound as-is (no duplicate is created), a missing name is registered with its original definition and visibility so the formulă recompiles against it, and a name whose definition cannot resolve in the destination (for example, it points at a sheet that does not exist there) leaves the formulă on its computed valoare as before
Versiune 2.101.0
Adăugat
- Cross-registru de lucru foaie de lucru copy in the classic XLS (BIFF8) engine now re-points formulas at the source registru de lucru as an external link when the destination has no sheet of the referenced name and the source has been saved to a fișier: the copied celulă stays a live formulă (its references switch to the [SourceBook]Sheet form), the source's computed valoare is kept as the cached result so reads keep working until the link is refreshed, and the external registru de lucru reference round-trips through save and reload; formulas carrying defined-name references, and copies from unsaved source workbooks, keep the computed valoare as before
Versiune 2.100.0
Adăugat
- Array formulas now survive foaie de lucru copies in the classic XLS (BIFF8) engine: each array interval is rebuilt as a whole in the copy — within the same registru de lucru and across workbooks alike — with the root formulă recompiled against the destination's sheet names; an array the destination cannot recompile keeps its computed values instead
Remediat
- Copying a interval that contains array-formulă cells between classic XLS worksheets no longer risks a crash on the spill cells (which carry no formulă tree of their own); such cells now transfer their computed valoare
Versiune 2.99.0
Adăugat
- Chart sheets can now be copied between classic XLS (BIFF8) workbooks: the chart record stream is cloned into the destination, series category / valoare / name references are recompiled against the destination's sheet names (a series whose sheet has no same-name counterpart falls back to an empty reference so the fișier still opens), chart font references migrate by valoare into the destination font table, and the page setup, tab color, zoom, and visibility of the chart sheet come along; this removes the last documented limitation of the cross-registru de lucru foaie de lucru copy
Versiune 2.98.0
Adăugat
- Cross-registru de lucru foaie de lucru copy in the classic XLS (BIFF8) engine now preserves rich-text formatting inside cells: each formatting run's font is migrated by valoare into the destination registru de lucru's font table and the run is rewritten to point at it, so mixed-font strings keep their appearance instead of falling back to plain text; phonetic (Far-East) auxiliary data travels with the String as well
Remediat
- Fonts referenced only by rich-text runs (and not by any celulă format) are no longer dropped from the FONT table when saving a classic XLS registru de lucru, and the runs now follow the same font reordering as celulă formats on save, so rich-text strings keep the correct fonts after a save/reload cycle
Versiune 2.97.0
Adăugat
- Cross-registru de lucru foaie de lucru copy in the classic XLS (BIFF8) engine now also clones embedded pictures: the image bytes migrate into the destination registru de lucru's picture store (identical images are shared rather than duplicated), and each picture frame keeps its celulă anchor, size, visibility, and transparent color; a new CrossWorkbookCopyXls sample project demonstrates the classic-engine copy end to end
Modificat
- Classic XLS cross-registru de lucru copy limitations are now documented: chart sheets are not copied (AddCopy returns nil for them), and a formulă whose sheet reference has no same-name sheet in the destination keeps the source's computed valoare instead of becoming an external reference
Versiune 2.96.0
Adăugat
- Cross-registru de lucru foaie de lucru copy in the classic XLS (BIFF8) engine now also clones conditional formats (celulă-is and expression rules, data bars, color scales, icon sets, and their differential styles), data validations (list, numeric, date, text-length, and custom rules with prompt and error boxes), the AutoFilter definition with its per-coloană criteria (the dropdown buttons are rebuilt in the copy), and tables (ids and names are re-issued so they stay unique in the destination registru de lucru); rule formulas are recompiled against the destination's sheet names, matching the behavior of celulă formulas
Versiune 2.95.0
Adăugat
- Classic XLS (BIFF8) worksheets can now be copied from one registru de lucru into another: TXLSWorksheets.AddCopy adds a new sheet to the destination registru de lucru and copies the source sheet's celulă values, formulas (re-encoded as text so the destination recompiles them against its own sheet names, keeping same-name 3D references live), merged cells, comments, hyperlinks, rând heights, coloană widths, outline levels, frozen panes, sheet protection, page setup, manual page breaks, tab color, and view settings; celulă, rând, and coloană formats are migrated by valoare into the destination registru de lucru's format table, so a styled source produces an independently styled copy
- Cross-registru de lucru format migration in the classic XLS engine now carries the full-precision RGB and theme colors alongside each format entry, so fills, fonts, and borders keep their exact colors instead of falling back to palette approximations; this also applies to interval-level paste between workbooks
Versiune 2.94.0
Adăugat
- Cross-registru de lucru foaie de lucru copy now clones conditional formats (with their differential styles and the dataBar / colorScale / iconSet visual payloads), tables, data validations, and charts (with every series); each sub-obiect deep-copies its own state into the destination foaie de lucru
- Cross-registru de lucru formulă references are rewritten: a reference whose sheet name exists in the destination resolves as-is, otherwise it becomes an external reference back to the source registru de lucru (which is registered as an external link) or #REF! when the source has no fișier identity; the rewrite applies to celulă formulas, conditional-format rules, data-validation formulas, and chart series ranges alike
Versiune 2.93.0
Adăugat
- A foaie de lucru can now be copied from one registru de lucru into another: TXLSXSheets.AddCopy adds a new sheet to the destination registru de lucru and copies the source sheet's cells, formulas, merged ranges, coloană/rând sizing, hidden/collapsed/outline flags, freeze panes, view state, protection, page setup, AutoFilter interval, and tab colour onto it; the six per-celulă style indices are remapped into the destination registru de lucru's own Font/Fill/Border/NumberFormat/Alignment/Protection pools via valoare-equality lookup, so a styled source produces an independently-styled copy rather than indices pointing at the wrong pool
- The six per-attribute style pools (Fonts, Fills, Borders, NumberFormats, Alignments, Protections) each expose a 1-based LookupOrAdd that deduplicates by valoare; a new CrossWorkbookCopy sample project demonstrates the cross-registru de lucru copy with style preservation
Versiune 2.92.0
Adăugat
- XLSX workbooks now support pivot tables: TXLSXWorksheet.AddPivotTable scans a flat source interval, auto-builds a pivot cache, and Returnează typed pivot table for rând / coloană / page / data-axis wiring, mirroring the long-standing BIFF8 (XLS) engine API so the same code targets either format; PivotSetDataFieldFormat assigns a number format to each aggregated valoare field
- Excel-created pivot tables round-trip without loss through Open then Save: the XLSX engine preserves each pivot cache definition, cache records, and pivot table part verbatim and replays the original bytes on save, so re-saving a registru de lucru never drops or alters its pivots even when they use features the typed model does not expose
Versiune 2.91.0
Adăugat
- Un AutoFilter al foii de lucru poate fi acum aplicat datelor, astfel încât registrul de lucru salvat se deschide cu rândurile care nu se potrivesc deja ascunse, reflectând ceea ce face Excel atunci când este aleasă o valoare din meniul derulant de filtrare
- Imaginile încorporate își expun geometria în unități reale (centimetri, inci, puncte) alături de valorile EMU și pot fi redimensionate cu un factor de scară, cu blocare opțională a raportului de aspect
- Marginile de configurare a paginii (page-setup) pot fi setate direct în centimetri, ca o conveniență metrică față de marginile bazate pe inci
- Foile de lucru XLSX protejate expun acum cincisprezece opțiuni detaliate de permisiune (formatare celule, inserare/ștergere rânduri și coloane, sortare, AutoFilter, selectare celule blocate/deblocate și altele) prin intermediul unei noi proprietăți AllowOption, potrivindu-se cu lista de casete de selectare din Review > Protect Sheet a Excel; setările per-acțiune se păstrează la salvarea și redeschiderea fișierului
- Foile de lucru XLSX pot fi acum duplicate (TXLSXSheets.Duplicate): se adaugă o nouă foaie și celulele sursei, intervalele îmbinate, dimensionarea coloanelor/rândurilor, panourile înghețate, starea de vizualizare, protecția, configurarea paginii și culoarea filei sunt copiate pe aceasta, reflectând opțiunea click-dreapta > Move or Copy > Create a copy din Excel
- Douăzeci și două de noi proiecte eșantion acoperă capacitățile suportate de bibliotecă: criptarea registrelor de lucru, comentariile celulelor, hyperlinkurile, numele definite, evaluarea AutoFilter, imaginile încorporate, un șablon de factură, formatarea condiționată XLSX avansată, celulele îmbinate, conturarea rândurilor/coloanelor, panourile înghețate, dispunerea pe mai multe foi, formulele matriceale, copierea/mutarea intervalelor, căutarea/înlocuirea, sistemele de date, textul bogat (rich text), opțiunile avansate de export CSV și HTML, formatele numerice personalizate, rândurile/coloanele ascunse și protecția foilor de lucru
Versiune 2.90.29
Modificat
- Cititorul direct de streaming numără acum fiecare celulă completată chiar și atunci când nu este atașat niciun handler pe celulă, astfel încât un simplu apel ReadFile poate fi folosit pentru a dimensiona rapid o foaie de lucru; numărul returnat și proprietatea CellCount raportează numărul de celule completate scanate
Versiune 2.90.28
Adăugat
- Formulele pot fi acum evaluate pas cu pas, echivalentul comenzii Evaluare formulă din Excel: un nou trasor reduce o expresie cu câte un sub-pas pe rând, începând din interior, și raportează fiecare reducere împreună cu sub-expresia sa sursă, aceeași sub-expresie după ce operanzii săi sunt înlocuiți de valorile lor, și valoarea rezultată, astfel încât aplicațiile să poată arăta modul în care este construit un rezultat; respectă prioritatea operatorilor, păstrează referințele de interval intacte pentru funcții precum SUM și refolosește motorul de calcul al foii de lucru, astfel încât fiecare pas să corespundă unei recalculări complete
Versiune 2.90.27
Adăugat
- Registrele de lucru XLSX pot fi acum produse celulă cu celulă printr-un nou scriitor direct de streaming care emite fiecare foaie de lucru direct în pachet pe măsură ce sosesc rândurile, fără a construi un arbore complet de celule în memorie, astfel încât pot fi generate fișiere foarte mari cu un consum de memorie aproape constant; scriitorul gestionează șiruri de caractere inline, numere, valori booleene, date și formule pe mai multe foi și interacționează cu cititorul direct de streaming
Versiune 2.90.26
Adăugat
- Registrele de lucru XLSX pot fi acum scanate celulă cu celulă printr-un nou cititor direct de streaming care ridică evenimente pe celulă și pe foaie fără a construi un arbore complet de celule în memorie, menținând consumul de memorie aproape constant pentru fișiere foarte mari; fiecare celulă raportată poartă valoarea sa, tipul (număr, șir, boolean, dată sau eroare), textul formulei și indexul stilului, cu detecție opțională a datei și suport pentru abandonare timpurie
Versiune 2.90.25
Adăugat
- Foile de lucru XLS clasice pot adăuga acum hyperlinkuri din referințele celulelor în stil A1 păstrând în același timp normalizarea adreselor URL, subadresele vizate ale agendei de lucru, textul afișat și sfaturile de pe ecran
Versiune 2.90.24
Adăugat
- Întreruperile de pagină clasice XLS pot fi acum adăugate din poziții de rând sau coloană bazate pe 1 și referințe de celule în stil A1 prin supraîncărcările colecției de întreruperi de pagină și ale asistenților de foaie de lucru
Versiune 2.90.23
Adăugat
- Foile de lucru și colecțiile de forme clasice XLS pot crea acum obiecte de desenare dreptunghi, oval, linie și forme automate tipizate din șiruri de interval în stil A1
Versiune 2.90.22
Adăugat
- Colecțiile de forme clasice XLS pot crea acum casete de text din șiruri de interval în stil A1 printr-o supraîncărcare AddTextBox
Versiune 2.90.21
Adăugat
- Casetele de text clasice XLS pot fi acum repoziționate din șiruri de interval în stil A1 printr-o nouă supraîncărcare SetArea
Versiune 2.90.20
Adăugat
- Casetele de text ale foilor de lucru clasice XLS pot fi acum create din șiruri de interval în stil A1 printr-o supraîncărcare AddTextBox
Versiune 2.90.19
Adăugat
- Foile de lucru clasice XLS pot crea acum casete de text de desenare direct din ancore de rând și coloană printr-o nouă metodă AddTextBox
Versiune 2.90.18
Adăugat
- Foile de lucru clasice XLS pot crea acum comentarii pentru celule direct din coordonatele de rând și coloană prin noile supraîncărcări AddComment
Versiune 2.90.17
Adăugat
- Numele definite clasice XLS pot fi acum create dintr-un nume de foaie de lucru și coordonate de rând/coloană prin noile supraîncărcări Names.Add
Versiune 2.90.16
Adăugat
- Inserarea imaginilor clasice XLS poate acum plasa imagini din fișiere și TBitmap la o celulă specificată a foii de lucru fără a modifica selecția curentă
Versiune 2.90.15
Adăugat
- Coloanele AutoFilter clasice XLS pot fi acum găsite după indexul câmpului prin colecția AutoFilterColumns
Versiune 2.90.14
Adăugat
- Numele definite clasice XLS pot fi acum localizate după celula foii de lucru prin noile supraîncărcări FindByCell din colecția Names
Versiune 2.90.13
Adăugat
- Intervalele clasice XLS acceptă acum crearea unui comentariu cu text și autor într-un singur apel AddComment
Versiune 2.90.12
Adăugat
- Comentariile clasice XLS expun acum o proprietate Author pentru setarea și citirea autorului comentariului salvat prin API-ul tipizat
Versiune 2.90.11
Reparat
- Copierea intervalelor clasice XLS păstrează acum autorii comentariilor copiate împreună cu textul comentariului
Versiune 2.90.10
Reparat
- AddHyperlink clasic XLS stochează acum țintele celulelor registrului de lucru ca subadrese interne în loc de căi externe de fișiere
Versiune 2.90.9
Reparat
- Copierea intervalelor clasice XLS păstrează acum hyperlinkurile celulelor la destinație, inclusiv adresa, indiciul de ecran și textul afișat
Versiune 2.90.8
Reparat
- Hyperlinkurile XLS și XLSX normalizează acum adresele www simple la adrese URL http absolute înainte de salvare, păstrând în același timp textul afișat
Versiune 2.90.7
Reparat
- ApplyAutoFilter clasic XLS ignoră acum indexurile câmpurilor în afara intervalului înainte de a reconstrui intervalul filtrului, păstrând criteriile existente în loc să le șteargă
Versiune 2.90.6
Reparat
- Seriile de diagrame clasice XLS resping acum autoreferințele la foile de diagrame indiferent de majuscule/minuscule, prevenind sursele de date Area3D nevalide când capitalizarea numelui foii diferă
Versiune 2.90.5
Reparat
- Foile de diagrame clasice XLS folosesc acum protecția normală a numelui foii de lucru la aplicarea numelor personalizate ale foilor de diagrame, prevenind numele duplicate care diferă doar prin majuscule/minuscule
Versiune 2.90.4
Reparat
- Tabelele pivot clasice XLS potrivesc acum numele foilor de lucru sursă indiferent de majuscule/minuscule la crearea sau reutilizarea memoriilor cache pivot
Versiune 2.90.3
Reparat
- Redenumirea foii de lucru clasice XLS respinge acum duplicatele care diferă doar prin majuscule/minuscule, păstrând comportamentul de căutare neambiguu după o redenumire
Versiune 2.90.2
Reparat
- Căutarea numelui foii de lucru clasice XLS este acum insensibilă la majuscule/minuscule în SheetByName, TryGetSheetByName, Index și IDByName
Versiune 2.90.1
Reparat
- Căutarea numelor definite clasice XLS este acum insensibilă la majuscule/minuscule, astfel încât numele rezolvate prin colecția Names a registrului de lucru se comportă consecvent după salvare și redeschidere
Versiune 2.90.0
Modificat
- MODIFICARE INCOMPATIBILĂ — colecția de foi XLSX este acum bazată pe 1.
Workbook.Sheets[i],Sheets.IndexByNameși proprietatea întreagăActiveSheetnumără acum de la 1 pentru a corespunde motorului XLS, astfel că prima foaie esteSheets[1], nuSheets[0]; ajutoarele poziționaleActiveIndex,Activate,Moveși argumentul de index al foii dinSaveAsCSV/SaveAsHTML/SaveAsRTFrămân bazate pe 0 - MODIFICARE INCOMPATIBILĂ — FreezePanes primește rândul primul în ambele motoare. Motoarele XLS și XLSX partajează acum
FreezePanes(ARow, ACol); metoda XLSXFreezePane(ACol, ARow)și suprasarcina XLS inversată cu două argumente sunt eliminate, deci un apel care îngheța N coloane și M rânduri trebuie să inverseze cele două argumente - MODIFICARE INCOMPATIBILĂ — clasele de foi XLS au pierdut prefixul I înșelător.
IXLSWorksheetșiIXLSWorkSheetsdevinTXLSWorksheetșiTXLSWorksheets(au fost întotdeauna clase, niciodată interfețe); interfețele realeIXLSWorkbookșiIXLSRangerămân neschimbate - MODIFICARE INCOMPATIBILĂ — enumul operatorilor de validare a datelor XLS este redenumit. Membrii
TXLSDvOperatorse schimbă dinxlsDv...înxlsDvOp...(de exempluxlsDvOpBetween), astfel încât nu mai partajează prefixul cu enumul tipului de validare și se aliniază cu numele XLSXxlsxDvOp...
Versiune 2.89.46
Remediat
- Temele personalizate supraviețuiesc unui tur complet XLSX. Deschiderea unui registru care are propria temă și salvarea lui din nou păstrează acea temă în loc să o înlocuiască cu tema Office încorporată, astfel că nuanțele bazate pe temă nu mai sunt suprascrise în tăcere
- Regiunile îmbinate suprapuse sunt respinse. Îmbinarea unui interval de celule care intersectează o regiune îmbinată existentă este acum refuzată, în loc să scrie intrări suprapuse care fac Excel să raporteze fișierul salvat ca fiind corupt
- O dată scrisă ca valoare de celulă se afișează ca dată. Atribuirea unei date sau ore unei celule care este încă în formatul numeric General aplică acum un format de dată implicit, astfel încât apare ca dată în Excel în loc de număr serial brut; un format numeric setat manual rămâne neschimbat
Securitate
- Formulele adânc imbricate nu mai pot epuiza stiva. Cititorul de formule .xls limitează cât de adânc pot fi imbricate tokenurile de formulă, astfel că un registru malformat sau ostil cu imbricare extremă este respins în loc să riște o blocare
Versiune 2.89.45
Remediat
- Denumirile intrărilor ZIP marcate ca UTF-8 se citesc corect. Când o arhivă marchează un nume de membru ca UTF-8 (bitul 11 de uz general), numele este decodat ca UTF-8 în loc de pagina de cod locală a arhivei
- Celulele de eroare literale din fișierele .xls sunt păstrate. O celulă stocată direct ca valoare de eroare (un înregistrare BOOLERR cu indicatorul de eroare setat) își păstrează codul de eroare în loc să se citească goală
- Criptarea unui pachet mai mare de 2 GB eșuează elegant. Criptarea standard respinge un payload supradimensionat în loc să depășească aritmetica sa pe 32 de biți
Versiune 2.89.44
Remediat
- Exportul formulelor ODS păstrează numele definite intacte. Un nume definit care seamănă cu o referință de celulă (de ex.
TaxRate2) nu mai este rescris ca o adresă de celulă ODF invalidă, iar parsarea_xlnm.Print_Titlesnu mai împarte un nume de foaie care conține virgulă - Importul ODS este sigur după ultima coloană. Un rând ale cărui celule cu text formatat repetat se extind dincolo de ultima coloană a foii de lucru nu mai reutilizează un prototip de text îmbogățit eliberat
Versiune 2.89.43
Remediat
- Exportul RTF păstrează textul non-ASCII. Textul celulei este scris cu secvențe Unicode
\uși antetul declară o pagină de cod, astfel că textul CJK / Chirilic / cu diacritice se exportă intact în loc să fie redus la „?" conform paginii de cod a scriitorului - Cadrul de navigare HTML cu mai multe pagini scapă corect numele foilor. Numele foilor de pe pagina index / frameset sunt scăpate HTML, iar caracterele non-ASCII devin referințe numerice de caractere, astfel că un tab cu nume ce conține caractere speciale sau litere non-ASCII se redă corect
Versiune 2.89.42
Remediat
- Numerele în notație științifică din formule sunt parsate corect. Un literal precum
1E3sau2.5E-3în interiorul unei formule este acum tokenizat ca un singur număr în loc de un număr urmat de un nume rătăcit - SEARCH este sigur pentru Unicode. Funcția SEARCH care ignoră majusculele nu mai pliază majusculele prin pagina de cod ANSI, astfel că textul de căutare / textul în care se caută non-ASCII se potrivesc la poziția corectă a caracterului
Versiune 2.89.41
Remediat
- Sistemul de date 1904 se aplică datelor celulelor XLSX. Citirea sau scrierea unui registru de lucru care folosește baza de date Mac 1904 acum deplasează serialele de date cu 1462 de zile, astfel că datele din astfel de registre de lucru corespund cu Excel în loc să fie cu aproximativ patru ani în urmă
Versiune 2.89.40
Remediat
- Datele din fișierele XLSX terțe se încarcă ca date. O celulă al cărei stil utilizează orice format de număr dată/oră incorporat sau personalizat — nu numai stilul de dată propriu al HotXLS — se citește acum ca valoare de dată în loc de număr serial brut, inclusiv formatele de dată/oră locale CJK
Versiune 2.89.39
Remediat
- Formatele de număr de tip dată sunt detectate mai precis. Un cod de format este recunoscut ca dată/oră numai prin token-uri de dată nescăpate din afara literalelor de șir și a secțiunilor între paranteze, astfel că un literal precum
#,##0 "MM"nu mai este tratat ca dată și coduri cu o singură literă precumm/dnu mai sunt ratate - Arhivele ZIP cu comentariu lung citesc corect înregistrarea de sfârșit de director. Înregistrarea de director central de sfârșit este parsată din bufferul de scanare numai când este complet capturată și altfel re-citită din fișier, corectând o posibilă citire greșită când un comentariu împarte înregistrarea între fereastra de scanare
Versiune 2.89.38
Remediat
- Fișierele XLSX criptate cu Standard Encryption se deschid acum în Excel. Pachetul criptat este cifrat cu AES-128 în modul ECB conform formatului, nu CBC, care lăsa totul după primul bloc necitibil
- Decriptarea RC4 BIFF8 (.xls) protejată prin parolă este corectată. Fluxul de chei este acum re-cheiat și consumat în pas cu poziția fluxului, astfel că o parolă corectă decriptează corpul registrului de lucru în loc să producă celule corupte
Versiune 2.89.37
Remediat
- Ștergerea unei foi de lucru menține consecvența numelor definite. Eliminarea unei foi acum elimină numele definite ale registrului de lucru cu domeniu pe ea și deplasează în jos cu unu numele cu domeniu pe foile ulterioare, astfel că un registru de lucru salvat nu mai indică un nume cu domeniu pe foaie (cum ar fi o zonă de imprimare sau un titlu de imprimare) spre foaia de lucru greșită
Versiune 2.89.36
Remediat
- Citirea fișierelor .xls deteriorate este mai robustă. Înregistrările de număr / goale cu mai multe celule și paleta de culori nu mai depășesc intervalul când câmpurile lor de lungime sunt corupte, iar cititorul de registru de lucru este eliberat în loc să facă scurgere când deschiderea unui fișier generează o eroare
- Inserarea imaginilor nu mai face scurgere la eșec. Încărcarea unei imagini corupte sau necitibile (BMP / WMF / EMF / JPEG / PNG) eliberează fluxul temporar și imaginea bitmap în loc să le scurgă
- Înregistrările de stil duplicate sunt evitate la salvare. Un stil a cărui primă potrivire este chiar prima intrare a tabelului este acum partajat corect în loc să fie scris de două ori în timpul optimizării stilului BIFF
- Exportul HTML scapă corect numele fonturilor, astfel că un nume de font care conține
&,<,>sau"nu mai sparge atributul de stil al celulei exportate
Versiune 2.89.35
Remediat
- Mai multe funcții de foaie de lucru corespund acum cu Excel.
EXPreturnează rezultatul în loc de o eroare „neacceptat",WEEKDAYcu un singur argument numerotează duminica ca 1,MODpăstrează semnul și partea fracțională ale împărțitorului, iarLEFT/RIGHT/MIDreturnează#VALUE!pentru lungimi negative sau numărul greșit de argumente - Referințele numerice de caractere non-ASCII din XLSX se citesc acum corect. Entitățile XML numerice precum
中din șiruri partajate, textul celulei și atributele se decodează la caracterul complet în loc de un singur octet trunchiat - Regulile de text de format condițional supraviețuiesc ghilimelelor duble. Textul care conține
"în regulile containsText / beginsWith / endsWith este scăpat astfel că registrul de lucru salvat rămâne valid - Editările de interval al formatului condițional nu mai lasă un interval rătăcit. Ștergerea sau mutarea unei coloane dintr-o zonă de format condițional nu mai produce un interval fantomă suprapus
- Culorile indexate ale tab-urilor de foaie din .xls utilizează intrarea corectă a paletei, iar datele formatate ca număr din înregistrările cu mai multe celule (MULRK) își păstrează detectarea datei sub sistemul de date 1904
- Criteriile AutoFilter de tip top/bottom procent fac round-trip corect. Încărcarea unui filtru „primele N procente" sau „ultimele N procente" din .xls nu mai îl retrogradează la un simplu număr de elemente
- Hyperlinkurile mailto: sunt recunoscute ca URL-uri, iar ScreenTip-urile (tooltipurile) hyperlinkurilor sunt scrise astfel că fac round-trip în loc să fie eliminate
- Exportul HTML emite dimensiuni de font valide în locale cu virgulă zecimală, astfel că fonturile celulelor exportate nu mai revin la fontul implicit al browserului
- Citirea fișierelor malformate sau trunchiate este mai robustă. Desene OfficeArt corupte, indici de stil / culoare / paletă / temă în afara intervalului și fișiere JPEG non-baseline nu mai blochează sau produc dimensiuni incorecte, iar o scurgere de memorie la șiruri partajate la încărcarea textului îmbogățit a fost corectată
Versiune 2.89.34
Adăugat
- Casetele text din foile de lucru XLSX sunt mai ușor de gestionat.
TXLSXWorksheetadaugăIndexOfTextBoxAt,FindTextBoxAt,DeleteTextBox,DeleteTextBoxAt,DeleteTextBoxesInRangeșiClearTextBoxes, permițând apelantilor să localizeze și să elimine casetele text de desen independente după celula ancoră sau intervalul de intersecție - Întreruperile de pagină manuale ale foilor XLSX pot fi localizate și eliminate după interval.
TXLSXWorksheetadaugăIndexOfRowBreak,IndexOfColBreak,RemoveRowBreaksInRangeșiRemoveColBreaksInRangepentru întreținerea directă a întreruperilor de pagină pe rând / coloană
Remediat
- Foile XLSX cu numai casete text scriu acum relația de desen. O foaie de lucru care conține casete text de desen independente, dar fără imagini, diagrame, comentarii, hyperlinkuri sau tabele emite acum relația de desen
xl/worksheets/_rels/sheetN.xml.relscorespunzătoare, astfel că pachetul salvat rezolvă referința sa<drawing r:id="...">
Versiune 2.89.33
Modificat
- Demo-urile workbench din C++Builder corespund acum cu funcționalitățile de revizuire din Delphi. Exemplul C++Builder WorkbookAudit derivă aceeași severitate, acțiune recomandată și dovezi de revizuire ca versiunea Delphi în lista de registre de lucru și în rapoartele JSON, CSV și HTML, iar exemplul C++Builder ConversionWorkbench înregistrează formatul sursă, acțiunea și nota de revizuire per sarcină de conversie, inclusiv numărul agregat de acțiuni în raportul HTML
Versiune 2.89.32
Modificat
- Demo-ul ConversionWorkbench rulează acum nesupravegheat din linia de comandă. Apelarea
ConversionWorkbench.exe <folder> [/targets=xlsx,csv,html] [/persheet] [/skip] [/quiet]scanează folderul, convertește fiecare sursă la formatele țintă solicitate, scrie rapoartele de conversie și iese;/quietmenține fereastra ascunsă pentru ca conversiile să poată rula din scripturi și sarcini programate - Conversiile în lot rămân interactive. O bară de progres urmărește lista de sarcini (surse bifate înmulțite cu ținte bifate), un buton Anulare întrerupe lotul cu rapoarte acoperind sarcinile finalizate, iar dublu-clic pe un rând de rezultat deschide fișierul produs (sau folderul de ieșire pentru seturi CSV per foaie)
- Opțiunile Workbench persistă între sesiuni. Folderul, formatele țintă, delimitatorul, opțiunile HTML, comutatoarele ODS, CSV per foaie, skip-existing și alegerile de streaming sunt stocate într-un fișier INI lângă executabil; parola de criptare nu este stocată intenționat
Versiune 2.89.31
Modificat
- Demo-ul WorkbookAudit rulează acum nesupravegheat din linia de comandă. Apelarea
WorkbookAudit.exe <folder> [/r] [/quiet]scanează folderul (opțional cu subdosare), auditează fiecare registru de lucru, exportă rapoartele JSON, CSV și HTML și iese;/quietmenține fereastra ascunsă pentru ca auditul să poată rula din scripturi și sarcini programate - Loturile mari rămân interactive. O bară de progres urmărește lotul, un buton Anulare îl întrerupe (fișierele rămase sunt marcate Anulat), iar selectarea unui registru de lucru afișează acum un panou de detaliu per foaie cu structură, formulă, referință și detalii de protecție
- Folderul de audit și opțiunea de subfoldere persistă. Opțiunile sunt stocate într-un fișier INI lângă executabil și restaurate la pornirea următoare
Versiune 2.89.30
Modificat
- Demo-ul WorkbookAudit derivă acum severitatea revizuirii și acțiunile recomandate. Lista principală plus rapoartele JSON, CSV și HTML includ severitate, acțiune recomandată și dovezi de revizuire astfel că auditurile în lot pot direcționa registrele de lucru criptate, cu macro-uri activate, referințe externe, protejate, cu stiluri multe sau formule multe, fără a citi fiecare rând al foii
- Demo-ul ConversionWorkbench scrie acum un registru de revizuire a conversiei. Fiecare sarcină înregistrează formatul sursă, acțiunea și nota de revizuire, iar raportul HTML agregă numărul de acțiuni pentru ieșiri acceptate, seturi CSV per foaie, fișiere reutilizate, alegeri de țintă neacceptate, reparații surse, candidați de reîncercare și rezultate de revizuire manuală
Versiune 2.89.29
Adăugat
- Registrele de lucru XLS clasice citesc acum proprietățile documentului la deschidere. Deschiderea unui fișier sau flux .xls existent completează
Title,Subject,Author,Keywords,Comments,CompanyșiManagerdin informațiile de sumar ale fișierului, corespunzând comportamentului proprietăților de document ale modelului XLSX; proprietățile salvate de Excel însuși, inclusiv textul non-latin stocat în pagini de cod ANSI localizate, sunt decodate corect
Versiune 2.89.28
Modificat
- Demo-ul ConversionWorkbench câștigă patru opțiuni orientate spre lot. Exemplele Delphi și C++Builder pot acum împărți fiecare foaie de lucru în propriul fișier CSV (
<name>.<sheet>.csv, atât pentru surse XLS clasice cât și pentru surse model XLSX), scrie ieșire XLSX protejată prin parolă prinSaveAsEncrypted(inclusiv calea punte XLS clasic), sări conversiile a căror ieșire există deja (raportate ca sărite, nu re-rulate) și activa scrierile XLSX în streaming pentru registre de lucru mari
Versiune 2.89.27
Modificat
- Demo-ul WorkbookAudit scanează acum mai adânc și semnalează markeri de risc. Exemplele Delphi și C++Builder au câștigat recursivitate în subdosare cu nume de fișiere relative față de dosar, detectarea XLSX protejat prin parolă prin
CanReadEncrypted(raportată ca criptată în loc de o eroare generică de deschidere), și o coloană Flags care surfaceazăproiectele VBA, referințele externe, foile ascunse, foile protejate și fișierele criptate dintr-o privire în listă și în fiecare raport - Rapoartele de audit conțin metadate mai bogate. Raportul JSON grupează setul complet de proprietăți de document (titlu, subiect, autor, cuvinte cheie, companie, manager, descriere, categorie, creat, modificat, ultima modificare de) într-un obiect
docProps, iar toate cele trei formate de raport adaugă numărul de imagini per foaie; numele definite cu domeniu pe foaie sunt acum colectate alături de numele la nivelul registrului de lucru pentru fișierele XLS clasice
Versiune 2.89.26
Adăugat
- Demo-urile Delphi și C++Builder includ acum un convertor în lot ConversionWorkbench. Noul exemplu colectează surse XLS, XLSX, CSV și ODS dintr-un dosar, convertește fișierele bifate într-o singură rulare la orice combinație de ținte XLSX, CSV, HTML, RTF, ODS și XLS, și direcționează fiecare sursă prin modelul de obiect corespunzător, inclusiv puntea
SaveXLSWorkbookAsXLSXpentru XLS clasic și o cale XLS-la-ODS în doi pași - Opțiunile de conversie sunt expuse per format. Formularul oferă o alegere de delimitator CSV, opțiuni de titlu HTML și clasă de tabel, și comutatoare de includere diagrame și imagini ODS; direcția XLSX-la-XLS neacceptată este raportată ca neacceptată în loc să eșueze silențios
- Fiecare rulare scrie un raport de conversie.
ConversionReport.csvșiConversionReport.htmlînregistrează starea per sarcină, durata și dimensiunea ieșirii lângă fișierele convertite, iar un generator de exemplu creează intrări XLS, XLSX, CSV și ODS astfel că workbench-ul funcționează imediat
Versiune 2.89.25
Adăugat
- Demo-urile Delphi și C++Builder includ acum un instrument de auditare în lot WorkbookAudit. Noul exemplu scanează un dosar de registre de lucru XLS și XLSX și rezumă structura foii de lucru, numărul de formule cu numele funcțiilor utilizate, referințele externe la registrele de lucru (intrări de legătură externă, referințe de formulă între paranteze și ținte de nume definit), hyperlinkuri, utilizarea stilurilor, intervalele îmbinate, comentariile, tabelele, formatele condiționale, validările de date, diagramele, intervalele AutoFilter, panele înghețate și starea de protecție
- Rezultatele auditului se exportă ca rapoarte JSON, CSV și HTML. Un clic scrie
AuditReport.json,AuditReport.csvșiAuditReport.htmllângă fișierele auditate, acoperind metadatele la nivelul registrului de lucru, grupurile de stiluri, numele definite și rândurile de detaliu per foaie - Demo-ul de auditare este autonom. Un generator de exemplu creează registre de lucru XLS clasice și XLSX cu formule, legături externe, foi ascunse, hyperlinkuri, comentarii, tabele, diagrame și foi protejate, astfel că fluxul complet de auditare funcționează imediat
Versiune 2.89.24
Remediat
- Exportul CSV XLSX scrie acum rezultatele formulelor calculate.
TXLSXWorkbook.SaveAsCSVevaluează celulele cu formulă prin motorul de formule al registrului de lucru înainte de a scrie text CSV sau TSV, astfel că celulele cu numai formulă exportă valorile lor afișate în loc de textul formulei
Versiune 2.89.23
Adăugat
- Exportul OpenDocument poate fi acum ajustat cu opțiuni. Un nou obiect de opțiuni de export permite fișierului
.odssalvat să excludă diagrame sau imagini încorporate și să suprascrie șirul generator înregistrat în metadatele documentului, prin noile supraîncărcări SaveAsODS care acceptă opțiunile - Conținutul exclus nu lasă urme. Dezactivarea diagramelor sau imaginilor elimină folderele de obiecte, cadrele de desen și intrările de manifest împreună, astfel că pachetul salvat nu poartă niciodată o referință orfan
Versiune 2.89.22
Adăugat
- Fișierele OpenDocument se deschid acum prin apelul obișnuit de deschidere. Trecerea unui fișier sau flux
.odsla metoda generală de deschidere detectează pachetul OpenDocument și îl încarcă automat, astfel că nu mai este necesar să știți dinainte dacă un fișier este.xlsxsau.ods - A fost adăugată o comandă rapidă SaveAsODS. Salvarea în OpenDocument nu mai necesită transmiterea valorii formatului de fișier, oglindind modul în care sunt salvate celelalte formate
- Formatul încărcat poate fi interogat. O proprietate SourceFormat raportează dacă registrul de lucru deschis provine dintr-un fișier OpenXML sau dintr-un fișier OpenDocument
Versiune 2.89.21
Remediat
- Cursele superscript și subscript sunt păstrate când textul îmbogățit este salvat în
.xlsx. O cursă marcată ca superscript sau subscript în interiorul unei celule stilizate scrie acum poziția sa verticală în șirul partajat și o citește înapoi, astfel că textul ridicat sau coborât supraviețuiește unui ciclu complet.xlsxîn loc să revină la linia de bază - Superscript și subscript se transferă între formate. Textul îmbogățit citit dintr-un fișier
.odsîși păstrează cursele superscript și subscript când registrul de lucru este re-salvat ca.xlsxși redeschis
Versiune 2.89.20
Adăugat
- Exportul și importul ODS includ acum formate condiționale de scară de culori și bară de date. O scară de două sau trei culori și o bară de date sunt scrise cu punctele lor de valoare și culorile și citite înapoi, extinzând regulile de comparare existente astfel că aceste formate grafice supraviețuiesc unui ciclu
.ods - Formatele condiționale bazate pe formulă sunt acceptate. O regulă bazată pe o formulă este scrisă ca o condiție is-true-formula cu expresia sa tradusă în sintaxa OpenDocument și citită înapoi într-o regulă de formulă, alături de regulile existente de valoare a celulei
Versiune 2.89.19
Adăugat
- Exportul și importul ODS includ acum mesajele de introducere ale validării datelor. Titlul promptului și textul afișat când o celulă validată este selectată sunt scrise alături de alerta de eroare existentă și citite înapoi, astfel că mesajul de introducere supraviețuiește unui ciclu
.ods - Culoarea tab-ului foii este păstrată. Culoarea unui tab de foaie este scrisă în și citită din fișierul
.ods, iar importul acceptă atât atributul de extensie comun cât și atributul standard OpenDocument de culoare a tab-ului
Versiune 2.89.18
Adăugat
- Exportul și importul ODS includ acum grupurile de rânduri și coloane. Grupurile de structură sunt scrise ca elemente de grup de rânduri și coloane imbricate și citite înapoi, astfel că rândurile și coloanele grupate își păstrează nivelul de structură printr-un ciclu
.ods, inclusiv mai multe niveluri de imbricare - Grupurile restrânse rămân restrânse. Un grup ale cărui rânduri sau coloane sunt restrânse este marcat ca neafișat la salvare și restaurat la încărcare, iar gruparea coexistă cu rândurile ascunse, întreruperile de pagină și dimensionarea rândurilor sau coloanelor fără interferențe
Versiune 2.89.17
Adăugat
- Exportul și importul ODS includ acum zona de imprimare. Intervalul de imprimare al unei foi este scris în și citit din fișierul
.ods, astfel că o zonă de imprimare definită supraviețuiește unei salvări și reîncărcări - Întreruperile de pagină manuale sunt păstrate. Întreruperile de pagină pe rând și coloană sunt scrise ca markeri break-before pe rândurile și coloanele afectate și citite înapoi la încărcare, astfel că paginarea manuală face ciclu complet prin
.ods
Versiune 2.89.16
Adăugat
- Exportul și importul ODS includ acum antetele și subsolurile. Salvarea în
.odsscrie antetul și subsolul fiecărei foi cu regiunile sale stânga, centru și dreapta, iar deschiderea unui fișier.odsle citește înapoi, astfel că câmpurile de număr de pagină, număr de pagini, dată, oră și nume de foaie plus textul literal supraviețuiesc ciclului - Fiecare foaie își păstrează propriul antet și subsol. Un registru de lucru ale cărui foi au anteturi sau subsoluri diferite scrie acum un stil de pagină separat per foaie, astfel că fiecare foaie se reîncarcă cu propriul antet și subsol în loc să îl partajeze pe cel al primei foi
Versiune 2.89.15
Adăugat
- Exportul și importul ODS includ acum rotirea textului. O celulă al cărei text este rotit își păstrează unghiul printr-o salvare și reîncărcare
.ods, cu unghiurile în sensul acelor de ceasornic și contrar acelor de ceasornic mapate corect între convențiile foii de calcul și OpenDocument - Indentarea celulei este păstrată. Nivelul de indentare al unei celule este scris ca margine stângă la salvare și citit înapoi la încărcare, astfel că celulele indentate își păstrează adâncimea printr-un ciclu
.ods
Versiune 2.89.14
Adăugat
- Exportul ODS scrie acum text îmbogățit. Salvarea unei celule al cărei text amestecă mai multe curse de formatare în
.odsemite un interval de text per cursă cu propriul stil automat de familie de text, astfel că numele fontului, dimensiunea, bold, italic, subliniat, tăiat, culoarea și superscript sau subscript supraviețuiesc salvării în loc să fie aplatizate la un singur format - Stilurile de cursă identice sunt partajate. Cursele care au aceeași formatare reutilizează o singură intrare de stil automat în loc să emită un duplicat per cursă, iar o celulă simplă este în continuare scrisă ca un singur paragraf fără interval
Versiune 2.89.13
Adăugat
- Importul ODS păstrează acum formatarea textului îmbogățit. Deschiderea unui fișier
.odsa cărei celulă amestecă mai multe intervale de text cu formatare diferită păstrează fiecare cursă în loc să aplatizeze celula la text simplu, astfel că numele fontului, dimensiunea, bold, italic, subliniat, tăiat, culoarea și superscript sau subscript sunt transportate per cursă - Celulele simple rămân simple. O celulă cu o singură cursă neformatată și orice celulă numerică, dată sau formulă este lăsată ca o valoare obișnuită în loc să fie promovată la text îmbogățit
Versiune 2.89.12
Adăugat
- Importul ODS citește acum diagrame. Deschiderea unui fișier
.odsparsează fiecare obiect diagramă încorporat referit dintr-o foaie de lucru, astfel că diagramele de tip coloană, bară, linie, pie, zonă, gogoașă, scatter, bule și radar sunt restaurate pe foaia care le deține, completând ciclul cu exportul de diagrame - Intervalele de serii ale diagramelor sunt restaurate. Fiecare serie poartă intervalul său de valori și intervalul de categorii când este prezent, convertit înapoi din scrierea intervalului de celule OpenDocument astfel că diagrama indică spre aceleași date ale foii de lucru
- O diagramă deteriorată sau lipsă este omisă în siguranță. Un cadru de desen al cărui obiect diagramă lipsește sau nu este o diagramă nu mai anulează încărcarea, iar orice imagine de rezervă din același cadru este totuși importată
Versiune 2.89.11
Adăugat
- Exportul ODS scrie acum imagini încorporate. Salvarea în
.odsstochează fiecare imagine a foii de lucru în dosarulPictures/al pachetului, o referențiază dintr-un cadru de desen în celula sa de ancorare și o înregistrează în manifest, astfel că imaginile plasate într-un registru de lucru sunt transportate în fișierul salvat - Dimensiunea imaginii este păstrată. Fiecare imagine scrie lățimea și înălțimea sa în centimetri, astfel că o imagine salvată în
.odsși redeschisă păstrează aceeași dimensiune pe ecran - Imaginile de pe o celulă îmbinată rămân ancorate. O imagine a cărei ancoră cade în interiorul unui interval îmbinat este găzduită de celula din stânga sus a intervalului, iar o imagine ancorată în afara grilei foii este omisă în loc să fie scrisă ca o intrare fără cadru de desen
Versiune 2.89.10
Remediat
- Nivelul de alertă al validării datelor ODS supraviețuiește acum unui ciclu complet. Salvarea unei validări a cărei alertă este un avertisment sau informație nu mai o exportă fără tipul alertei, astfel că redeschiderea fișierului
.odspăstrează nivelul original în loc să îl retrogradeze silențios la o alertă de oprire
Versiune 2.89.9
Adăugat
- Exportul ODS scrie acum diagrame. Salvarea în
.odsserializează fiecare diagramă a foii de lucru în propriul subdocument de diagramă încorporat în interiorul pachetului, astfel că diagramele de tip coloană, bară, linie, pie, zonă, gogoașă, scatter, bule și radar sunt transportate în fișierul salvat - Diagramele sunt referențiate de pe foaia lor. Foaia care deține o diagramă creează o legătură la obiectul diagramă încorporat printr-un cadru de desen, iar fiecare obiect diagramă este înregistrat în manifestul pachetului astfel că LibreOffice deschide documentul fără a-l raporta ca deteriorat
- Intervalele de serii sunt traduse. Fiecare serie de diagrame poartă intervalul său de valori și intervalul de categorii când este prezent, convertit la scrierea intervalului de celule OpenDocument astfel că diagrama indică spre aceleași date ale foii de lucru
Versiune 2.89.8
Adăugat
- Importul ODS citește acum imagini încorporate. Deschiderea unui fișier
.odsextrage imaginile stocate în dosarulPictures/al pachetului, recunoscând imaginile PNG, JPEG, GIF și BMP după conținutul lor, astfel că un desen ancorat într-o celulă se redeschide ca imagine a foii de lucru - Plasarea imaginii este păstrată. Fiecare imagine importată păstrează celula de ancorare a cadrului de desen care o conține, iar lățimea și înălțimea sa sunt convertite din dimensiunile stocate ale cadrului
- Imaginile lipsă sunt omise în siguranță. Un cadru de desen a cărui imagine referențiată lipsește din pachet este trecut fără eroare, astfel că un document parțial se deschide totuși
Versiune 2.89.7
Adăugat
- Exportul ODS scrie acum panele înghețate. Salvarea în
.odsînregistrează coloanele și rândurile înghețate ale fiecărei foi înghețate în setările de vizualizare ale pachetului, astfel că o foaie împărțită într-un antet înghețat se redeschide înghețată în LibreOffice și prinOpenODS - Exportul ODS scrie acum configurarea paginii. Aspectul paginii din pachetul salvat poartă dimensiunea hârtiei, orientarea (portret sau peisaj) și marginile de sus, jos, stânga și dreapta din configurarea paginii foii de lucru, revenind la A4 portret când nu există configurare de pagină
Versiune 2.89.6
Adăugat
- Importul ODS citește acum panele înghețate. Deschiderea unui fișier
.odsrestaurează coloanele și rândurile înghețate înregistrate în setările de vizualizare ale pachetului, astfel că o foaie împărțită într-un antet înghețat se redeschide înghețată - Importul ODS citește acum intervalele AutoFilter. Un interval filtrat stocat în pachet ca interval de baze de date este citit înapoi pe foaia sa, astfel că intervalele AutoFilter scrise de
SaveAssunt citite înapoi deOpenODS
Versiune 2.89.5
Adăugat
- Importul ODS citește acum formate condiționale. Deschiderea unui fișier
.odsaduce regulile de comparare a valorilor celulei (mai mare decât, mai mic decât, egal, neegal, mai mare sau egal, mai mic sau egal, între și nu între), aplicate fiecare celulelor pe care le vizează - Regulile de interval păstrează ambele limite. O regulă între sau nu-între recuperează ambele valori de prag, astfel că limitele inferioară și superioară supraviețuiesc importului
- Regulile de comparare fac ciclu complet. Formatele condiționale de valoare a celulei scrise în
.odsse redeschid cu operatorul, pragurile și intervalul țintă intacte, astfel că regulile salvate deSaveAssunt citite înapoi deOpenODS
Versiune 2.89.4
Adăugat
- Importul ODS citește acum validările de date. Deschiderea unui fișier
.odsaduce validările de conținut al celulei: intervale numerice (între și nu-între), liste derulante, verificări de lungime a textului și comparații scalare, aplicate fiecare celulelor care le referențiază - Detaliile de validare sunt păstrate. Indicatorul allow-empty-cell și alerta de eroare (stilul suo de oprire, avertisment sau informație și textul mesajului) trec în modelul registrului de lucru
- Membrii listei supraviețuiesc ciclului complet. O listă derulantă scrisă în
.odsse redeschide cu membrii săi intacți, astfel că validările salvate deSaveAssunt citite înapoi deOpenODS
Versiune 2.89.3
Adăugat
- Exportul ODS scrie acum elemente structurale. Salvarea în
.odstransportă intervalele numite, hyperlinkurile celulelor, rândurile și coloanele ascunse, intervalele AutoFilter, formatele condiționale și validările de date în pachet - Intervalele numite și hyperlinkurile fac ciclu complet. Numele cu domeniu la nivelul registrului de lucru își păstrează adresa, legăturile externe și interne ale celulelor își păstrează ținta, textul afișat și tooltip-ul, iar rândurile și coloanele ascunse se redeschid ascunse
- AutoFilter, formatele condiționale și validările sunt emise. Un interval filtrat este scris cu butoanele sale de filtrare, regulile condiționale de comparare a valorilor și validările de date de conținut al celulei sunt scrise astfel că consumatorii precum LibreOffice le păstrează
Versiune 2.89.2
Adăugat
- Importul ODS citește acum stiluri complete ale celulelor. Deschiderea unui fișier
.odsaduce numele fontului, dimensiunea fontului, bold, italic, subliniat și tăiat ale celulelor stilizate, alături de valorile în cache și formatele de număr deja acceptate - Culoarea fontului, umplerea de fundal și marginile sunt importate. Culorile explicite ale fontului se mapează la RGB opac, o culoare de fundal devine o umplere solidă, iar cele patru margini ale celulei (sus, jos, stânga, dreapta) poartă stilul liniei și culoarea
- Alinierea este importată. Alinierea orizontală și verticală a textului și opțiunea de text cu încadrare automată sunt aplicate celulei
- Moștenirea stilului părinte este respectată. Stilurile își citesc valorile prin lanțul de stil-părinte ODS, astfel că un stil copil suprascrie atributul părintelui său atribut cu atribut, moștenind tot ce lasă neschimbat
- Închide bucla de scriere/citire. Stilurile celulelor scrise de
SaveAsîn.odssunt citite înapoi deOpenODS, păstrând fontul, culoarea, umplerea, marginile și alinierea
Versiune 2.89.1
Adăugat
- Exportul ODS scrie acum stiluri complete ale celulelor. Salvarea în
.odstransportă în pachet numele fontului, dimensiunea fontului, bold, italic, subliniat, tăiat și culoarea fontului, astfel că celulele stilizate își păstrează aspectul când sunt redeschise - Umplerea de fundal și marginile celulei sunt scrise. Culorile de fundal solide și cele patru margini ale celulei (sus, jos, stânga, dreapta) sunt emise cu lățimea, stilul liniei și culoarea lor
- Alinierea și încadrarea automată sunt păstrate. Alinierea orizontală și verticală a textului plus opțiunea de text cu încadrare automată trec la stilurile celulelor ODS
- Stilurile se combină cu formatele de număr. Un singur stil de celulă poate combina fontul, umplerea și marginile cu un format de număr, iar combinațiile de stiluri identice sunt partajate astfel că pachetul rămâne compact
Versiune 2.89.0
Adăugat
- Exportul OpenDocument Spreadsheet (.ods).
SaveAsacceptă acumxlsxOpenDocumentSpreadsheetși scrie un pachet ODF valid în mod direct, fără a trece printr-un intermediar XLSX - Valorile celulelor cu tip sunt scrise. Textul, numerele, booleenii și datele sunt emise cu tipurile lor de valoare ODF astfel că valorile își păstrează semnificația când sunt redeschise
- Formatele de număr sunt păstrate. Formatele comune (zecimale, grupare mii, monedă, procent, științific și date ISO) sunt scrise ca stiluri de date ODF și referențiate de celulele care le utilizează
- Structura foii este transferată. Foile de lucru, lățimile coloanelor și intervalele de celule îmbinate sunt scrise în pachet
- Ciclu complet prin HotXLS. Un pachet scris de
SaveAspoate fi citit înapoi cuOpenODS, păstrând valorile, formatele de număr, lățimile coloanelor și îmbinările
Versiune 2.88.249
Adăugat
- Funcțiile pentru intervalul de încredere calculează acum în motorul de formule.
CONFIDENCE.NORMutilizează cuantila normală șiCONFIDENCE.Tcuantila Student t pentru a returna semilățimea intervalului de încredere al unei medii - Numele statistice moderne sunt disponibile.
PERCENTILE.INC,PERCENTILE.EXC,QUARTILE.INC,QUARTILE.EXC,RANK.AVG,COVARIANCE.PșiCOVARIANCE.Sevaluează percentilele și quartilele inclusive și exclusive, ierarhizarea cu medie pentru ex aequo și covarianța de populație și de eșantion - Aliasuri pentru formele vechi.
MODE.SNGLșiRANK.EQse mapează laMODEșiRANKexistente
Versiune 2.88.248
Adăugat
- Funcția distribuției binomiale calculează acum în motorul de formule.
BINOM.DISTevaluează masa de probabilitate și distribuția cumulativă, utilizând beta incompletă regularizată pentru forma cumulativă - Funcția distribuției Poisson calculează acum în motorul de formule.
POISSON.DISTevaluează masa de probabilitate și distribuția cumulativă, utilizând gamma incompletă superioară pentru forma cumulativă - Evaluare stabilă. Ambele mase utilizează o formă log-gamma factorială pentru a rămâne precise pentru numărări mari, iar parametrii invalizi returnează
#NUM!
Versiune 2.88.247
Adăugat
- Funcțiile distribuției beta calculează acum în motorul de formule.
BETA.DISTșiBETA.INVevaluează distribuția cumulativă, densitatea de probabilitate și inversa peste un interval opțional[A, B] - Funcțiile distribuției Student t sunt disponibile.
T.DIST,T.DIST.RT,T.DIST.2T,T.INVșiT.INV.2Tacoperă coada stângă, coada dreaptă, probabilitatea bidirecțională și inversele lor - Funcțiile distribuției F sunt disponibile.
F.DIST,F.DIST.RT,F.INVșiF.INV.RTevaluează distribuția cumulativă, coada dreaptă și inversele - Nucleu de evaluare partajat. Toate cele trei familii utilizează beta incompletă regularizată cu evaluare prin fracție continuă, inversele rezolvă prin bisecție, iar parametrii invalizi returnează
#NUM!
Versiune 2.88.246
Adăugat
- Funcțiile distribuțiilor gamma și chi-pătrat calculează acum în motorul de formule.
GAMMA.DIST,GAMMA.INV,CHISQ.DIST,CHISQ.DIST.RT,CHISQ.INVșiCHISQ.INV.RTevaluează distribuția cumulativă, densitatea de probabilitate, coada dreaptă și inversele lor în direct prinCalculate - Log-gamma de înaltă precizie este disponibil.
GAMMALN.PRECISEreturnează logaritmul natural al funcției gamma - Evaluare precisă și robustă. Valorile cumulative utilizează serii și expansiuni de fracție continuă ale gammei incomplete regularizate, inversele rezolvă prin bisecție, iar parametrii invalizi returnează
#NUM!
Versiune 2.88.245
Adăugat
- Funcțiile distribuțiilor continue calculează acum în motorul de formule.
EXPON.DIST,WEIBULL.DIST,LOGNORM.DISTșiLOGNORM.INVevaluează distribuția cumulativă, densitatea de probabilitate și inversa în direct prinCalculate - Evaluare în formă închisă. Distribuțiile exponențiale și Weibull utilizează formulele lor analitice, în timp ce distribuția log-normală reutilizează CDF-ul normal și inversa sa; parametrii invalizi returnează
#NUM!
Versiune 2.88.244
Remediat
- Distribuția normală inversă este acum precisă la cozi.
NORMSINV,NORM.S.INVșiNORM.INVutilizau un logaritm în baza 10 în ramurile de coadă (probabilități sub aproximativ 0,024 sau peste aproximativ 0,976) unde algoritmul necesită logaritmul natural; rezultatele sunt acum corecte pe întregul interval de probabilitate
Versiune 2.88.243
Adăugat
- Funcțiile distribuției normale cu noile nume cu puncte calculează acum în motorul de formule.
NORM.DIST,NORM.INV,NORM.S.DISTșiNORM.S.INVevaluează distribuția cumulativă, densitatea de probabilitate și inversele lor în direct prinCalculate - Aliasuri statistice cu puncte.
STDEV.S,STDEV.P,VAR.SșiVAR.Psunt recunoscuți ca nomi Excel 2010+ pentru deviația standard și varianța de eșantion și populație - Numele de funcții cu puncte se parsează corect. Parserul de formule tratează acum un nume precum
NORM.S.DISTca o singură funcție, astfel că aceste funcții lucrează înCalculateși fac ciclu complet prin prefixul OOXML_xlfn.
Versiune 2.88.242
Adăugat
- Funcțiile de inginerie pentru numere complexe calculează acum în motorul de formule.
COMPLEXconstruiește un număr complex ca text și familiaIM*îl citește și operează pe el, toate evaluând în direct prinCalculate - Componente și aritmetică.
IMREAL,IMAGINARY,IMABS,IMARGUMENTșiIMCONJUGATEexpun componentele, în timp ceIMSUM,IMSUB,IMPRODUCTșiIMDIVefectuează aritmetică complexă - Funcții transcendente.
IMPOWER,IMSQRT,IMEXPșiIMLNsunt evaluate prin forma polară, iar sufixul imaginar poate fiisauj
Versiune 2.88.241
Adăugat
- Funcțiile de matrice dinamică
XLOOKUPșiFILTERcalculează acum în motorul de formule. Ambele evaluează în direct prinCalculate, aducând căutări și filtrări moderne la formulele foii de lucru și evaluarea ad-hoc XLOOKUPcu moduri de potrivire și căutare. Sunt acceptate potrivirile exacte (implicite), cu metacaractere și aproximative la cel mai mic/mare următor, alături de căutare de la primul la ultimul sau de la ultimul la primul și un rezultat opționalif_not_foundFILTERcu rezultate revărsate. Rândurile al căror vector include este TRUE sunt păstrate și revărsate în intervalul țintă prinSetArrayFormula, cu o valoare opționalăif_emptycând nimic nu se potrivește
Versiune 2.88.240
Adăugat
- Funcțiile matematice
GCD,LCM,MROUND,QUOTIENTșiMULTINOMIALcalculează acum în motorul de formule. Evaluează în direct prinCalculate, acoperind cel mai mare divizor comun, cel mai mic multiplu comun, rotunjirea la un multiplu, împărțirea întreagă și coeficientul multinomial - Conversia de baze și numerale romane.
BASEcodifică un număr în orice bază de la 2 la 36 cu umplere opțională cu zerouri,DECIMALparsează un astfel de șir înapoi la un număr, iarARABICconvertește un numeral roman la valoarea sa
Versiune 2.88.239
Adăugat
- Funcțiile de agregare
PRODUCTșiSUMSQcalculează acum în motorul de formule.PRODUCTînmulțește argumentele sale numerice șiSUMSQsumează pătratele lor, ambele evaluând în direct prinCalculate - Varianță și deviație standard de varianta A.
VARA,VARPA,STDEVAșiSTDEVPAcalculează dispersia de eșantion și populație numărând textul ca 0 și TRUE ca 1, spre deosebire de formele simple care ignoră non-numerele
Versiune 2.88.238
Adăugat
- Funcțiile de agregare statistice calculează acum în motorul de formule.
VAR,VARP,STDEV,STDEVP,MODE,COUNTBLANKșiAVERAGEAevaluează în direct prinCalculate - Varianță și deviație standard.
VARșiSTDEVutilizează formula de eșantion, în timp ceVARPșiSTDEVPutilizează formula de populație, atât pe intervale cât și pe argumente inline - Valoarea cea mai frecventă.
MODEreturnează numărul cel mai frecvent, și raportează#N/Acând nicio valoare nu se repetă - Numărarea celulelor goale.
COUNTBLANKnumără celulele goale dintr-un interval, inclusiv celulele care conțin un rezultat text gol - Medie conștientă de text.
AVERAGEAcalculează media valorilor numărând textul ca zero și TRUE logic ca unu, deci diferă deAVERAGEcare ignoră textul
Versiune 2.88.237
Adăugat
- Funcțiile pe biți calculează acum în motorul de formule.
BITAND,BITOR,BITXOR,BITLSHIFTșiBITRSHIFTevaluează în direct prinCalculate - AND, OR și XOR pe biți.
BITAND,BITORșiBITXORcombină două numere întregi nenegative bit cu bit - Deplasare de biți în ambele direcții.
BITLSHIFTdeplasează biții unui număr la stânga șiBITRSHIFTla dreapta; o valoare negativă a deplasării inversează direcția - Limite compatibile Excel. Operanzii trebuie să fie numere întregi de la 0 până la 2^48-1, iar deplasarea este limitată la 53 de locuri; valorile din afara acestor limite raportează
#NUM! - Ciclu complet cu prefixul OOXML. La salvarea în XLSX, aceste funcții Excel 2013 sunt scrise cu prefixul
_xlfn.și se redeschid corect, continuând să se afișeze și să recalculeze corect
Versiune 2.88.236
Adăugat
- Funcțiile de inginerie pentru conversia de baze calculează acum în motorul de formule.
DEC2BIN,DEC2OCT,DEC2HEX,BIN2DEC,OCT2DEC,HEX2DEC,HEX2BIN,BIN2HEX,HEX2OCT,OCT2HEX,BIN2OCTșiOCT2BINevaluează în direct prinCalculate - Conversii între binar, octal, zecimal și hexadecimal. Numerele se convertesc în ambele direcții între toate cele patru baze, inclusiv perechile între baze neadiacente, cum ar fi hexadecimal în binar
- Valori cu semn prin complement față de doi. Numerele negative sunt reprezentate în forma standard de complement față de doi pe 10 cifre, astfel că valorile fac ciclu complet corect între conversii
- Ieșire opțională cu lățime fixă. Conversiile la o bază text acceptă un argument opțional de locuri care completează rezultatul cu zerouri în față până la o lățime fixă
- Validarea intervalului și a intrării. Valorile din afara intervalului reprezentabil, sau textul cu cifre nevalide pentru baza sursă, raportează
#NUM!
Versiune 2.88.235
Adăugat
- Funcțiile de dată pentru zile lucrătoare calculează acum în motorul de formule.
WORKDAYșiNETWORKDAYSevaluează în direct prinCalculate - Avansare în date conștientă de weekend.
WORKDAYreturnează data cu un număr dat de zile lucrătoare înainte sau după o dată de start, sărind sâmbetele și duminicile; o valoare negativă pașii înapoi și zero returnează data de start - Numărarea zilelor lucrătoare.
NETWORKDAYSnumără zilele lucrătoare complete între două date, inclusiv ambele capete, și returnează o valoare negativă când data de start este mai târzie decât data de sfârșit - Liste opționale de sărbători. Ambele funcții acceptă un argument opțional de sărbători, dat ca o singură dată sau un interval de celule, și exclud acele date din calculul zilelor lucrătoare
Versiune 2.88.234
Adăugat
- Funcțiile de dată și oră calculează acum în motorul de formule.
EDATE,EOMONTH,DATEDIF,YEARFRAC,DAYS,WEEKNUMșiISOWEEKNUMevaluează în direct prinCalculate - Aritmetică lunară cu limitare la sfârșitul lunii.
EDATEdeplasează o dată cu un număr întreg de luni șiEOMONTHreturnează ultima zi a lunii deplasate; ambele se limitează la luna mai scurtă, de exemplu un 31 deplasat în februarie - Unitățile de interval ale
DATEDIF. Sunt acceptate unitățile de număr complet"Y","M"și"D"plus unitățile de rest"YM","YD"și"MD" - Bazele de numărare a zilelor pentru
YEARFRAC. Toate cele cinci baze sunt implementate: US 30/360, actual/actual, actual/360, actual/365 și European 30/360 - Numerotarea săptămânilor.
WEEKNUMacceptă convențiile cu start duminică, start luni și ISO (tipul de returnare 21), iarISOWEEKNUMreturnează numărul săptămânii ISO 8601
Versiune 2.88.233
Adăugat
- Funcțiile de baze de date calculează acum în motorul de formule.
DSUM,DCOUNT,DCOUNTA,DAVERAGE,DMIN,DMAX,DPRODUCT,DGET,DVAR,DVARP,DSTDEVșiDSTDEVPevaluează în direct prinCalculateși recalculează când un registru de lucru este redeschis - Potrivire standard pe tabele de criterii. Condițiile plasate sub antetele câmpurilor se combină cu AND în interiorul unui rând și cu OR între rânduri, acceptă operatori de comparare precum
>,<și>=, și permit potrivire de text cu metacaractere*/?; celulele de criterii goale nu adaugă nicio constrângere - Selector de câmp flexibil. Câmpul agregat poate fi dat ca text antet de coloană, un index de coloană bazat pe 1, sau o referință la o celulă antet
- Căutare de înregistrare unică cu
DGET.DGETreturnează valoarea câmpului înregistrării care se potrivește, inclusiv text, și raportează#NUM!când mai multe înregistrări se potrivesc sau#VALUE!când niciuna nu se potrivește
Versiune 2.88.232
Adăugat
OpenODSimportă acum protecția foilor ODS. Tabelele ODS cutable:protected="true"se deschid acum ca foi de lucru protejate folosind starea de protecție fără parolă existentă; cheile de protecție ODS nu sunt tratate ca hash-uri de parolă veche XLSX
Versiune 2.88.231
Adăugat
OpenODSimportă acum intervalele numite ODS. Intrăriletable:named-rangecutable:cell-range-addresspopulează acumDefinedNamesale registrului de lucru, convertind referințele de foaie/celulă ODS precum$Sheet.$A$1:$Sheet.$B$2în formule de nume definit XLSX
Versiune 2.88.230
Adăugat
OpenODSimportă acum stilurile de protecție a celulelor ODS. Stilurile de celulă tabel care utilizeazăstyle:cell-protectmapează acumnone,formula-hidden,protectedșihidden-and-protectedla starea importatăLockedșiFormulaHiddena celulei, inclusiv valorile moștenite prinstyle:parent-style-name
Versiune 2.88.229
Adăugat
OpenODSimportă acum formulele ODS de bază. Celulele cu formule care utilizeazăof:=sauoooc:=păstrează acum valorile scalare în cache și importă o formulă XLSX normalizată cu referințe locale în paranteze drepte precum[.A1:.B1]și separatori de argumente punct și virgulă convertiți la sintaxa Excel
Versiune 2.88.228
Adăugat
OpenODSrezolvă acum stilurile moștenite de rând și coloană ODS. Stilurile de rând și coloană de tabel care utilizeazăstyle:parent-style-namemoștenesc acum setările de înălțime a rândului, lățime a coloanei și vizibilitate ascunsă din stilul părinte când pachetele ODS referențiază stiluri copil dincontent.xml
Versiune 2.88.227
Adăugat
OpenODSrezolvă acum stilurile de celulă moștenite ODS. Stilurile de celulă tabel care utilizeazăstyle:parent-style-namemoștenesc acum mapările data-style ale părintelui în timpul importului ODS, astfel că stilurile copil păstrează valorile importate XLSXNumberFormatchiar când data style este declarat pe stilul părinte
Versiune 2.88.226
Adăugat
OpenODSpreîncarcă acum stilurile de rând și coloană ODS stocate înstyles.xml. Proprietățile stilurilor de rând și coloană de tabel dinstyles.xmlparticipă acum la importul rândurilor/coloanelor ascunse și al înălțimilor/lățimilor cândcontent.xmlreferențiază acele nume de stil
Versiune 2.88.225
Adăugat
OpenODSutilizează acum stilurile de date ODS stocate înstyles.xml. Stilurile de celulă numite și stilurile de date numerice/dată/timp dinstyles.xmlparticipă acum la rezoluția XLSXNumberFormatimportat, în timp ce stilurile automate dincontent.xmlle pot suprascrie în continuare
Versiune 2.88.224
Adăugat
OpenODSimportă acum formatele numerice fracționale ODS. Componentele ODSnumber:fractionse mapează acum la formate fracționale XLSX precum0 ?/??, păstrând setările de afișare fracțională în timpul importului
Versiune 2.88.223
Adăugat
OpenODSimportă acum formatele numerice științifice ODS. Componentele ODSnumber:scientific-numberse mapează acum la formate numerice XLSX precum0.000E+00, păstrând setările de afișare în notație științifică în timpul importului
Versiune 2.88.222
Adăugat
OpenODSpăstrează acum literaliinumber:textîn stilurile de date numerice ODS. Stilurile numerice, procentuale și valutare care plaseazănumber:textînainte sau dupănumber:numberimportă acum acei literali în formatul numeric XLSX, păstrând etichete și sufixe de unitate precumkg
Versiune 2.88.221
Remediat
OpenODSimportă acum duratele de timp ODS negative. Valorileoffice:time-valueprecum-PT02H03M04Sse importă acum ca valori seriale de timp negative în loc să fie omise
Versiune 2.88.220
Remediat
OpenODSrezolvă acum stilurile de celulă implicite per coloană repetată. O celulă ODS repetată care traversează limitele de stil implicit de coloană aplică acum formatul numeric implicit al coloanei sau al tabelului pentru fiecare coloană țintă în loc să reutilizeze formatul primei coloane repetate
Versiune 2.88.219
Adăugat
OpenODSpăstrează acum secundele fracționale în valorile de dată ODS. Marcajele de timpoffice:date-valueprecum2026-06-04T12:30:00.250păstrează acum componenta lor de milisecunde în loc să fie trunchiată la secunde întregi
Versiune 2.88.218
Adăugat
OpenODSimportă acum vizibilitatea foilor ODS. Tabelele ODS cu valoritable:visibilityascunse precumcollapsese importă acum ca foi de lucru XLSX ascunse în loc să devină întotdeauna tab-uri vizibile
Versiune 2.88.217
Adăugat
OpenODSaplică acum stilurile de celulă implicite ODS.table:default-cell-style-namepe tabele, coloane și rânduri participă acum la rezoluția formatului numeric pentru celulele fără untable:style-namedirect, utilizând precedența celulă, rând, coloană, then tabel
Versiune 2.88.216
Adăugat
OpenODSimportă acum componentele stilului de dată și oră ODS. Stilurile de date dată și timp citesc acum nodurile comunenumber:year,number:month,number:day,number:hours,number:minutes,number:seconds,number:am-pmșinumber:text, astfel că celulele importate păstrează ordinea componentelor și separatorii precumdd/mm/yyyysauhh:mm
Versiune 2.88.215
Adăugat
OpenODSimportă acum formatele numerice ODS cu cifre minime. Stilurile de date numerice, procentuale și valutare cunumber:min-integer-digitsșinumber:min-decimal-placesse mapează acum la șiruri XLSXNumberFormatcu zerouri în față și placeholder-uri zecimale finale opționale
Versiune 2.88.214
Adăugat
OpenODSimportă acum formatele numerice ODS grupate. Stilurile de date numerice, procentuale și valutare cunumber:grouping="true"se mapează acum la șiruri XLSXNumberFormatcu separatori de grupare de tip#,##0
Versiune 2.88.213
Adăugat
OpenODSpăstrează acum simbolurile valutare ODS în formatele numerice importate. Stilurile de date valutare cunumber:currency-symbolutilizează acum acel simbol ca prefix XLSXNumberFormat, astfel că formate precumEUR#,##0.00nu mai sunt reduse la$#,##0.00
Versiune 2.88.212
Adăugat
OpenODSrespectă acum setările de zecimale ODS în formatele numerice de bază. Stilurile de date numerice, procentuale și valutare cunumber:decimal-placesse mapează acum la șiruri XLSXNumberFormatcorespunzătoare precum0,0.0%sau$#,##0
Versiune 2.88.211
Adăugat
OpenODSimportă acum valorile scalare în cache netipate ODS. Celulele fărăoffice:value-typeutilizează acum atributele disponibileoffice:value,office:boolean-value,office:date-value,office:time-valueșioffice:string-valueînainte de a reveni la conținutul text
Versiune 2.88.210
Adăugat
OpenODSpăstrează acum limitele paragrafelor text ODS. Paragrafele multipletext:pse importă cu întreruperi de linie, în timp ce controalele de spații albetext:s,text:tabșitext:line-breakrămân în textul celulei în loc să fie aplatizate împreună
Versiune 2.88.209
Adăugat
OpenODSimportă acum dimensiunile rândurilor și coloanelor ODS. Stilurile de coloană și rând de tabel ODS custyle:column-width/style:row-heightsunt mapate laColWidth/RowHeight, inclusiv rândurile și coloanele repetate
Versiune 2.88.208
Adăugat
- Controale de fereastră și geometrie pentru registrul de lucru XLSX.
TXLSXWorkbookexpune acumMinimized,WindowHidden,ShowHorizontalScroll,ShowVerticalScroll,XWindow,YWindow,WindowWidthșiWindowHeightpentru interfața XLSX.SaveAsscrie atributele<workbookView>corespunzătoare,Openle face ciclu complet, iar valorile de geometrie sunt limitate la intervalul 0..65535 compatibil OOXML
Versiune 2.88.207
Adăugat
- Controale de vizualizare pentru registrul de lucru XLSX.
TXLSXWorkbookexpune acumShowSheetTabs,TabRatio,FirstSheetșiAutoFilterDateGrouping, astfel că apelantii pot controla bara de tab-uri a registrului de lucru și gruparea datelor AutoFilter prin interfața XLSX.SaveAsscrie atributele<workbookView>corespunzătoare,Openle face ciclu complet,TabRatioeste limitat la 0..1000 șiFirstSheeteste limitat la un index de foaie existent bazat pe 0
Versiune 2.88.206
Adăugat
- Asistenți AutoFit XLSX cu limite.
TXLSXWorksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRowsși wrapper-urileTXLSXRangeAutoFitColumns/AutoFitRowsacceptă acum limite opționale de lățime/înălțime minime și maxime, astfel că apelantii pot adapta conținutul menținând aspectele rapoartelor în interiorul limitelor de proiectare
Remediat
- Numele fonturilor pentru text îmbogățit HTML în XLSX. Exportul HTML emite acum CSS
font-familypentru rulele de text îmbogățit cu nume cu ghilimele duble înainte de escape-ul HTML, corespunzând ieșirii documentate"..."pentru rulele stilizate
Versiune 2.88.205
Adăugat
- Forme dreptunghi, oval și linie (XLS). API-ul de desenare .xls câștigă
Shapes.AddRectangle,Shapes.AddOvalșiShapes.AddLine(plus un generalAddAutoShape), astfel că formele automate tipizate pot fi create și ancorate la un interval de celule fără a construi manual înregistrările OfficeArt. Fiecare returnează o formă a cărei formatareFillșiLinepoate fi setată; anterior puteau fi adăugate numai imagini, casete text și comentarii
Versiune 2.88.204
Adăugat
- Diagrame scatter, bubble și radar (XLSX).
AddChartacceptă acumxlsxChartScatter(XY scatter),xlsxChartBubble(cu un interval de dimensiune bubble per serie) șixlsxChartRadar, alături de tipurile existente coloană / bară / linie / plăcintă / arie / gogoașă. Seriile scatter și bubble trasează intervalul de categorii ca X și intervalul de valori ca Y; bubble adaugă unBubbleSizeRange
Versiune 2.88.203
Adăugat
- Reguli de validare a datelor tipizate cu prompturi și alerte (XLS). Motorul classic .xls câștigă
AddWholeNumberValidation,AddDecimalValidation,AddDateValidation,AddTimeValidation,AddTextLengthValidationșiAddCustomValidation(anterior era expusă numai validarea listei). Fiecare returnează regula, care poate purta un prompt de intrare, o alertă de eroare cu o iconiță stop / avertisment / informație și o comutare allow-blank prinSetPrompt/SetError/AllowBlank
Versiune 2.88.202
Adăugat
- Prompturi de intrare și alerte de eroare pentru validarea datelor (XLSX). O regulă de validare a datelor poate purta acum o casetă prompt de intrare (titlu și mesaj afișate când celula este selectată) și o casetă alertă de eroare (titlu, mesaj și o iconiță stop / avertisment / informație afișată la intrare nevalidă), plus controlul săgeții dropdown de listă. Setați-le prin
SetPrompt,SetErrorși noile proprietățiPromptTitle/Prompt/ErrorTitle/ErrorMessage/ErrorStyle/ShowDropDown; anterior erau disponibile numai comutatoarele de afișare mesaje. Fac ciclu complet la încărcare
Versiune 2.88.201
Adăugat
- Mai multe tipuri de reguli format condițional (XLSX). Motorul XLSX câștigă reguli text (conține, nu conține, începe cu, se termină cu), primele/ultimele N (cu procent opțional), deasupra și sub medie, valori duplicate și unice, și celule goale / negoale / erori / non-erori — fiecare prin o metodă dedicată
AddCondFormat*și fiecare putând purta o evidențiere prinStyle. Aceste reguli fac și ciclu complet la încărcare
Versiune 2.88.200
Adăugat
- Formatare condiționată bazată pe formule (XLSX). O nouă regulă de format condițional evidențiază celulele printr-o formulă arbitrară prin
AddCondFormatExpression: formula este evaluată per celulă și celulele unde este adevărată iau evidențierea regulii
Modificat
- Formatele condiționale evidențiază acum celulele în .xlsx. Regulile de format condițional bazate pe valoarea celulei și pe formulă poartă acum un stil diferențial — culoare de umplere, culoare font și bold / italic / subliniat — scris în tabelul de stiluri al registrului de lucru, astfel că Excel colorează celulele corespunzătoare. Anterior formatele condiționale XLSX erau salvate fără nicio evidențiere
Versiune 2.88.199
Adăugat
- Funcțiile de formulă TEXTJOIN și CONCAT. Calculatorul de formule intern evaluează acum
TEXTJOIN(unește valori text cu un delimitator, opțional sărind celulele goale) șiCONCAT(unește valori text fără delimitator), ambele extinzând argumentele interval celulă cu celulă — spre deosebire de vechiulCONCATENATE. Fișierele.xlsxsalvate scriu aceste funcții Excel 2016 cu prefixul_xlfn., iar la redeschidere se afișează numele simplu
Versiune 2.88.198
Adăugat
- Funcțiile de formulă SUMIFS, COUNTIFS, AVERAGEIFS, MAXIFS și MINIFS. Calculatorul de formule intern evaluează acum aceste agregări cu condiții multiple, care totalizează, numără, mediează sau iau cel mai mare sau cel mai mic dintre celulele care îndeplinesc fiecare criteriu pe unul sau mai multe intervale paralele; criteriile acceptă operatori de comparare precum
">=30"și metacaractere text. AVERAGEIFS fără celule corespunzătoare returnează #DIV/0!, iar MAXIFS/MINIFS returnează 0, ca în Excel; MAXIFS și MINIFS se scriu în.xlsxcu prefixul_xlfn.
Versiune 2.88.197
Adăugat
- Funcțiile de formulă IFS, SWITCH și IFNA. Calculatorul de formule intern evaluează acum funcțiile logice moderne
IFS(valoarea primei condiții care este adevărată),SWITCH(potrivește o expresie cu o listă de cazuri, cu un implicit opțional) șiIFNA(substituie o valoare numai când rezultatul este eroarea #N/A). Deoarece aceste funcții au fost introduse după setul original de funcții .xls, salvarea în.xlsxle scrie acum cu prefixul_xlfn.și la redeschiderea unui astfel de fișier se afișează din nou numele simplu al funcției
Versiune 2.88.196
Adăugat
- Funcțiile de formulă INDEX și OFFSET. Calculatorul de formule intern evaluează acum
INDEX(citește o valoare după poziția sa de rând și coloană în interiorul unui interval) șiOFFSET(citește o valoare cu un număr dat de rânduri și coloane față de o celulă ancoră), ambele prinCalculate. Căutările bidirecționaleINDEX/MATCHși referințele ancorateOFFSETcalculează acum corect, iar o poziție în afara intervalului returnează eroarea #REF! pentru a corespunde Excel
Versiune 2.88.195
Remediat
- HTML-ul exportat păstrează bordurile și umbrirea rândului antet. Când o celulă utilizează un font cu nume, exportul XLSX-în-HTML scria numele fontului cu ghilimele duble în interiorul unui atribut style cu ghilimele duble, ceea ce trunchia stilul și celula pierdea bordurile, umplerea și dimensiunea. Numele fonturilor sunt acum între ghilimele simple, astfel că un rând antet stilizat se exportă cu liniile grilă intacte — inclusiv linia care închide partea de sus a tabelului — împreună cu culoarea sa de fundal
- Exportul RTF corespunde acum aspectului HTML și Excel. Exportul XLSX-în-RTF a câștigat borduri de celule, întindere a celulelor îmbinate și umbrire cu umplere solidă, și scalează acum lățimile coloanelor pentru a se încadra în pagina imprimabilă, astfel că o coloană auto-fit lată nu mai împinge tabelul în afara paginii. Anterior tabelul RTF nu avea borduri, omitea titlurile îmbinate și putea fi mult mai lat decât pagina
Versiune 2.88.194
Remediat
- Re-salvarea unui registru de lucru .xls care conține o casetă text nu îl mai corupte. Deschiderea unui fișier XLS cu o casetă text și salvarea lui din nou duplica anterior o înregistrare de desenare internă, producând un registru de lucru care bloca Excel la redeschiderea fișierului. Datele de desenare ale casetei text fac acum ciclu complet corect, astfel că registrul de lucru re-salvat se deschide normal
Versiune 2.88.193
Remediat
- Fișierele .xlsx protejate cu parolă se deschid acum în Excel. Salvarea unui registru de lucru cu o parolă prin
SaveAsEncryptedproducea anterior un pachet ECMA-376 Standard Encryption al cărui text cifrat AES era generat incorect, astfel că Excel respingea fișierul chiar și cu parola corectă. Criptarea AES-128 produce acum ieșire conformă standardului, iar registrul de lucru criptat se deschide în Excel 2007 și versiunile ulterioare cu parola folosită la salvare
Modificat
- AES accelerat hardware pentru criptarea XLSX. Cifrul AES-128 din spatele XLSX Standard Encryption utilizează acum instrucțiunile CPU AES-NI atât pe Windows pe 32 de biți cât și pe 64 de biți când procesorul le suportă, accelerând salvările protejate cu parolă. Procesoarele fără AES-NI revin automat la implementarea software portabilă, astfel că ieșirea este identică pe orice mașină
Versiune 2.88.192
Adăugat
- Formulele matriciale supraviețuiesc salvării și redeschiderii XLSX. O formulă matricială (CSE) cu mai multe celule setată cu
SetArrayFormulaeste acum salvată și reîncărcată din fișierele.xlsxca formulă matricială reală, astfel că salvarea unui registru de lucru și redeschiderea lui păstrează intervalul de revărsare ancorat intact și fiecare celulă evaluează în continuare la propriul element al rezultatului matricei. Anterior o formulă matricială salvată pierdea intervalul de revărsare la redeschiderea fișierului
Versiune 2.88.191
Adăugat
- Formulele matriciale se revarsă pe un interval de celule (XLSX). Intervalul motorului XLSX câștigă același
SetArrayFormulaca motorul XLS: o formulă matricială (CSE) cu mai multe celule precum{=MMULT(A1:B2;D1:E2)}setată pe un bloc de celule revarsă rezultatul său matricial astfel că fiecare celulă evaluează la propriul element. Aceasta completează suportul pentru formulele matriciale cu mai multe celule pe ambele motoare XLS și XLSX
Versiune 2.88.190
Adăugat
- Formulele matriciale se revarsă pe un interval de celule (XLS). O nouă metodă
SetArrayFormulape un interval setează o formulă matricială (CSE) cu mai multe celule precum{=MMULT(A1:B2;D1:E2)}pe un bloc de celule, iar calculatorul de formule revarsă acum rezultatul matricei în acel bloc astfel că fiecare celulă citește propriul element. Anterior o celulă cu o formulă matricială evalua ca nesuportată. Matricea este calculată o dată per recalculare și partajată pe întregul interval
Versiune 2.88.189
Adăugat
- Funcțiile de formulă MINVERSE și MMULT. Calculatorul de formule intern evaluează acum
MINVERSE(inversa matricei) șiMMULT(produsul matricelor). Apelate prinCalculate, fiecare returnează matricea rezultat ca un array bidimensional care poate fi citit element cu element.MINVERSEnecesită un interval pătrat și returnează eroarea #NUM! pentru o matrice singulară;MMULTnecesită ca dimensiunile interioare să corespundă (coloanele primului interval egale cu rândurile celui de-al doilea) și altfel returnează eroarea #VALUE!
Versiune 2.88.188
Adăugat
- Funcția de formulă MDETERM. Calculatorul de formule intern evaluează acum
MDETERM, returnând determinantul matricei unui interval pătrat prinCalculate. Un interval non-pătrat, sau un interval care conține o celulă goală sau non-numerică, returnează eroarea #VALUE! pentru a corespunde Excel
Versiune 2.88.187
Adăugat
- Funcții statistice de formulă. Calculatorul de formule intern evaluează acum
MEDIAN,LARGE,SMALLșiRANK, astfel că formulele care rezumă un interval de numere recalculează corect prinCalculate.MEDIANacceptă o combinație de numere inline și intervale;LARGEșiSMALLreturnează al k-lea cel mai mare și al k-lea cel mai mic valoare;RANKraportează poziția unui număr, ierarhizând în ordine descrescătoare implicit sau crescătoare când se dă un argument de ordine nenul
Versiune 2.88.186
Adăugat
- Funcții de căutare de formulă. Calculatorul de formule intern evaluează acum
CHOOSEșiMATCH, astfel că formulele care aleg un argument după index sau găsesc poziția unei valori în interiorul unui rând sau coloană recalculează corect prinCalculate.MATCHsuportă toate cele trei tipuri de potrivire — exactă (0), cea mai mare valoare nu mai mare decât căutarea într-un interval ascendent (1, implicit), și cea mai mică valoare nu mai mică decât căutarea într-un interval descendent (-1) — și compară textul insensibil la majuscule
Versiune 2.88.185
Adăugat
- Funcții financiare de formulă. Calculatorul de formule intern evaluează acum
PV,FV,PMT,NPERșiRATE, astfel că formulele de valoare prezentă, valoare viitoare, plată, termen și rată a dobânzii recalculează corect prinCalculate. Argumentele opționale pentru valoarea viitoare/prezentă și momentul plății (type) sunt respectate, iarRATEeste rezolvat iterativ
Remediat
- Puncte zecimale în șirurile de formule. S-a rezolvat o problemă prin care un șir de formulă transmis la
Calculatecare conținea un punct zecimal (de exemplu=PV(0.05;10;100)) putea eșua la parsare; literalele numerice cu parte fracțională evaluează acum corect
Versiune 2.88.184
Adăugat
- Funcții informaționale de formulă. Calculatorul de formule intern evaluează acum
ISERROR,ISERR,ISNA,ISNUMBER,ISLOGICAL,ISNONTEXTșiISREF, astfel că formulele de testare a erorilor și de testare a tipului recalculează corect prinCalculate.ISERRexclude #N/A, în timp ceISNAse potrivește numai cu #N/A
Versiune 2.88.183
Adăugat
- Funcții text de formulă. Calculatorul de formule intern evaluează acum
FIND,SEARCH,SUBSTITUTE,REPLACE,TRIM,PROPER,CLEAN,CHAR,CODE,T,EXACTșiREPT, astfel că foile de lucru care utilizează aceste funcții text recalculează corect prinCalculateîn loc să returneze un rezultat de funcție nesuportată.FINDeste sensibil la majuscule, în timp ceSEARCHnu este
Remediat
- Funcția
CHARrecunoscută. S-a rezolvat o problemă de căutare a numelui unde funcția CHAR fusese înregistrată cu majusculizare greșită și nu putea fi rezolvată în formule
Versiune 2.88.182
Modificat
- Funcția de formulă IFERROR. Motorul de formule recunoaște și evaluează acum
IFERROR(value, value_if_error), returnând valoarea de rezervă când primul argument evaluează la orice eroare Excel (#NULL!, #DIV/0!, #VALUE!, #REF!, #NAME?, #NUM!, #N/A) și valoarea în sine altfel. Face ciclu complet pe ambele motoare — codificat ca token funcție în .xls (BIFF8) și ca șir de formulă<f>în .xlsx (OOXML) — astfel că registrele de lucru se deschid și recalculează corect în Excel
Remediat
NA()returnează acum #N/A. Funcția NA() evaluează la valoarea de eroare #N/A în loc să fie raportată ca nesuportată, astfel că formulele de gestionare a erorilor construite în jurul ei (de exempluIFERROR(NA(), 0)) funcționează conform așteptărilor
Versiune 2.88.181
Adăugat
- Casete text (XLSX). Noul
TXLSXWorksheet.AddTextBoxadaugă o casetă text autonomă ancorată la un dreptunghi de celule, emisă în desenul foii de lucru ca formă cu corp text. Aceasta aduce motorul XLSX la egalitate cu suportul existent pentru casete text al motorului XLS
Versiune 2.88.180
Adăugat
- Constante de dimensiune hârtie numite (XLSX). Motorul XLSX adaugă
xlsxPaperLetter,xlsxPaperA4,xlsxPaperA3și celelalte constantexlsxPaper*pentru proprietateaTXLSXWorksheet.PaperSize, oglindind constantelexlPaper*ale motorului XLS, astfel că dimensiunea hârtiei poate fi setată prin nume în loc de un cod Excel brut
Versiune 2.88.179
Adăugat
- Proprietăți document XLS. Motorul XLS câștigă proprietățile
IXLSWorkBook:Title,Subject,Author,Keywords,Comments,CompanyșiManager, scrise în fluxurile OLE SummaryInformation / DocumentSummaryInformation din .xls (ca Unicode) la salvare, astfel că panoul File > Info din Excel le afișează. Aceasta aduce motorul XLS la egalitate cu setul existent de proprietăți document al motorului XLSX
Versiune 2.88.178
Adăugat
- Diagrame de arie și gogoașă (XLSX).
TXLSXChartTypeadaugăxlsxChartAreașixlsxChartDoughnutalături de tipurile existente coloană, bară, linie și plăcintă, astfel căTXLSXWorksheet.AddChartpoate emite diagrame de arie și gogoașă. Motorul de diagrame XLS (BIFF8) își păstrează setul coloană / bară / linie / plăcintă
Versiune 2.88.177
Adăugat
- Paritate API pentru operații pe intervale între motoare. Motorul XLSX câștigă metodele Excel-style pentru interval
TXLSXRange.CopyTo,MoveTo,InsertRows,DeleteRows,InsertColsșiDeleteCols; motorul XLS câștigă metodele coordonate pe foaie de lucruIXLSWorksheet.CopyRange,MoveRange,InsertRows,DeleteRows,InsertColsșiDeleteCols. Ambele motoare expun acum copierea/mutarea intervalului și inserarea/ștergerea întregului rând/coloanei sub nume identice
Versiune 2.88.176
Adăugat
- Stiluri de celulă integrate. Noul
TXLSXRange.ApplyBuiltinStyle(XLSX) șiIXLSRange.ApplyBuiltinStyle(XLS) reproduc aspectul stilurilor de celulă numite standard din Excel — Bun, Rău, Neutru, Calcul, Celulă de verificare, Text explicativ, Intrare, Celulă legată, Notă, Ieșire, Text avertisment, Titlu 1-4, Titlu, Total și Accent 1-6 — într-un singur apel prin aplicarea umplerii și fontului corespunzătoare
Versiune 2.88.175
Adăugat
- Sortarea intervalelor. Noul
TXLSXRange.Sort/TXLSXWorksheet.SortRange(XLSX) șiIXLSWorksheet.SortRange(XLS) reordonează rândurile unui dreptunghi după una sau mai multe coloane cheie, ascendent sau descendent. Rândurile întregi se deplasează împreună purtând valori și formatare a celulelor; cheile egale își păstrează ordinea originală (sortare stabilă), iar celulele goale se sortează întotdeauna ultimele
Versiune 2.88.174
Adăugat
OpenCSVimportă fișiere CSV și TSV într-o foaie de lucru. Noile suprascrieriTXLSWorkbook.OpenCSVșiTXLSXWorkbook.OpenCSVcitesc text delimitat cu detecție automată a separatorului (virgulă, punct și virgulă, tab sau bară verticală), detecție de codificare bazată pe BOM (UTF-8 și UTF-16) și gestionare a ghilimelelor conform RFC 4180.Openrutează acum fișierele.csvși.tsvla importator automat
Modificat
- Detecție opțională a tipului valorii. Câmpurile numerice, datele ISO-8601 și câmpurile booleene sunt promovate la valori de celulă tipizate implicit; detecția poate fi dezactivată pentru a păstra fiecare câmp ca text, conservând zerouri în față, șiruri lungi de cifre și text prefixat cu
=
Versiune 2.88.173
Modificat
OpenODSimportă acum vizibilitatea rândurilor și coloanelor ascunse. Stiluriletable-rowșitable-columnODS cu valoritable:visibilityprecumcollapsesaufilterse mapează acum laRowHidden/ColHidden, inclusiv rândurile și coloanele repetate
Versiune 2.88.172
Modificat
- Exportul XLSX HTML păstrează acum alinierea verticală.
TXLSXWorkbook.SaveAsHTMLșiTXLSXRange.SaveAsHTMLemit reguli CSSvertical-alignpentru alinierea celulei sus, centru, justificată și distribuită cândIncludeStyleseste activat
Versiune 2.88.171
Modificat
- Exportul XLSX HTML sare acum rândurile și coloanele ascunse.
TXLSXWorkbook.SaveAsHTMLșiTXLSXRange.SaveAsHTMLomit rândurile marcate cuRowHidden, coloanele marcate cuColHiddenși coloanele explicite cu lățime zero din tabelul generat și<colgroup>
Versiune 2.88.170
Modificat
- Exportul XLSX HTML păstrează acum bordurile celulelor. Când stilurile sunt incluse,
TXLSXWorkbook.SaveAsHTMLșiTXLSXRange.SaveAsHTMLemit marginile bordurilor celulelor ca stiluri CSSborder-left,border-right,border-topșiborder-bottom
Versiune 2.88.169
Modificat
- Exportul XLSX HTML păstrează acum rulele de text îmbogățit. Când stilurile sunt incluse,
TXLSXWorkbook.SaveAsHTMLșiTXLSXRange.SaveAsHTMLemit ruleleTXLSXRichTextca elemente<span>cu escape-uri cu stiluri inline de font, culoare, accent și subliniere
Versiune 2.88.168
Modificat
- Exportul XLSX HTML păstrează acum dimensiunile explicite ale rândurilor și coloanelor. Când stilurile sunt incluse,
TXLSXWorkbook.SaveAsHTMLșiTXLSXRange.SaveAsHTMLscriu valorileColWidthexplicite printr-un<colgroup>și valorileRowHeightexplicite ca stiluri de înălțime<tr>
Versiune 2.88.167
Modificat
- Exportul XLSX HTML transmite acum comentariile celulelor ca sfaturi de instrumente.
TXLSXWorkbook.SaveAsHTMLșiTXLSXRange.SaveAsHTMLscriu comentariile XLSX în atributetitlecu escape-uri pentru<td>, iar exportul la nivel de registru de lucru extinde limitele tabelului pentru a include ancorele cu numai comentarii
Versiune 2.88.166
Modificat
- Exportul XLSX HTML păstrează acum hiperlinkurile și imaginile ancorate.
TXLSXWorkbook.SaveAsHTMLșiTXLSXRange.SaveAsHTMLînfășoară celulele legate în ancore<a>cu escape-uri și emit imaginile ancorate ca URI-uri de imaginedata:inline. Exportul la nivel de registru de lucru extinde de asemenea limitele tabelului pentru a include ancorele de hiperlink și imagine din afara celulelor populate
Versiune 2.88.165
Adăugat
TXLSXTablepăstrează acum vizibilitatea rândului total. Noua proprietateTotalsRowShownscrie și citește indicatorul OOXMLtotalsRowShown, astfel că tabelele XLSX pot păstra rândul lor total activat pe cicluri SaveAs/Open
Versiune 2.88.164
Adăugat
TXLSXWorksheetare acum asistenți de validare a datelor tipizați.AddWholeNumberValidation,AddDecimalValidation,AddDateValidation,AddTimeValidation,AddTextLengthValidationșiAddCustomValidationadaugă reguli XLSX comune fără a transmite manual valorileTXLSXDataValidationType
Versiune 2.88.163
Modificat
OpenODSimportă acum hiperlinkurile text ODS. Linkurile ODStext:acuxlink:hrefcreează acum intrăriTXLSXHyperlinks, păstrează textul ancorei în valoarea celulei importate și mapează țintele fragment precum#Sheet.A1la linkuri interne ale registrului de lucru
Versiune 2.88.162
Modificat
OpenODSimportă acum comentariile de bază ale celulelor. Celulele ODS cuoffice:annotationcreează acum intrăriTXLSXCommentscu textul comentariului șidc:creatorca autor, menținând textul adnotării în afara valorii celulei
Versiune 2.88.161
Modificat
- Demo-urile
ApiTouracoperă acum asistenții actuali ai fluxului de lucru XLSX. Eșantioanele Delphi și C++BuilderApiTourdemonstrează acumWriteRows,ForEachRow,PreviewAutoFilterRows,AutoFilterRowVisible,TXLSXHtmlExportOptionsșiOnUserFunctionExalături de fluxurile de creare a registrului de lucru, export și inspecție la redeschidere
Versiune 2.88.160
Adăugat
OnUserFunctionExadaugă callback-uri personalizate de formulă conștiente de context.TXLSWorkbook,IXLSWorkbookșiTXLSXWorkbookpot primi acum unTXLSUserFunctionContextcu indexul foii, rândul și coloana cândCalculatedelegă o funcție de foaie de lucru personalizată sau nesuportată către codul aplicației
Versiune 2.88.159
Adăugat
TXLSXHtmlExportOptionsadaugă export HTML XLSX configurabil. SuprascrierileSaveAsHTMLale registrului de lucru și intervalului pot suprascrie titlul documentului, aplica o clasă CSS pentru tabel, omite stilurile inline/implicite, suprima BOM-ul UTF-8 sau emite un fragment de tabel fără documentul HTML înconjurător
Versiune 2.88.158
Adăugat
TXLSXWorksheet.AutoFilterRowVisibleșiPreviewAutoFilterRowsadaugă evaluarea previzualizării AutoFilter. Aplicațiile pot testa dacă un rând corespunde criteriilor AutoFilter XLSX stocate ale foii de lucru sau pot parcurge rândurile de date filtrate cu un callback de vizibilitate, fără a schimba indicatorii de rând ascuns
Versiune 2.88.157
Adăugat
TXLSXWorksheet.WriteRowsadaugă ieșire XLSX pe loturi de rânduri. Apelantii pot completa un interval numeric sau A1-style un rând la un moment dat returnând un arrayVariant, cu omiterea rândului întreg, anulare și un contor de rânduri scrise
Versiune 2.88.156
Adăugat
TXLSXWorksheet.ForEachRowadaugă scanare XLSX la nivel de rând. Callback-ul rulează o dată per rând încărcat, raportează rândul plus primele și ultimele coloane încărcate, returnează numărul de rânduri vizitate și suportă anularea
Versiune 2.88.155
Modificat
OpenODSimportă acum rezultatele scalare în cache din celulele cu formule ODS. Când o celulă cu formulă stochează valori numerice, booleene, dată sau timp în cache fărăoffice:value-type, importatorul păstrează valoarea celulei în cache lăsând sintaxa formulei ODS neconvertită
Versiune 2.88.154
Modificat
OpenODSpăstrează acum formatele numerice și de dată ODS de bază. Stilurile de celulă tabel ODS legate la stiluri de date de dată, timp, număr, procent sau valută se mapează acum la șiruri XLSXNumberFormatprecumyyyy-mm-ddși0.00, astfel că valorile importate păstrează formatarea de afișare de bază
Versiune 2.88.153
Modificat
- Celulele îmbinate ODS se importă acum ca intervale îmbinate XLSX.
OpenODSmapeazătable:number-columns-spannedșitable:number-rows-spannedpe celulele ODS laTXLSXMergedCells, păstrând valoarea în celula din stânga sus și lăsând celulele acoperite goale
Versiune 2.88.152
Modificat
- Numele foilor ODS pot fi acum citite fără a încărca foile de lucru.
TXLSXWorkbook.GetODSSheetNames(FileName, AList)șiGetODSSheetNames(Stream, AList)scanează numele tabelelorcontent.xmldin pachetele.ods, decodifică escape-urile XML, sintetizează nume implicite pentru tabelele fără nume și lasă instanța registrului de lucru neschimbată
Versiune 2.88.151
Modificat
- Înregistrările DIMENSION XLS clasice informează acum intervalele utilizate goale. Când o foaie de lucru .xls creată de Excel declară un interval utilizat în
DIMENSIONdar nu conține înregistrări de celule, HotXLS expune acum acel interval prinUsedRangeși îl păstrează în timpul ciclului open/save în loc să revină laA1
Versiune 2.88.150
Remediat
- Referințele externe de formulă din era BIFF5 se încarcă acum corect. Parserul XLS clasic rezolvă acum indexurile de foaie externă Excel5 pozitive în token-urile
tRef3d/tArea3dșitNameX, astfel că formulele .xls legacy păstrează intervalele 3D calificate de foaie și referințele de nume externe în timpul ciclului open/save
Versiune 2.88.149
Eliminat
- Înregistrările de extensie de calcul și stil BIFF8 fac acum ciclu complet. HotXLS păstrează înregistrările
MTRSettings,ForceFullCalculation,CrErr,Uncalcedale foii de lucru,XFCRC,DXFindependent,StyleExtși familiaTableStylescreate de Excel în timpul ciclurilor de deschidere/salvare XLS clasice, astfel că metadatele de recalculare și extensie de stil nu mai sunt abandonate
Versiune 2.88.148
Adăugat
- Demo-urile C++Builder corespund acum acoperirii eșantioanelor Delphi. S-au adăugat proiecte C++Builder pentru
XlsTables,XlsCondFormat12șiXlsCreateChart, cu pagini README corespunzătoare și acoperire build Win32/Win64
Versiune 2.88.147
Eliminat
- Vizualizările personalizate BIFF8 supraviețuiesc acum ciclurilor complete XLS clasice. HotXLS păstrează blocurile
USERSVIEWBEGIN/USERSVIEWENDcreate de Excel în globalele registrului de lucru și substream-urile foii de lucru, inclusiv înregistrările nemodulate din interior, astfel că vizualizările personalizate salvate nu sunt abandonate în timpul ciclului open/save
Versiune 2.88.146
Eliminat
- Globalele de vizualizare și extensie ale registrului de lucru BIFF8 fac acum ciclu complet. HotXLS păstrează înregistrările
HIDEOBJ,TEMPLATEde lungime zero,TABIDșiBOOKEXTcreate de Excel în timpul ciclului open/save, astfel că politica de afișare a obiectelor ascunse, marcajele template, identificatorii de tab de foaie și metadatele de extensie ale registrului de lucru nu mai sunt abandonate
Versiune 2.88.145
Modificat
- TXLSXWorkbook poate importa acum fișiere OpenDocument Spreadsheet de bază.
OpenODS(FileName)șiOpenODS(Stream)citesc tabelelecontent.xmldin pachetele.odsîn foi de lucru, păstrând numele foilor, valorile scalare, rândurile repetate și coloanele repetate. Stilurile, formulele, desenele, diagramele și funcționalitățile avansate ODS nu sunt convertite
Versiune 2.88.144
Modificat
- Editările de rând și coloană XLSX actualizează acum criteriile coloanelor AutoFilter.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsșiDeleteColsremapează acum offset-urileColIdaleAutoFilterColumnscând intervalul de filtru se mișcă și elimină criteriile care se încadrează în coloanele șterse
Versiune 2.88.143
Modificat
- Editările de rând și coloană XLSX actualizează acum întreruperile de pagină manuale.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsșiDeleteColsmută acum întreruperile de pagină de rând și coloană cu grila editată și elimină întreruperile care se încadrează în rândurile sau coloanele șterse
Versiune 2.88.142
Modificat
- Editările de rând și coloană XLSX actualizează acum referințele de configurare a imprimării.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsșiDeleteColsajustează acumPrintArea,PrintTitleRowsșiPrintTitleCols, astfel că intervalele imprimate și titlurile repetate urmează grila editată
Versiune 2.88.141
Modificat
- Editările de rând și coloană XLSX actualizează acum țintele interne ale hiperlinkurilor.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsșiDeleteColsajustează acum ancorele interneTXLSXHyperlink.Locationpe foaia editată și țintele interne calificate de foaie din alte locuri ale registrului de lucru
Versiune 2.88.140
Modificat
- Editările de rând și coloană XLSX actualizează acum formulele regulilor.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsșiDeleteColsajustează acum referințele A1 din interiorulTXLSXConditionalFormat.Formula1/Formula2șiTXLSXDataValidation.Formula1/Formula2, în timp ce pragurile numerice și listele literale rămân neschimbate
Versiune 2.88.139
Modificat
- Editările de rând și coloană XLSX actualizează acum intervalele seriilor de diagrame.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsșiDeleteColsajustează acumTXLSXChartSeries.CategoriesRangeșiValuesRangepentru diagramele de pe foaia editată și diagramele din alte locuri care utilizează referințe calificate de foaie, menținând legăturile de date ale diagramelor aliniate după ciclurile save/reopen
Versiune 2.88.138
Modificat
- Editările de rând și coloană XLSX actualizează acum formulele celulelor.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsșiDeleteColsajustează acum referințele A1 din formulele celulelor supraviețuitoare pe foaia editată și formulele calificate de foaie din alte locuri ale registrului de lucru, lăsând neschimbate șirurile și foile necorelate
Versiune 2.88.137
Modificat
- Editările de rând și coloană XLSX mută acum ancorele de desenare.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsșiDeleteColsmută acum ancorele de imagine cu o celulă și redimensionează sau mută ancorele de diagramă cu două celule cu grila editată, inclusiv ciclurile complete save/reopen
Versiune 2.88.136
Modificat
- Editările de rând și coloană XLSX actualizează acum numele definite.
TXLSXWorksheet.InsertRows,DeleteRows,InsertColsșiDeleteColsajustează acum formuleleTXLSXDefinedNamecu domeniu registru de lucru și cu domeniu foaie care indică foaia editată, păstrând marcatorii absoluți A1 pe ciclurile save/reopen
Versiune 2.88.135
Adăugat
- Casetele text XLS clasice suportă acum offset-uri de ancoră sub-celulă.
TXLSTextBoxexpuneRow1Offs,Col1Offs,Row2OffsșiCol2Offs, iar supraîncărcareaSetAreaconștientă de offset persistă offset-urile de ancoră client BIFF pe ciclurile save/reopen
Versiune 2.88.134
Modificat
- Verificările sarcinii macro XLSX au acum un alias de proprietate read-only.
TXLSXWorkbook.VbaProjectDefinedoglindeșteHasVbaProject, oferind apelantilor orientați pe proprietăți o modalitate directă de a testa dacă o sarcinăvbaProject.bineste prezentă
Versiune 2.88.133
Modificat
- Foile de lucru XLSX expun acum curățarea valorilor de interval în mod direct.
TXLSXWorksheet.ClearRangeValuesacceptă referințe A1 sau limite rând/coloană și curăță valorile/formulele păstrând stilurile, astfel că apelantii nu trebuie să creeze mai întâi un wrapperTXLSXRange
Versiune 2.88.132
Eliminat
- Intervalele XLSX pot acum curăța conținutul celulelor cu un asistent explicit axat pe valori.
TXLSXRange.ClearValueselimină valorile și formulele din interval păstrând indexurile de stil, corespunzând cuCleardar facilitând descoperirea curățării doar a conținutului
Versiune 2.88.131
Modificat
- Literalele de validare a datelor din lista XLSX scapă acum ghilimelele duble încorporate.
TXLSXDataValidations.AddListșiTXLSXWorksheet.AddListValidationdublează ghilimelele duble din textul elementelor separate prin virgule înainte de a le împacheta ca șir de formulă Excel, astfel că valorile dropdown care conțin ghilimele fac ciclu complet corect
Versiune 2.88.130
Eliminat
- Criteriile AutoFilter XLSX pot acum fi curățate direct din colecția de criterii.
TXLSXAutoFilterColumns.ClearCriteriaelimină toate criteriile de filtru stocate per coloană menținândAutoFilterRangeal foii de lucru la locul său
Versiune 2.88.129
Adăugat
- Intervalele îmbinate XLSX normalizează acum coordonatele inversate la adăugare.
TXLSXMergedCells.Addstochează intervalele în ordinea stânga-sus / dreapta-jos chiar când apelantii transmit mai întâi celula finală, producând referințe stabile precumA2:E6
Versiune 2.88.128
Adăugat
- Colecțiile de foi de lucru XLSX suportă acum ștergerea directă după nume.
TXLSXSheetsadaugăDeleteByName, permițând aplicațiilor să elimine o foaie de lucru prin nume insensibil la majuscule menținând selecția foii active consistentă
Versiune 2.88.127
Adăugat
- Colecțiile de diagrame XLSX suportă acum căutarea și ștergerea directă după titlu.
TXLSXChartsadaugăIndexOfName,FindByName,DeleteByNameșiDelete, astfel că aplicațiile pot localiza sau elimina diagrame după titlu fără scanări manuale ale colecției
Versiune 2.88.126
Adăugat
- Colecțiile de linkuri externe XLSX suportă acum căutarea și ștergerea directă după țintă.
TXLSXExternalLinksadaugăIndexOfTarget,FindByTarget,DeleteByTargetșiDelete, astfel că aplicațiile pot inspecta sau elimina metadatele registrelor de lucru legate fără scanări manuale ale colecției
Versiune 2.88.125
Adăugat
- Colecțiile de celule îmbinate XLSX suportă acum căutarea și ștergerea directă a intervalului.
TXLSXMergedCellsadaugăIndexOfCell,FindAt,DeleteAtșiDeleteInRange, astfel că aplicațiile pot inspecta sau elimina intervalele îmbinate fără scanări manuale ale colecției
Versiune 2.88.124
Adăugat
- Colecțiile de formate condiționale și validări de date XLSX suportă acum căutarea și ștergerea conștientă de interval.
TXLSXConditionalFormatsșiTXLSXDataValidationsadaugăIndexOfCell,FindAt,DeleteAtșiDeleteInRange, astfel că aplicațiile pot localiza sau elimina regulile care acoperă o celulă sau intersectează un interval fără scanări manuale alesqref
Versiune 2.88.123
Adăugat
- Colecțiile de imagini XLSX suportă acum căutarea și ștergerea directă a ancorei.
TXLSXImagesadaugăIndexOfCell,FindAt,DeleteAt,DeleteInRangeșiDelete, astfel că aplicațiile pot inspecta sau elimina imaginile încorporate fără scanări manuale ale colecției
Versiune 2.88.122
Adăugat
- Colecțiile de coloane AutoFilter XLSX suportă acum căutarea și ștergerea directă.
TXLSXAutoFilterColumnsadaugăFindByColIdșiDeleteByColId, astfel că aplicațiile pot inspecta sau elimina criteriile per coloană fără scanări manuale ale colecției
Versiune 2.88.121
Adăugat
- Colecțiile de tabele XLSX suportă acum căutarea și ștergerea directă a tabelelor.
TXLSXTablesadaugăIndexOfName,FindByNameșiDeleteByName, astfel că aplicațiile pot localiza sau elimina tabelele de foaie de lucru numite fără scanări manuale ale colecției
Versiune 2.88.120
Adăugat
- Colecțiile de nume definite XLSX suportă acum căutarea și ștergerea directă a obiectelor.
TXLSXDefinedNamesadaugă suprascrieriIndexOfName(Name, SheetIndex),FindByNameșiDeleteByName, astfel că aplicațiile pot lucra cu nume cu domeniu registru de lucru și cu domeniu foaie fără scanări manuale ale colecției
Versiune 2.88.119
Adăugat
- Colecțiile de comentarii și hiperlinkuri XLSX suportă acum căutarea și ștergerea bazate pe celule.
TXLSXCommentsșiTXLSXHyperlinksexpunIndexOfCell,FindAt,DeleteAtșiDeleteInRange, astfel că codul aplicației poate localiza sau elimina comentariile și linkurile foii de lucru fără scanări manuale ale colecției
Versiune 2.88.118
Modificat
- Demo-urile ApiTour inspectează acum obiectele registrului de lucru XLSX redeschis. Exemplele ApiTour Delphi și C++Builder redeschid registrul de lucru XLSX generat și scriu rânduri
reopen-inspectpentru nume definite, comentarii, hiperlinkuri, intervale autofilter și criterii autofilter înApiTour-XLSX-Modified.xlsx
Versiune 2.88.117
Eliminat
- Înregistrările de protecție la partajare a fișierului și revizuire BIFF8 fac acum ciclu complet. HotXLS păstrează corpurile înregistrărilor
FILESHARING,FILESHARING2,PROT4REVșiPROT4REVPASScreate de Excel în timpul ciclului open/save, astfel că recomandarea de read-only, partajarea și metadatele de protecție la revizuire nu sunt abandonate
Versiune 2.88.116
Modificat
- Demo-urile ApiTour acoperă acum asistenții de obiecte ale registrului de lucru XLSX. Exemplele ApiTour Delphi și C++Builder creează un nume definit, comentariu de foaie de lucru, hiperlink, interval autofilter și criterii autofilter menținând fluxurile existente de callback, înlocuire text și export
Versiune 2.88.115
Modificat
- Demo-urile InteractiveFeatures pot acum redeschide registre de lucru pivot XLS clasice. Tab-urile Pivot Delphi și C++Builder pot deschide un registru de lucru pivot XLS clasic existent, enumera tabelele pivot salvate pe fiecare foaie de lucru și înregistra numărul de câmpuri, numărul de câmpuri de date și intervalul sursei cache al fiecărui tabel
Versiune 2.88.114
Modificat
- Demo-urile InteractiveFeatures pot acum redeschide registre de lucru XLS clasice pentru fluxuri TextBox. Formularele Delphi și C++Builder pot deschide un registru de lucru XLS clasic existent, localiza casetele text de desenare autonome salvate, le pot lista și continua operațiunile de editare, ștergere, ștergere pe interval și salvare pe fișierul deschis
Versiune 2.88.113
Modificat
- Demo-urile C++Builder includ acum un eșantion InteractiveFeatures pentru fluxuri avansate de lucru cu registre de lucru. Formularul VCL oferă același traseu interactiv Pivot / TextBox / Macro, cu creare tipizată de tabele pivot XLS clasice, editare de casete text de desenare autonome și încărcare/export/ștergere a sarcinii
vbaProject.binXLSM plus inspecție modulelor parsate
Versiune 2.88.112
Modificat
- Demo-urile Delphi includ acum un eșantion InteractiveFeatures pentru fluxuri avansate de lucru cu registre de lucru. Formularul VCL creează tabele pivot XLS clasice tipizate, editează casete text de desenare autonome și gestionează încărcarea/exportul/ștergerea sarcinii
vbaProject.binXLSM plus inspecția modulelor parsate
Versiune 2.88.111
Adăugat
- Foile de lucru XLS clasice suportă acum casete text de desenare autonome. Utilizați
TXLSShapes.AddTextBoxpentru a crea unTXLSTextBoxcu propria sa ancoră rând/coloană, text, rule text, formatare linie/umplere și ștergere normală a formei fără a crea un comentariu de celulă
Versiune 2.88.110
Modificat
- Demo-urile ApiTour acoperă acum mai multe tipare de automatizare ale registrului de lucru. Eșantioanele ApiTour Delphi și C++Builder demonstrează scrierea intervalului bazată pe callback cu
WriteCells, scanarea celulelor încărcate cuForEachCell, actualizările template cuFindTextșiReplaceText, exportul HTML al intervalului selectat înApiTour-Range.htmlși callback-urile de formulă personalizate Delphi prinOnUserFunction
Versiune 2.88.109
Modificat
- Demo-urile QuickStart afișează acum un prim registru de lucru mai complet. Eșantioanele QuickStart Delphi și C++Builder creează un tabel de înmulțire stilizat cu formule de total rând și coloană, panouri înghețate și acțiuni XLS/XLSX corespunzătoare; arborele demo include acum și pagini readme HTML rafinate pentru fiecare exemplu
Versiune 2.88.108
Modificat
- Intervalele XLSX au acum asistenți direcți de export HTML.
TXLSXRange.SaveAsHTML(FileName)șiTXLSXRange.SaveAsHTML(Stream)exportă numai intervalul XLSX selectat ca tabel HTML UTF-8, partajând escape-ul, ieșirea de stil de bază și gestionarea spanurilor de celule îmbinate ale redactorului HTML al registrului de lucru
Versiune 2.88.107
Adăugat
- Foile de lucru XLSX includ acum asistenți de căutare și înlocuire a textului.
TXLSXWorksheet.FindTextșiTXLSXWorksheet.ReplaceTextscanează celulele text încărcate în ordinea rândurilor, sar peste formule și valori non-text și suportă potrivire opțională sensibilă la majuscule pentru fluxurile de lucru cu template-uri
Versiune 2.88.106
Modificat
- Indicatorii de vizualizare BIFF8 Window2 păstrează acum starea liniei grilă personalizate și a panourilor înghețate. HotXLS curăță acum
fDefaultHdrcândWindow2.icvHdrstochează o culoare personalizată a liniei grilă, păstreazăfFrozenNoSplitcreat de Excel în timpul ciclului open/save și scriefFrozenNoSplitpentru ieșireaFreezePanes
Versiune 2.88.105
Modificat
- Pragurile de formulă CF12 fac acum ciclu complet prin regulile Data Bar, Color Scale și Icon Set BIFF8. Valorile de prag bazate pe formulă se compilează la octeți de token de formulă CF12 la salvare și sunt restaurate la
TXLSCfValue.Valuecând un registru de lucru este redeschis
Versiune 2.88.104
Modificat
- Formulele XLS clasice și pragurile icon-set emit acum înregistrări BIFF8 mai compacte. Constantele întregi din formule utilizează token-ul compact
tIntcând se încadrează în intervalul întreg nesemnat BIFF, iarTXLSIconSetSpec.ThresholdEqualsInclude[Index]controlează acum octetul equals al pragului icon-set CF12 astfel că apelantii pot alege semantica de comparare include sau exclude
Versiune 2.88.103
Modificat
- Foile de lucru XLS clasice includ acum un asistent de căutare text.
IXLSWorksheet.FindText(SearchText, Row, Col[, MatchCase])localizează prima celulă text încărcată care se potrivește, sare peste formule și celulele non-text și curăță coordonatele returnate când nu se găsește nicio potrivire
Versiune 2.88.102
Modificat
- Foile de lucru XLS clasice includ acum un asistent de înlocuire text.
IXLSWorksheet.ReplaceText(SearchText, ReplacementText[, MatchCase])înlocuiește potrivirile din celulele text încărcate, sare peste formule și celulele non-text și raportează numărul de celule modificate pentru fluxurile de lucru cu template-uri
Versiune 2.88.101
Modificat
- Intervalele au acum asistenți direcți de export HTML.
IXLSRange.SaveAsHTML(FileName)șiIXLSRange.SaveAsHTML(Stream)exportă intervalul selectat prin redactorul HTML existent, astfel că apelantii nu mai trebuie să creeze o instanțăTXLSHTMLExportsau să transmită explicitxlHTMLpentru fragmente comune de interval
Versiune 2.88.100
Modificat
TXLSWorkbook.GetSheetNames(Stream, AList)citește acum și fluxuri de pachete XLSX pe lângă fluxurile XLS clasice. Aplicațiile pot transmite fluxuri de memorie, fluxuri BLOB de baze de date sau fluxuri XLSX descărcate la interfața clasică și primi numele foilor de lucru ordonate fără a salva mai întâi în fișier
Versiune 2.88.99
Adăugat
- API-urile de căutare a foii de lucru, creare hiperlink și selecție multi-zonă sunt acum mai ușor de utilizat. Colecțiile de foi XLS clasice și XLSX adaugă
TryGetSheetByName, foile de lucru XLS clasice adaugă suprascrieri de conveniențăAddHyperlink, iarIXLSWorksheet.SelectAreaspoate scrie selecții active cu intervale multiple
Versiune 2.88.98
Modificat
- Registrele de lucru XLS clasice expun acum un alias
UserNamepentru câmpul saved-by.IXLSWorkbook.UserNamese mapează la aceeași valoare WRITEACCESS caLastSavedBy, astfel că codul care folosește convenția de denumireUserNamepoate citi și actualiza direct numele de audit al registrului de lucru
Versiune 2.88.97
Modificat
- Foile de lucru XLSX partajează acum asistenții de scanare callback a celulelor și scriere a intervalului.
TXLSXWorksheet.ForEachCellenumerează celulele încărcate în ordinea rândurilor cu valoarea și textul formulei, în timp ceTXLSXWorksheet.WriteCellscompletează intervalele numerice sau de tip A1 dintr-un callback cu omitere per celulă și anulare
Versiune 2.88.96
Adăugat
- Foile de lucru XLS clasice suportă acum scrierea intervalului bazată pe callback.
IXLSWorksheet.WriteCellscompletează un interval numeric bazat pe 1 sau un interval de tip A1 în ordinea rândurilor, lasă callback-ul să furnizeze valoarea fiecărei celule, suportă omiterea per celulă și poate anula timpuriu buclele de scriere lungi
Versiune 2.88.95
Modificat
- Foile de lucru XLS clasice pot acum enumera celulele încărcate printr-un callback.
IXLSWorksheet.ForEachCellparcurge celulele existente ale foii de lucru în ordinea rândurilor, transmite coordonatele bazate pe 1 ale foii, rândului și coloanei cu valoarea și textul formulei și lasă callback-ul să anuleze timpuriu scanările lungi
Versiune 2.88.94
Modificat
- Calculul formulelor poate acum apela funcții definite de aplicație.
TXLSWorkbook.OnUserFunctionșiTXLSXWorkbook.OnUserFunctionpermit caCalculatesă delege funcțiile de foaie de lucru personalizate sau nesuportate codului aplicației, transmițând argumente evaluate și utilizând rezultatulVariantreturnat când este gestionat
Versiune 2.88.93
Adăugat
- Protecția foii de lucru XLS clasice expune acum indicatorii de permisiune per acțiune.
IXLSWorksheetadaugăAllowDeleteRows,AllowInsertRows,AllowFormatCells,AllowSort,AllowAutoFilterși proprietățile de permisiune SheetProtect rămase, cu opțiunile BIFF8 scrise și citite înapoi prin înregistrările de protecție existente
Versiune 2.88.92
Modificat
- Sarcinile VBA XLS clasice au acum asistenți expliciți de încărcare/salvare/ștergere.
IXLSWorkbook.LoadVBAProjectFromFile,SaveVBAProjectToFile,HasVBAProjectșiClearVBAProjectexpun sarcina de stocare VBA OLE păstrată, în timp ceVBAProjectrămâne vizualizarea parsată read-only a modulelor
Versiune 2.88.91
Modificat
- Criteriile AutoFilter XLS clasice pot acum fi inspectate printr-o colecție de câmpuri.
IXLSWorksheet.AutoFilterColumnsexpune numărul actual de câmpuri AutoFilter BIFF8 și elementele de câmp bazate pe 1, inclusiv starea activă, operatorul și valorile DOPER stocateCriteria1/Criteria2
Versiune 2.88.90
Modificat
- Foile de lucru XLS clasice au acum configurare AutoFilter cu un singur apel.
IXLSWorksheet.ApplyAutoFiltersetează un interval AutoFilter al foii de lucru și scrie un criteriu de câmp în același apel, cu suprascrieri de interval A1 și numeric bazat pe 1 plus operatori opționali cu două criterii
Versiune 2.88.89
Eliminat
- Formele XLS clasice pot acum fi eliminate după interval de celule.
TXLSShapes.DeleteInRangeșterge imaginile sau formele ancorate ale căror ancore client OfficeArt intersectează un interval de foaie de lucru bazat pe 1, returnând numărul de forme eliminate
Versiune 2.88.88
Modificat
- Atributele de aspect ale tabelului exportului HTML clasic sunt acum configurabile.
TXLSHTMLExport.TableBorderWidth,CellPaddingșiCellSpacingcontrolează atributele<table>generate pentru ieșirea HTML stilizată și simplă, valorile implicite rămânând la zero ca înainte
Versiune 2.88.87
Adăugat
- Exportul HTML clasic suportă acum ieșire minimă de tabel.
TXLSHTMLExport.SimpleExportscrie un tabel HTML simplu fără clase CSS generate, ancore hiperlink sau atribute comment title, păstrând textul de afișare cu escape-uri și spanurile de celule îmbinate
Versiune 2.88.86
Modificat
- Exportul HTML clasic poate acum scrie un titlu de document.
TXLSHTMLExport.Titlescrie un element HTML<title>cu escape înainte de blocul de stil generat, în timp ce valoarea implicită goală menține ieșirea existentă neschimbată
Versiune 2.88.85
Modificat
- Exportul HTML clasic transmite acum comentariile celulelor ca sfaturi de instrumente.
TXLSHTMLExport.Optionsinclude acumxhCommentsîn mod implicit, scriind textul comentariului celulei ca atributetitlecu escape, permițând în continuare apelantilor să elimine opțiunea pentru ieșire simplă a celulei
Versiune 2.88.84
Modificat
- Ieșirea hiperlinkurilor exportului HTML clasic este acum configurabilă.
TXLSHTMLExport.Optionsare implicit[xhHyperlinks]pentru comportamentul existent, iar apelantii pot eliminaxhHyperlinkspentru a exporta celulele legate ca text simplu cu escape
Versiune 2.88.83
Modificat
- Exportul HTML clasic păstrează acum hiperlinkurile celulelor.
SaveAsHTMLînfășoară celulele legate în tag-uri de ancoră HTML, emite adresele hiperlinkurilor ca valorihrefcu escape, transmite textul ScreenTip ca atributetitlecu escape și menține textul afișat al celulei cu escape în interiorul linkului
Versiune 2.88.82
Modificat
- Registrele de lucru XLS clasice pot acum controla numele utilizatorului salvat.
IXLSWorkbook.LastSavedByexpune câmpul WRITEACCESS saved-by astfel că registrele de lucru generate sau editate pot stoca un nume de audit explicit, în timp ce registrele de lucru sursă needitate continuă să păstreze metadatele originale
Versiune 2.88.81
Modificat
- Foile de lucru XLS clasice pot acum controla indexul de culoare al liniei grilă afișate.
IXLSWorksheet.GridlineColorIndexexpune câmpulicvHdrWindow2 astfel că foile de lucru salvate se pot redeschide cu o culoare a liniei grilă aleasă, lăsând vizibilitatea liniei grilă și setările de imprimare a liniei grilă neschimbate
Versiune 2.88.80
Modificat
- Registrele de lucru XLS clasice pot acum seta foaia activă după index.
IXLSWorkbook.ActiveSheetIndexexpune o proprietate de tab activ bazată pe 1 susținută de câmpul de foaie activă WINDOW1, permițând registrelor de lucru salvate să se redeschidă pe o foaie de lucru aleasă fără a schimba primul tab vizibil
Versiune 2.88.79
Modificat
- Planurile de lucru XLS clasice pot acum controla stilurile automate de plan.
TXLSOutline.ApplyStylesexpune indicatorul de stil al planului WSBool, permițând foilor de lucru salvate să păstreze sau să activeze explicit aplicarea stilului de plan Excel fără a schimba nivelurile planului sau plasarea rezumatului
Versiune 2.88.78
Modificat
- Configurarea paginii XLS clasice poate acum controla întreruperile automate de pagină.
IXLSPageSetup.AutoPageBreaksexpune indicatorul de întrerupere automată de pagină WSBool al foii de lucru, permițând foilor de lucru salvate să mențină întreruperile automate de pagină activate sau să le dezactiveze explicit, păstrând întreruperile manuale de pagină
Versiune 2.88.77
Modificat
- Registrele de lucru XLS clasice pot acum controla gruparea datelor AutoFilter.
IXLSWorkbook.AutoFilterDateGroupingexpune indicatorul de grupare a datelor Window1 cu un API Boolean pozitiv, permițând registrelor de lucru salvate să mențină gruparea filtrului de date Excel activată sau să o dezactiveze explicit
Versiune 2.88.76
Modificat
- Registrele de lucru XLS clasice pot acum seta direct poziția și dimensiunea ferestrei registrului de lucru.
IXLSWorkbook.XWindow,YWindow,WindowWidthșiWindowHeightexpun câmpurile de geometrie Window1 astfel că registrele de lucru salvate se pot redeschide cu un dreptunghi de fereastră ales
Versiune 2.88.75
Modificat
- Registrele de lucru XLS clasice pot acum salva direct starea ascunsă a ferestrei registrului de lucru.
IXLSWorkbook.WindowHiddense mapează la indicatorul de ascundere Window1, permițând registrelor de lucru salvate să se redeschidă cu fereastra registrului de lucru ascunsă fără a schimba vizibilitatea foilor de lucru
Versiune 2.88.74
Modificat
- Registrele de lucru XLS clasice pot acum salva direct starea minimizată a ferestrei registrului de lucru.
IXLSWorkbook.Minimizedse mapează la indicatorul de minimizare Window1, permițând registrelor de lucru salvate să se redeschidă cu fereastra registrului de lucru minimizată
Versiune 2.88.73
Modificat
- Registrele de lucru XLS clasice pot acum ascunde sau afișa direct bara de defilare verticală.
IXLSWorkbook.ShowVerticalScrollse mapează la indicatorulfDspVScrollWindow1, permițând registrelor de lucru salvate să se deschidă cu bara de defilare verticală ascunsă sau vizibilă
Versiune 2.88.72
Modificat
- Registrele de lucru XLS clasice pot acum ascunde sau afișa direct bara de defilare orizontală.
IXLSWorkbook.ShowHorizontalScrollse mapează la indicatorulfDspHScrollWindow1, permițând registrelor de lucru salvate să se deschidă cu bara de defilare orizontală ascunsă sau vizibilă
Versiune 2.88.71
Modificat
- Registrele de lucru XLS clasice pot acum ascunde sau afișa direct bara de tab-uri a foii.
IXLSWorkbook.ShowSheetTabsse mapează la indicatorulfDspTabsWindow1, permițând registrelor de lucru salvate să se deschidă cu tab-urile foii ascunse sau vizibile fără a schimba vizibilitatea foii de lucru
Versiune 2.88.70
Modificat
- Registrele de lucru XLS clasice pot acum seta direct raportul barei de tab-uri a registrului de lucru.
IXLSWorkbook.TabRatioexpune valoareawTabRatioWindow1 astfel că apelantii pot ajusta spațiul rezervat pentru tab-urile foilor față de bara de defilare orizontală
Versiune 2.88.69
Modificat
- Registrele de lucru XLS clasice pot acum seta direct primul tab de foaie vizibil.
IXLSWorkbook.FirstSheetexpune valoareaitabFirstWindow1 ca proprietate bazată pe 1, astfel că apelantii pot alege care tab de foaie apare la marginea stângă când Excel deschide registrul de lucru
Versiune 2.88.68
Modificat
- Foile de lucru XLS clasice pot acum păstra și seta vizibilitatea simbolurilor de plan.
IXLSWorksheet.DisplayOutlineSymbolsse mapează la indicatorulfDspGutsBIFF WINDOW2, permițând foilor salvate să ascundă simbolurile de plan și grupare din vizualizarea ferestrei
Versiune 2.88.67
Modificat
- Foile de lucru XLS clasice pot acum păstra și seta vizibilitatea anteturilor de rând și coloană.
IXLSWorksheet.DisplayHeadingsse mapează la indicatorulfDspRwColBIFF WINDOW2, permițând foilor salvate să ascundă numerele rândurilor și literele coloanelor din vizualizarea ferestrei
Versiune 2.88.66
Modificat
- Foile de lucru XLS clasice pot acum păstra și seta vizualizarea afișare-formule.
IXLSWorksheet.DisplayFormulasse mapează la indicatorulfDspFmlaBIFF WINDOW2 astfel că Excel poate deschide o foaie afișând textul formulei în loc de rezultatele calculate
Versiune 2.88.65
Modificat
- Foile de lucru XLS clasice pot acum seta independent zoom-ul vizualizării Normal.
IXLSWorksheet.NormalViewZoomexpune zoom-ul Normal WINDOW2 în cache astfel că apelantii pot salva niveluri de zoom distincte în timp ce o foaie este în Previzualizare întrerupere de pagină
Versiune 2.88.64
Modificat
- Foile de lucru XLS clasice pot acum seta direct zoom-ul Previzualizare întrerupere de pagină.
IXLSWorksheet.PageBreakPreviewZoomexpune zoom-ul de previzualizare WINDOW2 în cache astfel că apelantii pot salva niveluri diferite de zoom Normal și Previzualizare întrerupere de pagină
Versiune 2.88.63
Modificat
- Foile de lucru XLS clasice expun acum asistenți pentru panouri divizate.
IXLSWorksheet.SplitPanes(Width, Height)creează o divizare mobilă a panoului utilizând scriitorul de panouri BIFF existent, iarUnsplitPaneselimină înregistrarea de panou înainte de salvare
Versiune 2.88.62
Eliminat
- Foile de lucru XLS clasice au acum asistenți mai simpli pentru panouri înghețate.
IXLSWorksheet.FreezePanes(Cols, Rows)îngheață coloanele stângi și rândurile de sus cerute, în timp ceUnfreezePaneselimină înregistrarea de panou înainte de salvare
Versiune 2.88.61
Modificat
- Descoperirea numelor de foi XLS clasice acceptă acum fluxuri.
TXLSWorkbook.GetSheetNames(Stream, List)citește numele foilor BIFF dintr-un flux XLS furnizat de apelant fără a încărca conținuturile foii de lucru, corespunzând asistentului cu numele fișierului pentru datele registrului de lucru în memorie
Versiune 2.88.60
Remediat
- Colecțiile de foi de lucru expun acum asistenți direcți de căutare după nume.
IXLSWorkSheets.SheetByName(Name)șiTXLSXSheets.SheetByName(Name)returnează obiectul foii de lucru corespunzătoare saunil, astfel că apelantii nu mai trebuie să rezolve un index înainte de a accesa o foaie
Versiune 2.88.59
Modificat
- Interfața XLSX citește acum direct numele foilor din fluxuri.
TXLSXWorkbook.GetSheetNames(Stream, List)citește numele ordonate dinxl/workbook.xmlfără a încărca XML-ul foii de lucru, corespunzând supraîncărcării cu numele fișierului pentru registrele de lucru susținute de memorie și BLOB
Versiune 2.88.58
Modificat
- Interfața XLSX expune acum descoperirea rapidă a numelor foilor.
TXLSXWorkbook.GetSheetNames(FileName, List)citește numele ordonate dinxl/workbook.xmlfără a încărca XML-ul foii de lucru
Versiune 2.88.57
Adăugat
TXLSWorkbook.GetSheetNamessuportă acum pachete XLSX. Metoda citeștexl/workbook.xmldin fișierele.xlsx,.xlsm,.xltxși.xltmși returnează numele foilor ordonate fără a încărca XML-ul foii de lucru
Versiune 2.88.56
Modificat
- Registrele de lucru XLS clasice pot acum citi numele foilor fără a încărca foile de lucru.
TXLSWorkbook.GetSheetNames(FileName, List)scanează fluxul globalelor registrului de lucru și returnează numele foilor ordonate din fișierele Excel 97-2003.xls
Versiune 2.88.55
Modificat
- Criteriile AutoFilter pe interval XLS clasic scriu acum înregistrări de filtru BIFF8.
TXLSRange.Autofilter(Field, Criteria)creează intervalul de filtru când este necesar și emite condițiiAUTOFILTERpentru criterii simple de tip șir, numeric, boolean, gol, negol și cu prefix de comparare
Versiune 2.88.54
Modificat
- Foile de lucru XLS clasice au acum asistenți AutoFilter la nivel de foaie de lucru.
IXLSWorksheet.SetAutoFilter,ClearAutoFilterșiAutoFilterRangegestionează direct intervalele dropdown de filtru BIFF8 reutilizând scriitorul existent deAUTOFILTERINFOși numele bazei de date filtru
Versiune 2.88.53
Adăugat
- Foile de lucru XLS clasice expun acum crearea validărilor de date din listă.
IXLSWorksheet.AddListValidation(Range, Items)scrie înregistrările BIFF8DVALșiDV, menține dropdown-ul vizibil în mod implicit, suportă liste inline separate prin virgule și păstrează regulile prin ciclurileOpen/SaveAs
Versiune 2.88.52
Adăugat
- Calculul formulelor funcționează acum consistent pe punctele de intrare XLS și XLSX.
TXLSWorkbook.Calculateacceptă acum formule cu egal leading de stil Excel precum=SUM(A1:B1)+C1, iar interfața XLSX adaugăTXLSXWorkbook.CalculateplusTXLSXWorksheet.Calculate. Calea XLSX partajează parserul de token de formulă și evaluatorul HotXLS pentru referințe de celulă și interval, celule de formulă referențiate, referințe cross-foaie și intervale de name definit cu domeniu registru de lucru sau foaie
Versiune 2.88.51
Adăugat
- Intervalele XLSX suportă acum îmbinarea de stil Excel pe orizontală.
TXLSXRange.Merge(True)scrie câte o intrare<mergeCell>per rând, corespunzând comportamentului XLS clasicRange.Merge(True), în timp ceMergefără argumente șiMerge(False)continuă să creeze un dreptunghi îmbinat pe întregul interval
Versiune 2.88.50
Modificat
- Plasamentul BIFF8 HeaderFooter și HFPicture corespunde acum regulilor MS-XLS curente. HotXLS păstrează înregistrările
HeaderFooter($089C) create de Excel pentru textul antet și subsol pentru pagini pare / prima pagină și redă înregistrărileHFPicture($0866) după dimensiunile foii de lucru și obiectele de desenare conform ABNF-ului foii de lucru, astfel că detaliile de aspect ale paginii supraviețuiesc ciclurilor open/save .xls
Versiune 2.88.49
Modificat
- Rulele de text îmbogățit ale comentariilor au acum un API tipizat.
TXLSComment.TextRunsexpune intrările BIFF8TXOFormatRunastfel că apelantii pot inspecta sau seta limitele de font per caracter din comentariile .xls, în timp ce HotXLS păstrează în continuare octeții rule de bază pentru cicluri complete sigure
Versiune 2.88.48
Modificat
- Înregistrările SX suplimentare ale tabelului pivot sunt acum expuse prin API-ul tipizat. HotXLS atașează acum înregistrările pivot BIFF8 încărcate precum
SXIVD,SXLI,SXFormat,SXEx,SXVDEx,SXRule,SXFiltșiSXAddllaTXLSPivotTable.SupplementalRecordspentru inspecție păstrând în continuare octeții brute originali pentru ciclurile complete de salvare
Versiune 2.88.47
Eliminat
- Valorile în cache ale registrelor de lucru externe supraviețuiesc acum ciclurilor open/save .xls. HotXLS păstrează acum înregistrările BIFF8
XCTșiCRNatașate intrărilorSUPBOOKîncărcate, astfel că valorile de celulă în cache pentru linkurile registrelor de lucru externe nu mai sunt abandonate în timpul salvării
Versiune 2.88.46
Modificat
- Nivelurile de contur ale stilurilor integrate supraviețuiesc acum ciclurilor open/save .xls. HotXLS citește și păstrează acum octetul BIFF8
STYLEiLevelpentru stilurile integrate, astfel că metadatele de stil Excel RowLevel_1..7 și ColLevel_1..7 nu mai sunt resetate la implicit în timpul salvării
Versiune 2.88.45
Modificat
- Metadatele numelor definite supraviețuiesc acum ciclurilor open/save .xls. HotXLS păstrează acum biții de opțiune și octeții de scurtătură ai înregistrărilor BIFF8
NAMEîncărcate dacă numele definit nu este editat, astfel că funcția, obiectul, procedura, expresia calculată și metadatele de name binar create de Excel nu mai sunt șterse în timpul salvării
Versiune 2.88.44
Eliminat
- Marcajele de registru de lucru ObProj supraviețuiesc acum ciclurilor open/save .xls. HotXLS păstrează acum înregistrările BIFF8
ObProjîncărcate chiar și când nicio stocare VBA nu este expusă prin modelul de obiect, astfel că marcajele de proiect VBA la nivel de registru de lucru și metadatele terților nu mai sunt abandonate în timpul salvării
Versiune 2.88.43
Modificat
- Indicatorii de opțiune ai foii de lucru supraviețuiesc acum ciclurilor open/save .xls. HotXLS păstrează acum biții
WSBOOLBIFF8 nemodulați precum indicatorii de dialog-sheet, întrerupere automată de pagină, aplicare stil și afișare contur-gutter, actualizând în continuare setările existente de potrivire pagină și rezumat contur prin API-ul public
Versiune 2.88.42
Modificat
- Înregistrările suplimentare de metadate ale registrului de lucru supraviețuiesc acum ciclurilor open/save .xls. HotXLS păstrează acum corpurile înregistrărilor BIFF8 încărcate
COUNTRY,BOOKBOOL,BACKUP,FNGROUPCOUNT,USESELFSșiRECALCIDîn loc să le rescrie cu valori implicite, menținând stabile metadatele de compatibilitate și calcul la nivel de registru de lucru
Versiune 2.88.41
Modificat
- Selecțiile multi-zonă și focalizarea panoului activ supraviețuiesc acum ciclurilor open/save .xls. HotXLS păstrează acum înregistrările BIFF8
SELECTIONîncărcate și valoarea panoului activPANESdacă selecția foii sau panourile nu sunt schimbate prin API, astfel că focalizarea panoului split/înghețat și selecțiile cu intervale multiple din Excel nu mai sunt colapsate în timpul salvării
Versiune 2.88.40
Eliminat
- Numele registrelor de lucru externe supraviețuiesc acum ciclurilor open/save .xls. HotXLS păstrează acum înregistrările BIFF8
EXTERNALNAMEîncărcate atașate intrărilorSUPBOOKexterne, inclusiv metadatele DDE/OLE/link și cozile de formulă, astfel că numele externe și definițiile de link nu mai sunt abandonate la salvare
Versiune 2.88.39
Modificat
- Fișierele BIFF8 .xls protejate cu parolă utilizează și citesc acum înregistrări FILEPASS RC4 CryptoAPI. HotXLS scrie acum metadate
FILEPASSvMajor=2 de stil Excel 2007/2010 pentru registrele de lucru .xls criptate și citește atât fișierele RC4 vMajor=1 legacy cât și RC4 CryptoAPI vMajor=2/3/4, astfel că registrele de lucru protejate cu parolă nu mai eșuează sau retrogradează la antetul de criptare mai vechi
Versiune 2.88.38
Modificat
- Metadatele hiperlinkurilor .xls create de Excel supraviețuiesc acum ciclurilor open/save. HotXLS păstrează acum corpul înregistrării BIFF8
HLinkpentru hiperlinkurile încărcate dacă hiperlinkul nu este editat, menținând stabile pe parcursul salvărilorstreamVersionsursă, biții de opțiunehlstmfprecumfIcon, datele moniker și metadatele de țintă corelate
Versiune 2.88.37
Modificat
- Starea ferestrei registrului de lucru supraviețuiește acum ciclurilor open/save .xls. HotXLS citește și păstrează acum poziția ferestrei, dimensiunea, indicatorii de vizibilitate/iconic, primul tab de foaie afișat, numărul de tab-uri selectate și raportul barei de derulare tab din înregistrarea BIFF8
WINDOW1în loc să le rescrie cu valori implicite la fiecare salvare
Versiune 2.88.36
Modificat
- Utilizatorii BIFF8 WriteAccess saved-by supraviețuiesc acum ciclurilor open/save .xls. HotXLS citește și păstrează acum corpul înregistrării
$005C WRITEACCESSîn loc să înlocuiască utilizatorul saved-by al Excel cuHotXLS, astfel că metadatele de audit ale registrului de lucru rămân stabile după salvare
Versiune 2.88.35
Remediat
- Autorii comentariilor Excel supraviețuiesc acum ciclurilor open/save .xls. Câmpul
stAuthoral înregistrării BIFF8Noteeste acum parsat și transmis în modelul de notă de desenare în loc să fie înlocuit cu un șir gol, astfel că autorul comentariului „Creat de" scris de Excel este păstrat când HotXLS salvează din nou registrul de lucru
Versiune 2.88.34
Modificat
- Opțiunile OfficeArt FOPT ale formei sunt acum expuse printr-un bag de opțiuni de nivel scăzut.
TXLSShape.OfficeArtOptionspermite apelantilor avansați să inspecteze, seteze și șteargă orice PID FOPT stocat caLongWordsauWideString, în timp ce API-urile existente de nivel înaltLine,Fill, culoare și vizibilitate rămân neschimbate
Versiune 2.88.33
Modificat
- Înregistrările suplimentare de reguli ale containerului solver OfficeArt acum supraviețuiesc ciclului de salvare. Pe lângă
msofbtConnectorRuletipizat ($F012), HotXLS păstrează acum copiii solver ne-folder cum ar fiOfficeArtFArcRule($F014) șiOfficeArtFCalloutRule($F017) ca înregistrări OfficeArt brute în interiorulmsofbtSolverContainer($F005), astfel că desenele Excel avansate nu mai pierd relațiile solver ne-conector în timpul salvării
Versiune 2.88.32
Modificat
- Marcajele OfficeArt ClientData nu mai sunt duplicate după păstrarea înregistrărilor necunoscute. MS-XLS definește
OfficeArtClientData($F011) ca marcaj de lungime zero al cărui înregistrareObjurmând rămâne o înregistrare BIFF separată. v2.88.32 recunoaște acel marcaj în loc să îl captureze ca frunză necunoscută SpContainer, astfel că formele parsate emit exact un marcaj $F011 în timpul salvării în timp ce presupunerile malformate de tip container rămân în afara căii XLS
Versiune 2.88.31
Modificat
- Regulile conectorului OfficeArt acum supraviețuiesc ciclului de salvare. Desenele .xls create de Excel stochează legăturile liniei conector în
msofbtSolverContainer($F005) cu înregistrări copilmsofbtConnectorRule($F012). v2.88.31 parsează și emite acea pereche $F005/$F012 prinTMsoConnectorRules, păstrând forma de start, forma de end, forma conectorului și siturile de conexiune pe parcursul salvării/reîncărcării. Nota de audit anterioară lista $F121, dar MS-ODRAW defineșteOfficeArtFConnectorRuleca $F012
Versiune 2.88.30
Modificat
- Înregistrările frunze SpContainer OfficeArt nerecunoscute acum supraviețuiesc ciclului de salvare. Fișierele .xls create de Excel incorporează adesea Fbt-uri frunze cum ar fi
msofbtClientTextbox($F00D),OfficeArtFPSPL($F11D) șiOfficeArtUDefProp($F122) în interiorul fiecărui SpContainer de formă. v2.88.30 capturează frunzele necunoscute la nivel de formă caTMsoFbtUnknownși le re-emite în ordine de parsare întreClientAnchoral formei și marcajul finalmsofbtClientDatacu corp zero - Domeniu de aplicare și acțiuni ulterioare. Alte frunze necunoscute la nivel de desen rămân amânate; cazul containerului conector-regulă solver este gestionat de v2.88.31. Necunoscutele în formă de container, cum ar fi
msofbtClientData($F011) utilizat ca container în loc de marcaj sibling, rămân auditarea Slice 3
Versiune 2.88.29
Adăugat
- Comportamentul de înghițire totală al FtLbsData limitează domeniul de aplicare. Cazul existent
$0013suprascrieRecLen := Len - offspentru a absorbi toți octeții după antetul FtLbsData în blob-ulFObjRec_LBSData, astfel că subînregistrările care apar DUPĂ FtLbsData (de obicei doar FtEnd) sunt în continuare transmise prin acel mecanism neschimbate. Noua integrare FObjTailRaw vizează specific decalajul înaintea FtLbsData unde FtMacro și ObjLinkFmla locuiesc de obicei. Combo boxurile / list boxurile nou create prin API-ul de Desenare auFObjTailRawgol → ieșire identică la nivel de octet cu v2.88.28
Eliminat
- Subînregistrările OBJ necunoscute ComboBox și ListBox acum supraviețuiesc ciclului de salvare. TMSOShapeComboBox.ParseObj și TMSOShapeListBox.ParseObj parsau deja tipizat FtSbs ($000C), FtSbsFmla ($000E) și FtLbsData ($0013) în câmpuri dedicate, dar orice altă subînregistrare din fișierul sursă (FtMacro $0004, ObjLinkFmla, FtNts $000D, etc.) apărând între CMO și FtLbsData era eliminată silențios la fall-through de caz. v2.88.29 adaugă aceeași ramură else ca v2.88.28 Picture, capturând antetul de 4 octeți + corpul subînregistrării necunoscute în
FObjTailRaw. Ambele metode AddObj emit octeții captați între corpul CMO și subînregistrarea FtSbs pentru a corespunde ordinii de subînregistrare din specificația BIFF8
Versiune 2.88.28
Adăugat
- Model de coexistență tipizat + brut. Spre deosebire de PictureFrame (v2.88.27) care a folosit un swap if/else între emiterea tipizată și brută, Picture le combină pe amândouă: câmpurile tipizate păstrează suprafața API (apelantii pot ajusta în continuare
ftCfValueetc.), în timp ce coada brută păstrează doar octeții necunoscuți. Imaginile nou create prin API-ul de Desenare auFObjTailRawgol, astfel că ieșirea este identică la nivel de octet cu v2.88.27
Eliminat
- Subînregistrările OBJ necunoscute ale formei Picture acum supraviețuiesc ciclului de salvare. TMSOShapePicture.ParseObj parsase deja tipizat FtCf ($0007), FtPioGrbit ($0008) și FtPictFmla ($0009) în câmpuri dedicate, dar orice altă subînregistrare din fișierul sursă (FtMacro $0004, FtNts $000D, etc.) era eliminată silențios la fall-through de caz. v2.88.28 adaugă o ramură else care adaugă antetul complet de 4 octeți + corpul subînregistrărilor nerecunoscute în
FObjTailRaw; TMSOShapePicture.AddObj emite apoi acei octeți verbatim după ieșirea sa de subînregistrare tipizată și înainte de marcajul FtEnd. Obiectele Picture din fișierul sursă cu cârlige macro supraviețuiesc resalvării
Versiune 2.88.27
Adăugat
- Ciclul de salvare al subînregistrărilor OBJ trailing extins la formele PictureFrame. TMSOShapePictureFrame.AddObj emitea anterior doar FtCf hardcodat legacy ($0007, corp $FFFF) și FtPioGrbit ($0008, corp $0000) între CMO și FtEnd. Pentru cadrele picture nou create noul cod emite în continuare acele valori implicite; pentru cadrele picture parsate dintr-un fișier .xls sursă, octeții
FObjTailRawcapturați sunt emiși verbatim în schimb, păstrând orice conținut FtPictFmla / FtCf ne-implicit / FtPioGrbit ne-implicit sursă pe parcursul ciclului de salvare
Remediat
- Notă de investigație — Flush corectează automat sz.
TMsoShapeContainer.Flushrescrie antetul de dimensiune al înregistrării Obj la momentul commit-ului prinData.SetWord(Data.DataLength - 4, 2), ceea ce înseamnă că valorile hardcodatesz := $1Acare au trăit în implementările HotXLS AddObj de ani de zile nu erau bug-uri de spec după toate — Flush le corectează automat. v2.88.27 calculează în continuare sz cu acuratețe pentru claritatea codului sursă, dar comportamentul runtime rămâne nemodificat din această perspectivă
Versiune 2.88.26
Adăugat
- Ciclul de salvare al subînregistrărilor OBJ trailing extins la formele Chart și CheckBox. v2.88.25 a introdus păstrarea de octeți bruti pentru octeții dintre CMO ($0015) al unui înregistrări Obj și marcajul său FtEnd ($0000), dar doar TMSOShapeTextBox.AddObj emitea coada capturată. Această lansare aplică același model la TMSOShapeChart.AddObj și TMSOShapeCheckBox.AddObj — ambele partajează structura de emitere simplă "CMO + FtEnd" a TextBox, astfel că modificarea este o substituție de variabilă pe un singur rând (
sz := $1A + Word(Length(FObjTailRaw))) plus o buclă de octeți verbatim înainte de marcajul FtEnd
Modificat
- Subînregistrările trailing ale graficelor (de ex. FtMacro pentru macro-urile obiectului grafic încorporat) și subînregistrările de stare checkbox (FtCbls + FtCblsData + ObjLinkFmla, MS-XLS §2.5.140-141 / §2.5.149) acum supraviețuiesc salvării/reîncărcării HotXLS. Graficele și checkbox-urile nou create prin API-ul de Desenare emit în continuare un CMO+FtEnd implicit de 26 de octeți (identic la nivel de octet cu v2.88.25), astfel că apelantii existenți nu observă nicio schimbare de comportament. Formele Picture / ComboBox / ListBox / PictureFrame au propria emitere dinamică de subînregistrare tipizată care intră în conflict cu FObjTailRaw — integrarea lor este amânată la commit-uri viitoare
Versiune 2.88.25
Adăugat
- Capturare generică de bază, emitere numai TextBox (prima felie R5-3). TMsoShapeContainer.ParseObj capturează acum intervalul de octeți dintre sfârșitul corpului CMO și marcajul FtEnd într-un nou câmp intern
FObjTailRaw: TBytes; TMSOShapeTextBox.AddObj inserează acei octeți între emiterea sa CMO și marcajul FtEnd, cu dimensiunea antetului înregistrării Obj ajustată corespunzător. Comentariile nou create (fără octeți sursă) păstrează ieșirea identică la nivel de octet cu v2.88.24. Alte clase de formă (Picture / CheckBox / ComboBox / ListBox / Chart) moștenesc captura, dar suprascrierea lor tipizată AddObj păstrează comportamentul legacy "sintetizează de la zero" — emiterea de octeți bruti pentru acele tipuri de formă este amânată la commit-uri viitoare
Modificat
- Subînregistrările trailing ale înregistrărilor OBJ sunt acum păstrate pe parcursul ciclului de salvare pentru comentarii. Înregistrarea BIFF8 Obj ($005D) înlănțuie o secvență de subînregistrări tipizate după CMO ($0015) obligatoriu, terminată printr-un marcaj FtEnd ($0000), conform MS-XLS §2.4.181. Pentru formele Note (comentariu) blocul trailing este de obicei un FtNts de 26 de octeți (§2.5.149) purtând un GUID și indicatorul fSharedNote — ambele esențiale când Excel îmbină ulterior comentariile între utilizatori în registrele de lucru partajate. HotXLS abandona anterior fiecare octet după CMO la citire și emitea doar un FtEnd gol la scriere, astfel că orice FtNts din fișierul sursă era pierdut la fiecare resalvare HotXLS
Versiune 2.88.24
Adăugat
- Păstrarea octeților bruti în TMSOShapeTextBox. ParseTXO capturează octeții Continue post-text verbatim într-un nou câmp intern
FFormatRunsRaw: TBytes; Store îi emite înapoi ca Continue pentru rulele de formatare și ajustează antetulcbRunsal înregistrării de bază pentru a corespunde. Comentariile nou create (prinAddComment) păstrează ieșirea de rulă implicită unică legacy neschimbată, astfel că ieșirea identică la nivel de octet este păstrată pentru registrele de lucru implicite. Accesul API Excel tipizat la rulele de format individuale este în continuare amânat — API-ul de comentariu cu WideString unic existent rămâne nemodificat
Modificat
- Comentariile de celulă cu mai multe fonturi și culori acum supraviețuiesc ciclului de salvare. Blocul de rundle de formatare al înregistrării BIFF8 TXO (
rgTxoRuns+TxOLastRunconform MS-XLS §2.5.272) poartă suprascrierile de font și culoare per-rulă care dau unui comentariu stilul său text îmbogățit. HotXLS abandona anterior întregul bloc la citire și emitea o singură rulă implicită goală + LastRun la scriere — aplatizând orice text "Important!" evidențiat în roșu, orice cuvânt bold din textul comentariului, la formatare implicită uniformă la fiecare resalvare HotXLS
Versiune 2.88.23
Adăugat
- Trei noi proprietăți TXLSPageSetup.
PrintResolution: LongWord,PrintVResolution: LongWordșiCopies: LongWord— toate implicit la valorile pe care scriitorul le hardcoda anterior (600 / 600 / 1), astfel că registrele de lucru care nu le ating niciodată produc ieșire identică la nivel de octet cu v2.88.22. Setatorii se clampează laHigh(Word)astfel că o valoare prea mare a apelantului nu poate înfășura la emitere
Eliminat
- Rezoluția de imprimare și numărul de copii acum supraviețuiesc ciclului de salvare — înregistrarea Setup este acum complet acoperită. Trei câmpuri Word din înregistrarea Setup (
iResla offset 12,iVResla offset 14,iCopiesla offset 32, conform MS-XLS §2.4.257) poartă alegerile Excel "Configurare pagină → Pagină → Calitate de imprimare" și "Număr de copii". HotXLS abandona anterior toate trei la citire și emitea valori hardcodate (600 DPI / 600 DPI / 1 copie), astfel că orice rezoluție sau număr de copii ajustat de utilizator revenea silențios la fiecare resalvare HotXLS
Remediat
- Lucrările de salvare ciclică a înregistrării Setup complete. Cu această remediere fiecare câmp vizibil utilizatorului din înregistrarea BIFF8 Setup ($00A1) supraviețuiește end-to-end — dimensiunea hârtiei / scala / numărul primei pagini / lățimea și înălțimea fit-to-page / orientarea / ordinea de imprimare / alb-negru / schiță / imprimare comentarii / erori de celulă / rezoluție / copii. Doar cele două biți de indiciu spec grbit (
fNoPls,fNoOrient) rămân neexpuse, ambele pe care HotXLS le scrie ca zero corespunzând comportamentului implicit al Excel
Versiune 2.88.22
Adăugat
- Două noi proprietăți TXLSPageSetup.
UseFirstPageNumber: Booleanreflectă bitul (False = "Auto", implicit);FirstPageNumber: Integerpoartă valoarea iPageStart (implicit 1, clampată la intervalul Word cu semn al specificației -32768..32767 de setter). HotXLS transmiteiPageStartverbatim chiar și cândUseFirstPageNumbereste False, astfel că comutarea între Auto și personalizat în Excel păstrează ultima valoare introdusă de utilizator
Eliminat
- "Numărul primei pagini" din Configurare pagină personalizată acum supraviețuiește ciclului de salvare. Înregistrarea BIFF8 Setup poartă alegerea "Configurare pagină → Pagină → Numărul primei pagini" a registrului de lucru ca două câmpuri corelate: bitul 7 din grbit (
fUsePage) selectează între implicitul "Auto" al Excel și un număr de pagină de start explicit, iar cuvântul cu semn la offset 4 (iPageStart) conține acea valoare personalizată, conform MS-XLS §2.4.257. HotXLS abandona anterior ambele la citire și emiteaiPageStart = 1cu bitul șters, astfel că un "Numărul primei pagini: 100" introdus de utilizator revenea silențios la "Auto" la fiecare resalvare HotXLS
Versiune 2.88.21
Adăugat
- Noua proprietate booleană TXLSPageSetup.PrintNotesAtEnd. Implicit
Falsecorespunzând implicitul UI al Excel. Cititorul și scriitorul transmit bitul verbatim (chiar și cândPrintNotes = False), astfel că un registru de lucru cu comentarii temporar dezactivate își reține preferința "la sfârșitul foii" pentru când utilizatorul le reactivează — oglindind comportamentul propriu al Excel
Eliminat
- Alegerea "Imprimați comentariile la sfârșitul foii" acum supraviețuiește ciclului de salvare. Bitul 9 al grbit din înregistrarea BIFF8 Setup (
fEndNotesconform MS-XLS §2.4.257) poartă distincția dropdown-ului Configurare pagină → Foaie → Comentarii dintre "Afișate pe foaie" (implicit) și "La sfârșitul foii". HotXLS transmitea deja PrintNotes (bitul 5) pentru a controla dacă se imprimă comentariile, dar bitul 9 era abandonat la citire și emis ca zero la scriere — astfel că un "La sfârșitul foii" ales de utilizator revenea silențios la "Afișate pe foaie" la fiecare resalvare HotXLS
Versiune 2.88.20
Modificat
- Alegerea "Setare precizie ca afișată" a registrului de lucru acum supraviețuiește ciclului de salvare. Înregistrarea BIFF8 CalcPrecision ($000E) poartă caseta de selectare "Fișier → Opțiuni → Avansat → Setare precizie ca afișată" la nivel de registru de lucru conform MS-XLS §2.4.35. HotXLS nu avusese anterior niciun caz dispatcher pentru $000E iar TXLSWorkbook.StorePrecision emitea un
1hardcodat (= precizie completă păstrată). Un utilizator care bifa "Setare precizie ca afișată" revenea silențios la "precizie completă" la fiecare resalvare HotXLS — ascunzând intenția deliberată a utilizatorului că orice recalcul ulterior ar trebui să trunchieze permanent valorile celulelor la zecimalele lor formatate
Remediat
- Noua proprietate booleană TXLSWorkbook.UseFullPrecision. Implicit
True(corespunde implicitul BIFF8 și implicitul UI al Excel de debifat). Setarea laFalseoglindește bifarea opțiunii distructive "precizie ca afișată" — HotXLS însuși nu trunchiează nicio valoare de celulă pe parcursul ciclului de salvare, dar indicatorul este acum scris înapoi fidel astfel că recalculul următor al Excel îl respectă. Cu această remediere, fiecare înregistrare de calcul BIFF8 (CalcCount / CalcMode / CalcPrecision / CalcDelta / CalcIter / CalcSaveRecalc) supraviețuiește end-to-end
Versiune 2.88.19
Adăugat
- Noua proprietate booleană TXLSWorkbook.RecalcOnSave. Implicit
True(corespunde atât implicitul UI al Excel cât și valoarea legacy hardcodată), astfel că registrele de lucru care nu ating niciodată proprietatea păstrează ieșirea identică la nivel de octet cu v2.88.18. Setatorii acceptă orice Boolean; cititorul normalizează octeții sursă arbitrari non-zero laTrue
Modificat
- Caseta de selectare "Recalculează registrul de lucru înainte de salvare" acum supraviețuiește ciclului de salvare. Înregistrarea BIFF8 CalcSaveRecalc ($005F) poartă booleana "Fișier → Opțiuni → Salvare → Recalculează registrul de lucru înainte de salvare" a registrului de lucru, conform MS-XLS §2.4.37. HotXLS nu avusese anterior niciun caz dispatcher pentru $005F iar StoreCalculationSettings emitea un
1hardcodat — astfel că un "recalc on save" dezactivat de utilizator se reactica silențios la fiecare resalvare HotXLS, ceea ce conta cu adevărat pentru registrele de lucru cu calcul manual unde utilizatorul înghețase deliberat valorile celulelor de pe disc
Versiune 2.88.18
Adăugat
- Trei noi proprietăți TXLSWorkbook.
EnableIteration: Booleanoglindește caseta de selectare;MaxIterations: LongWordeste limita de iterații (clampată la intervalul legal de spec 1..32767 de setter);MaxIterationChange: Doubleeste delta de convergență (input negativ se snapuiește la implicitul de spec 0.001). Implicite corespund valorilor pe care scriitorul le hardcoda, astfel că registrele de lucru care nu ating niciodată noile proprietăți produc ieșire identică la nivel de octet cu v2.88.17
Modificat
- Setările de calcul iterativ (activare + iterații maxime + schimbare maximă) acum supraviețuiesc ciclului de salvare. Înregistrările BIFF8 CalcIter ($0011), CalcCount ($000C) și CalcDelta ($0010) poartă împreună trioul de opțiuni "Activare calcul iterativ" al Excel (Fișier → Opțiuni → Formule), conform MS-XLS §2.4.33 / §2.4.31 / §2.4.32. Niciunul din cele trei nu avusese un caz dispatcher înainte, iar StoreCalculationSettings le emitea cu valori hardcodate (dezactivat / 100 / 0.001). Un loop de 1000 de iterații configurat de utilizator cu o deltă de convergență 0.0001 revenea silențios la "iterație dezactivată, 100, 0.001" la fiecare resalvare HotXLS — stricând formulele cu referință circulară și modelele financiare sensibile la convergență
Versiune 2.88.17
Adăugat
- Modul de calcul al registrului de lucru (Manual / Automat / Auto cu excepția tabelelor) acum supraviețuiește ciclului de salvare. Înregistrarea BIFF8 CalcMode ($000D) poartă alegerea "Formule → Opțiuni de calcul" la nivel de registru de lucru conform MS-XLS §2.4.36. HotXLS nu avusese anterior niciun caz dispatcher pentru $000D, astfel că valoarea fișierului sursă era eliminată la încărcare iar scriitorul emitea întotdeauna un
$0001hardcodat (Automat). Un mod Manual selectat de utilizator revenea silențios la Automat la fiecare resalvare HotXLS — rău pentru registrele de lucru mari unde Manualul este setat deliberat pentru performanță. Noul handler ParseCalcMode stochează valoarea sursă pe registrul de lucru iar StoreCalculationSettings emite acum valoarea stocată în loc de constantă - Noua proprietate TXLSWorkbook.CalculationMode. Proprietate
LongWordread-write acceptândxlCalcManual(0),xlCalcAutomatic(1, implicit) sauxlCalcAutomaticExceptTables(0xFFFF) — trei noi constante exportate dinlxTNC.inc. Setatorii clampeaza valorile necunoscute la implicitul de spec astfel că un fișier sursă corupt nu poate lăsa registrul de lucru într-o stare nedefinită. Codul existent care nu atinge niciodată proprietatea păstrează implicitul legacy "Automat", astfel că ieșirea anterioară este identică la nivel de octet pentru registrele de lucru implicite
Versiune 2.88.16
Adăugat
- Noua proprietate TXLSPageSetup.PrintCellErrors. Proprietate
LongWordread-write acceptândxlPrintErrorsDisplayed(0, implicit),xlPrintErrorsBlank(1),xlPrintErrorsDash(2) sauxlPrintErrorsNA(3) — patru noi constante exportate dinlxTNC.inc. Apelantii PageSetup existenți care nu ating niciodată proprietatea păstrează implicitul ("afișat"), astfel că ieșirea de imprimare legacy rămâne neschimbată
Eliminat
- Alegerea "Erori de celulă ca" din Configurare pagină acum supraviețuiește ciclului de salvare. Înregistrarea BIFF8 Setup ($00A1) împachetează dropdown-ul "Erori de celulă ca: afișat / <gol> / <linie> / <N/A>" din tab-ul Configurare pagină → Foaie în biții 10-11 ai cuvântului său grbit ca
iErrors, conform MS-XLS §2.4.257. HotXLS abandona anterior acești biți la citire și îi emitea ca zero la scriere, astfel că un registru de lucru pe care utilizatorul îl configurase să imprime#DIV/0!ca#N/Arevenea silențios la "afișat" după fiecare resalvare HotXLS. Cititorul decodifică acumiErrorsîntr-o nouă proprietateTXLSPageSetup.PrintCellErrorsiar scriitorul reconstruiește câmpul din ea
Versiune 2.88.15
Adăugat
- Șase noi proprietăți TMSOShapeTextBox pentru stilizarea explicită a comentariilor.
HAlignment,VAlignment,Rotation,LockText,JustLastLineșiSecretEditsunt expuse ca proprietăți read-write pe fiecare formă de comentariu;AddCommentimplicit la stânga+sus+orizontal+deblocat astfel că apelantii care nu le ating păstrează aspectul anterior
Eliminat
- Alinierea și orientarea comentariilor de celulă acum supraviețuiesc ciclului de salvare. Înregistrarea de bază BIFF8 TXO ($01B6) poartă cinci indicatori tipizați în cuvântul său
grbit(hAlignment, vAlignment, fLockText, fJustLast, fSecretEdit) plus un cuvânt separatrotpentru orientarea textului, conform MS-XLS §2.4.329. Cititorul abandona anterior toate acestea iar scriitorul fixagrbitla un0x0012hardcodat (stânga + sus) cu rotație mereu 0, astfel că fiecare salvare reseta un comentariu centrat sau rotit înapoi la stânga+sus+orizontal indiferent de sursă. Cititorul decodifică acum câmpurile tipizate la încărcare iar scriitorul compunegrbitdin ele, astfel că layout-ul supraviețuiește ciclului de salvare/reîncărcare
Remediat
- Scriitorul TXO acum alocă reserved4 / reserved5 de-a lungul limitelor câmpului spec. Codul anterior emitea offseturile 2-9 ale înregistrării de bază ca două scrieri lungi (rot + reserved4 apoi reserved5); scriitorul acum le împarte în
Wordrot,Wordreserved4,Longreserved5 — conținutul de octeți este neschimbat (în continuare tot zero pentru formele Note) dar structura sursă corespunde acum offseturilor câmpului MS-XLS §2.4.329, făcând remedierile TXO viitoare mai greu de dezaliniat
Versiune 2.88.14
Remediat
- Offsetul cchText TXO corectat — remedierea lungimii comentariului v2.88.13 acum chiar se declanșează. Versiunea anterioară a introdus o verificare de sanitate pentru înregistrarea de bază TXO citind
cchTextla offsetul 8, dar MS-XLS §2.4.329 plaseazăcchTextla offsetul 10 (după grbit, rot și cei 6 octeți reserved / controlInfo). Offsetul 8 cade în interiorul long-ului reserved5, care este întotdeauna zero pe obiectele în formă de Note, astfel că fiecare comentariu aluneca silențios în fallback-ul defensiv care pur și simplu restaura comportamentul pre-v2.88.13. Remedierea corectează offsetul la 10 — comentariile lungi acum se asamblează genusin peste înregistrările Continue iar comentariile scurte nu mai preiau padding de coadă. Nicio altă schimbare comportamentală față de ce v2.88.13 trebuia mereu să livreze
Versiune 2.88.13
Modificat
- Comentariile de celulă lungi acum se citesc înapoi la lungime completă. Înregistrarea BIFF8 TXO ($01B6) împarte corpul de text de-a lungul înregistrării de bază și al unuia sau mai multor înregistrări Continue, cu numărul de caractere publicat în înregistrarea de bază la offsetul 8 ca
cchText. Cititorul de comentariu anterior sărea întregul înregistrare de bază, trata DataList[1] ca întreg textul și se oprea acolo — astfel că un comentariu mai lung de circa 4100 de caractere largi era trunchiat silențios, iar un comentariu mai scurt al cărui înregistrare Continue purta padding de coadă prelua junk la final. Cititorul consumă acumcchTextca număr de caractere autoritar, parcurge fiecare segment Continue conform MS-XLS §2.4.329 și se oprește imediat ce bugetul este satisfăcut, astfel că blocul de rundle de formatare care urmează textului nu mai sângerează niciodată în șir. Comentariile cu înregistrări de bază corupte / lipsă revin în continuare la calea legacy "toți octeții rămași"
Versiune 2.88.12
Modificat
- Șirurile în cache mai lungi de ~4100 de caractere din formulele care returnează șiruri acum supraviețuiesc ciclului de salvare prin înregistrări Continue. v2.88.11 a conectat latura de citire a înregistrării BIFF8 String ($0207) dar consuma doar primul corp de înregistrare, astfel că un șir în cache ai cărui octeți UCS-2 depășeau limita BIFF de 8224 de octeți și se revărsau în una sau mai multe înregistrări Continue ($003C) era trunchiat silențios. Handler-ul parcurge acum întreaga DataList la nivel de dispatch: citește cch și fHighByte din înregistrarea de bază, copiază corpul care se potrivește acolo, apoi concatenează fiecare segment Continue următor ca octeți bruti conform garanției de limită de caracter MS-XLS §2.5.293 — XLUnicodeString nu re-emite niciodată fHighByte mid-șir. Fiecare segment este delimitat de bugetul de caractere rămase astfel că un Continue prea mare rătăcit nu poate face rezultatul mai lung decât cch. Șirurile cu o singură înregistrare (cazul comun) urmează exact același drum rapid de mai înainte
Versiune 2.88.11
Remediat
- Formulele care returnează șiruri acum transmit textul în cache calculat de Excel. Versiunea anterioară acoperea variantele număr, boolean, eroare și gol ale cache-ului BIFF8 FormulaValue (MS-XLS §2.5.133), dar lăsa varianta șir pe lista de așteptare deoarece valoarea sa în cache locuiește într-o înregistrare String separată ($0207) care urmează imediat înregistrarea Formula. ParseFormula reține acum coordonatele celulei când vede o Formula cu variantă șir, iar noul handler ParseString decodifică înregistrarea de coadă $0207 conform MS-XLS §2.4.268 și rutează WideString în
FCachedFormulaValue.GetCellValuepoate acum să recurgă la textul calculat de Excel de câte ori evaluatorul HotXLS nu îl poate reproduce. Un reset defensiv la începutul ParseFormula elimină orice ancoră în așteptare depășită astfel că un fișier sursă malformat cu o înregistrare String lipsă nu poate redirecționa greșit una ulterioară. Înregistrările mai lungi de 8224 de octeți care se revarsă în chunk-uri Continue revin în continuare la ieșirea evaluatorului ca limitare cunoscută
Versiune 2.88.10
Adăugat
- Înregistrările BIFF8 Formula acum transmit valoarea în cache calculată de Excel. ParseFormula obișnuia să sară complet payload-ul FormulaValue de 8 octeți la offsetul 6, astfel că rezultatul în cache al fiecărei formule dintr-un .xls încărcat (numere, booleneni, erori, gol) era aruncat iar HotXLS trebuia să reevalueze fiecare celulă prin propriul motor de formule. Când acel motor nu putea corespunde cu Excel (funcții XLM nesuportate, linkuri externe întrerupte, formule pe care motorul nu le-a implementat încă) celula devenea silențios goală sau zero. Cititorul decodifică acum cele patru variante numerice / boolean / eroare / gol conform MS-XLS §2.5.133 și le stochează pe un nou câmp
TXLSCellRef.FCachedFormulaValue;GetCellValuerecurge la acel cache numai când evaluatorul eșuează, astfel că formulele nou create merg în continuare prin evaluare ca înainte. Varianta șir continuă să defere la evaluator deoarece parserul înregistrării String trailing ($0207) nu este încă conectat
Versiune 2.88.9
Remediat
- Înregistrările BIFF8 Formula cu valori nerezolvabile acum setează fAlwaysCalc în loc de bitul reserved1. Când evaluatorul HotXLS nu putea calcula o formulă la momentul salvării, scriitorul obișnuia să seteze
grbit = 0x0002— bitul 1, pe care MS-XLS §2.4.127 îl rezervă și îi spune cititorului să îl ignore. Excel îl ignora conformist, trata valoarea în cache placeholder de 0 ca autoritară și afișa silențios 0 în loc să recalculeze. Scriitorul setează acumgrbit = 0x0001(fAlwaysCalc, bitul 0), astfel că Excel reexecută formula la recalculul următor iar celula afișează rezultatul corect
Versiune 2.88.8
Remediat
- PageSetup.PrintTitleColumns / PrintTitleRows acum ridică excepție la input greșit. Setarea oricărei proprietăți cu un șir de interval malformat (orice
ColDiapasonToValues/RowDiapasonToValuesnu putea parsa) anterior abandona silențios atribuirea — registrul de lucru păstra orice interval Print_Titles era deja setat, sau niciun interval, și apelantul nu avea nicio modalitate să afle că ceva a mers greșit. Setatorii acum ridicăException.Createcu un mesaj descriptiv care numește valoarea incriminatoare, corespunzând stilului de ridicare existent pe căile de index invalidTXLSRange
Versiune 2.88.7
Adăugat
- Notă erată din runda 2 de audit spec BIFF8 adăugată. Reverificarea limitelor câmpului [MS-XLS] a clarificat că două constatări marcate P2 în raportul original (
dev-notes/XLS-BIFF8-Spec-Audit-Round2.md) nu sunt bug-uri reale: bitul 15 setat în indicatorul de istoricul BOF $000080C9 aparține câmpului verXLHigh (biții 14-17, valoarea 2 = "Excel 2002"), nu cozii reserved1 (biții 19-31); și utilizarea de ParseFormula a unui token PtgExp leading pentru a detecta formulele partajate / array corespunde cu ce implică spec-ul și dezambiguizează corect prin înregistrarea ShrFmla / Array urmând. Ambele elemente sunt acum adnotate ca retrase
Eliminat
- Câmpul miyRw al rândului acum rămâne în intervalul spec MS-XLS. Versiunile pre-BIFF8 ale Excel codificau "utilizați înălțimea implicită a rândului a registrului de lucru" prin OR-ing a bitului 15 în miyRw, iar HotXLS transporta acel idiom forward în scriitorul BIFF8 chiar dacă MS-XLS §2.4.221 limitează miyRw la 8192 twip-uri. Excel modern emite un simplu 255 (12.75 pt implicit) în același caz și folosește bitul grbit fUnsynced pentru a semnala suprascrierile manuale, astfel că hack-ul bit-15 făcea ieșirea HotXLS să diverge de la fișierele .xls autoritative (o valoare de 32 959 = 0x80FF pentru "implicit" era tehnic în afara spec-ului). Scriitorul acum elimină OR-ul și scrie 255 direct; cititorul în continuare elimină bitul 15 la intrare pentru compatibilitate retroactivă cu fișierele HotXLS v2.88.6 și mai vechi plus generatorii terți rari care au copiat idiomul BIFF5
Versiune 2.88.6
Remediat
- Foile macro și modulele VBA acum își păstrează slotul ordinal BoundSheet8. Cititorul abandona anterior înregistrările BoundSheet8 al căror câmp
dtera 1 (foaie macro) sau 6 (modul VBA), astfel că colecția HotXLS Sheets rula scurt cu acele intrări. Orice referință încrucișată XTI în ExternSheet care indica la o poziție de foaie după o foaie macro după ordinea fișierului rezolva apoi la foaia de lucru HotXLS greșită după un SaveAs. Cititorul acum adaugă o foaie placeholder pentru fiecare înregistrare BoundSheet8 și stochează octetul brutdtpe o nouă proprietateSheet.SheetTypeRaw; scriitorul emite octetul original înapoi. Înregistrările BOF ale substream-ului macro ($0040) sunt de asemenea tratate ca substream-uri de foaie de lucru în timpul parsării astfel că celulele din foile macro sunt păstrate mai degrabă decât absorbite silențios în foaia anterioară
Versiune 2.88.5
Eliminat
- Înregistrarea BIFF8 Row acum transmite fCollapsed, fExAsc, fExDes și fPhonetic. Anterior cititorul elimina fCollapsed (bitul grbit 4) — scriitorul îl inferea din tranzițiile de nivel contur pe rândurile vecine, ceea ce clasifica greșit rândurile pe care fișierul sursă le collapsase explicit sau le marcasse ca granițe. Cei trei biți înalți (fExAsc la 28, fExDes la 29, fPhonetic la 30) nu erau citiți niciodată și erau întotdeauna emiși ca zero deoarece scriitorul trunchia grbit-ul de 4 octeți la un singur slot ixfe de 16 biți. Cititorul consumă acum toți patru biți conform MS-XLS §2.4.221 și fixează fCollapsed ca explicit astfel că inferența scriitorului nu mai suprascrie valorile asertion-uite de Excel. Scriitorul împachetează ExAsc / ExDes / Phonetic în biții 12-14 ai cuvântului ixfe, mascând ixfe la intervalul de 12 biți permis de spec pentru a preveni ca un index XF să se ciocnească vreodată cu noile indicatoare. Efecte secundare ale ciclului de salvare: bordurile groase-sus / mediu-jos conduse de sugestiile ExAsc / ExDes acum supraviețuiesc HotXLS SaveAs, iar vizibilitatea informațiilor fonetice pe foile japoneze nu se mai resetează la fiecare salvare
Versiune 2.88.4
Remediat
- Bitul fPaged al BIFF8 Window2 acum marchează doar foaia activă. Versiunile anterioare setau
fPaged(MS-XLS §2.4.346 bitul 10) pe fiecare foaie vizibilă, ceea ce făcea ieșirea HotXLS să diverge de la ce scrie Excel însuși (conform spec bitul înseamnă "această foaie este afișată curent în fereastra registrului de lucru", deci doar substream-ul foii active ar trebui să îl poarte). Cititorii Excel recurgeau laWindow1.itabCurpentru a identifica foaia activă reală oricum, deci utilizarea greșită era tolerată, dar modul strict Apache POI și alte unelte care se bazează pefPagedca semnal primar văd acum foaia corectă marcată
Versiune 2.88.3
Eliminat
- Zoom-ul și culoarea gridline-ului BIFF8 Window2 acum supraviețuiesc ciclului de salvare. Versiunile anterioare eliminau câmpurile înregistrării WINDOW2 după offsetul 6 la citire și emiteau zerouri hardcodate la scriere, astfel că orice zoom al foii salvat de Excel (75 la sută, 125 la sută etc.) și personalizarea culorii gridline reveneau la implicite după un HotXLS SaveAs. Cititorul consumă acum
icvHdr,wScaleSLVșiwScaleNormalconform MS-XLS §2.4.346: zoom-ul vizualizării active alimenteazăSheet.Zoomiar valoarea vizualizării opuse aterizează într-un slot în cache astfel că comutarea între Normal și Previzualizare întrerupere de pagină în Excel restaurează zoom-ul anterior. Scriitorul emiteSheet.Zoomactiv în slotul de vizualizare corespunzător și valoarea în cache în celălalt, plus indexul culorii gridline păstrat
Versiune 2.88.2
Remediat
- Opcode-ul înregistrării BIFF8 HFPicture corectat. Fișierele .xls salvate emit acum înregistrările de imagine de fundal antet / subsol cu
rt = 0x0866corect conform MS-XLS §2.4.138. Versiunile anterioare foloseau0x086C— opcode-ul pentru CellWatch — astfel că Excel încerca să parseze BLIP-ul OfficeArt încorporat ca referință de celulă monitorizată și elimina silențios imaginea (uneori refuzând să deschidă registrul de lucru când octeții imaginii încorporate violau întâmplător structura așteptată de 16 octeți a CellWatch). Registrele de lucru care transmit o imagine antet / subsol prin HotXLS acum păstrează imaginea intactă
Versiune 2.88.1
Remediat
- Opcode-ul înregistrării BIFF8 Theme corectat. Fișierele .xls salvate emit acum înregistrarea Theme cu
frtHeader.rt = 0x0896corect conform MS-XLS §2.4.326. Versiunile anterioare foloseau0x0892— opcode-ul pentru StyleExt — astfel că Excel interpreta payload-ul temei OOXML încorporate ca extensie de stil celulă și revenea silențios la tema Office încorporată, pierzând orice culori de temă personalizate la transmiterea unui registru de lucru prin HotXLS
Versiune 2.88.0
Adăugat
- Pachetele .xlsx salvate includ acum o parte
xl/theme/theme1.xml. styles.xml a emis întotdeauna referințe<color theme="N"/>pentru orice culoare de font / fill / bordură / tab setată prin calea de index de temă (și pentru culorile de temă transportate dintr-un .xlsx de intrare parsat), dar nicio parte de temă nu era scrisă, astfel că referințele atârnau. Excel tolera omisiunea recurgând silențios la tema sa "Office" încorporată, dar Validarea fișierului Office marca fiecare referință ca "parte temă lipsă" iar modul strict Apache POI respingea registrul de lucru la prima căutare.SaveAsacum emite tema canonică Office (2007+): schemă de culori cu 12 sloturi (sistemwindowText/window, patru culori implicite Excel, șase accente, două culori hyperlink), schemă de fonturi Calibri Light / Calibri, schemă de format minimă validă (câte trei intrări fill / line / effect / background-fill fiecare perCT_StyleMatrix).[Content_Types].xmlcâștigă unOverridecorespunzător;xl/_rels/workbook.xml.relscâștigă o relațietheme/theme1.xmlcare aterizează la coada intervalului rid, astfel că offseturile existenteXlsxFirstExternalLinkRidpentru foi / sst / styles / vba / externalLinks rămân neschimbate - Atribuirea directă
Sheet.Name := '...'acum sanitizează și deduplică de asemenea. Runda 3 (v2.54.1) a adăugat aplicarea regulilor de denumire Excel înTXLSXSheets.Add(AName), dar setatorului de proprietateTXLSXWorksheet.Nameîi lipsea unwrite FNamebrut, astfel că cea mai obișnuită cale de mutație pe care runda nu o acoperea —lxXlsxExport.pas:122 Target.Name := Source.Nameîn ciclul de salvare XLS → XLSX — lăsa să treacă orice nume purtat întâmplător de sursa BIFF8 (caractere interzise: \ / ? * [ ], lungime > 31, ghilimele simple înconjurătoare,Historyrezervat, duplicate case-insensitive ale unei foi existente). Setatorii de proprietate acum rutează prin o nouă metodăSetNamecare redă aceeași logicăXlsxSanitizeSheetName+ dedup sufix' (N)'(case-insensitive, exclude-self) față de colecția de foi a registrului de lucru părinte. Foile de lucru detașate (niciun back-pointerFWorkbookîncă) sar pasul dedup și doar sanitizează —TXLSXSheets.Addva aplica unicitatea când foaia se atașează. Idempotent pe nume deja valide astfel căFSheets.Add(names[i])la cititor rămâne un ciclu de salvare pur
Remediat
- Auditul încrucișat [MS-XLSX] runda 4 — parte temă + setter nume foaie. Două remedieri de follow-up vizând probleme rămase după rundele 1–3 (v2.51.0 / v2.52.0 / v2.54.1). Niciuna nu rupe un call site existent; una extinde comportamentul la un setter, cealaltă adaugă o nouă parte mereu emisă
Versiune 2.87.4
Modificat
- Formulele partajate XLS acum scriu un corp
ShrFmlavalid. Ieșirea de formulă partajată BIFF8 include acum octetulcUsenecesar înaintea formulei parsate partajate, astfel că registrele de lucru salvate cuUseSharedFormulasnu mai deplasează fluxul de token formulă cu un octet - Stilul de tabel XLS și metadatele de filtru acum corespund cu cel mai recent layout MS-XLS.
AddTableacum scrieLIST12caList12TableStyleClientInfo, setează indicatorii AutoFilter de tabel și câmp înFeature11, și emite blocurile goale per coloanăFeat11FdaAutoFilterpe care Excel le așteaptă - Regulile BIFF8 CF12 Data Bar / Color Scale / Icon Set acum omit payload-urile DXF interzise. HotXLS urmează regula MS-XLS că aceste tipuri CF12 trebuie să poarte un bloc DXF gol, păstrând în același timp setările lor reale de regulă în coada specifică tipului CF12
Versiune 2.87.3
Eliminat
- Metadatele tabelului de foaie de lucru XLS acum urmează layout-ul tabelului
Feature11MS-XLS. IeșireaAddTablepentru fișierele .xls acum scrie un antet de tabelFeatHdr11plus payload-uriFeature11TableFeatureType/Feat11FieldDataItem, elimină marcatorul de tabel legacy$0867 FeatHdr, și stochează numele de tabel și coloană ca valoriXLUnicodeString
Remediat
- Citirea înapoi a tabelului XLS acum înțelege layout-ul de câmp corect conform spec. HotXLS parsează numele tabelelor
TableFeatureType, intervalele, starea rândului de totaluri și captionele câmpului, păstrând un fallback pentru înregistrările de tabel mai vechi generate de HotXLS
Versiune 2.87.2
Remediat
- Înregistrările de continuare XLS BIFF8 acum poartă lungimi de bază corecte. Înregistrările XLS supradimensionate împărțite de scriitor acum actualizează lungimea primei înregistrări la 8224 de octeți în loc să lase lungimea originală supradimensionată în antetul BIFF
- Tabelele mari de foaie de lucru XLS acum folosesc chunk-uri
ContinueFrt11corecte conform spec. IeșirileAddTablelargi cu payload-uriFeature11mari acum salvează cu înregistrări de continuare$0875 ContinueFrt11și se redeschid cu metadatele tabelului păstrate, corespunzând layout-ului [MS-XLS]Feature11/ContinueFrt11
Versiune 2.87.1
Modificat
- Limita grilei foii de lucru XLSX include acum ultimul rând și coloană Excel.
TXLSXRange,RCRange,EntireRowșiEntireColumnpermit acum rândul 1048576 și coloana 16384 (XFD), corespunzând limitelor numărului de rând și coloană [MS-XLSX]. Anterior clampul intern folosea maxime bazate pe zero, astfel căXFD1048576și intervalele care atingeau ultimul rând sau ultima coloană erau tăiate silențios la rândul/coloana anterioară
Remediat
- Documentele și testele de criptare XLSX acum corespund căii de scriere implementate. Paginile de ajutor și suita de regresie acum stipulează că
SaveAsEncryptedscrie ieșire ECMA-376 Standard Encryption pentru parolele non-goale, în timp ceOpenEncryptedcontinuă să ridice excepție pentru pachetele criptate și recurge la fallback pentru fișierele .xlsx plain
Versiune 2.87.0
Remediat
- Salvarea XLSX protejată cu parolă acum funcționează (val J faza 2, backlog #29).
TXLSXWorkbook.SaveAsEncrypted(FileName, Password)acum scrie un fișier .xlsx real protejat cu ECMA-376 Standard Encryption (format Office 2007+). Întreaga conductă [MS-OFFCRYPTO] §2.3.4 este în loc: derivarea parolei SHA-1 cu 50000 de iterații din faza 1 + blocurile verifier AES-128 + criptarea corpului pachetului AES-CBC + serializatorul binarEncryptionInfose alătură acum celor patru fluxuri de metadate\005DataSpacesdin faza 2 (Version / DataSpaceMap / DataSpaceInfo / TransformInfo) și scriitorului OLE Compound File Binary care pune totul într-un container CFB pe care Excel îl deschide cu parola utilizatorului. Flux de lucru: apelantul invocăSaveAsEncryptedcu o parolă non-goală → HotXLS serializează registrul de lucru într-un zip .xlsx plaintext în memorie → criptează prin AES-128 CBC cu un salt aleator proaspăt de 16 octeți și verifier → scrie ieșirea CFB prinStgCreateDocfile. Deschideți în Excel 2007+: introduceți parola → conținut se deschide. Parolă greșită: respinsă.OpenEncrypted(latura de decriptare) este în continuare un element separat de backlog și continuă să ridiceEXlsxEncryptionNotImplementedcând primește un fișier criptat
Versiune 2.86.1
Adăugat
- XLSX Standard Encryption — fundație criptografică (val J faza 1, backlog #29). Două noi unități interne aduc jumătatea de cifrare și derivare de cheie a căii de scriere ECMA-376 Standard Encryption.
lxAES.pasîmpachetează AES-ul lui Brian Gladman (legat dinthirdparty/Win32/aes*.obj+thirdparty/Win64/aes*.obj) și expune puncte de intrare pentru criptarea AES-128 ECB single-block și AES-128 CBC.lxXlsxStdEncrypt.pasimplementează SHA-1 pur Pascal (FIPS-180-4), derivarea parolei cu 50000 de iterații [MS-OFFCRYPTO] §2.3.4.10, blocurile verifier §2.3.4.7 (EncryptedVerifier+EncryptedVerifierHash), criptarea AES-CBC a corpului pachetului (prefix de dimensiune LE de 8 octeți + zero-pad la granița de 16 octeți + IV-of-zeros) și serializatorul binarEncryptionInfo§2.3.4.6.TXLSXWorkbook.SaveAsEncryptedcontinuă să ridiceEXlsxEncryptionNotImplemented— val J faza 2 va adăuga scriitorul OLE Compound File Binary (fluxuri container\005DataSpaces) și va conecta conducta laSaveAsEncrypted. Până atunci noile unități sunt schele interne de bibliotecă de care apelantii nu ar trebui să depindă
Versiune 2.86.0
Eliminat
- Ciclul de salvare QueryTable și conexiune externă de date (val I, backlog #28). QueryTable-urile create de Excel și conexiunile de date externe (Date → Obțineți date externe din Web / SQL / OLEDB) supraviețuiesc acum unui ciclu de salvare/deschidere HotXLS. Anterior cititorul BIFF8 sărea silențios
QsiSXTag($0802),QsiSXTagExt($0810) șiDConn($0876), astfel că metadatele care descriu interogarea upstream erau eliminate la salvare iar tabelul degrada la valori de celulă plain. Cititorul acum capturează aceste înregistrări ca octeți opaci iar scriitorul le emite înapoi în substream-ul foii de lucru (alături de blocul PIVOTVIEW conform [MS-XLS] §2.1.7.20.5) și globalele registrului de lucru (alături de blocul globals tardiv înainte de EOF conform §2.1.7.20.3). HotXLS nu modelează în continuare structura tipizată QSI / DConn programatic — crearea de noi QueryTable-uri din codul apelantului este amânată la un val ulterior — dar registrele de lucru care le conțin deja nu mai pierd metadatele de reîmprospătare. Numai BIFF8 (.xls); BIFF5 neafectat
Versiune 2.85.1
Modificat
- Restaurare build de bibliotecă Win32 / Win64. Două variabile helper emitator SXLI multi-câmp-date din val H5.3 erau declarate ca tipuri anonime separate
array of array of Word, pe care compilatorul Delphi le tratează ca tipuri anonime distincte și le respinge la atribuire directă cuE2008 Incompatible types. Biblioteca HotXLS nu a mai putut fi buildată de la v2.84.1 pe RAD Studio 12.0 până la 37.0. Cele două variabile sunt acum declarate împreună pentru a partaja un singur tip anonim, remediind atribuirea și restaurând ieșirea .dcu / .bpl pentru ambele ținte Win32 și Win64. Nicio schimbare de comportament runtime — octeții SXLI emiși sunt identici cu v2.85.0
Versiune 2.85.0
Modificat
- API tipizat subtotal pivot (val H5.4).
TXLSPivotFieldtipizat expune acum o proprietate setSubtotals: TXLSPivotSubtotalsalături deSubtotalMask: Wordraw existent. Apelantii pot atribui de ex.Field.Subtotals := [xlpsSum, xlpsAverage];în loc să bit-packeze manual câmpul SXVDgrbitSub. Douăsprezece tipuri de subtotal sunt expuse (xlpsDefault, xlpsSum, xlpsCount/CountA, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNums, xlpsStdDev, xlpsStdDevP, xlpsVar, xlpsVarP), fiecare mapat la un singur bit conform [MS-XLS] §2.4.279.SubtotalMaskraw rămâne sursa de adevăr a ciclului de salvare — biții rezervați 12-15 sunt păstrați la citire/scriere. Închide limita cunoscută din val H4.3 „configurația SXVD.grbitSub subtotal câmp rând indisponibilă din API" și finalizează follow-up-urile pivot val H5
Versiune 2.84.1
Adăugat
- Expansiune SXLI multi-câmp-date (val H5.3). Când un tabel pivot are mai mult de un câmp de date ȘI axa câmpului de date corespunde unei axe SXLI date (
DataFieldAxisIsRow = True&& axa rând, sauDataFieldAxisIsRow = False&& axa coloană), scriitorul acum replică fiecare combinație produs-cartezian deDataFieldCountori cuiData = 0 .. DataFieldCount - 1, plus linii de total generalDataFieldCountastfel că fiecare câmp de date obține propriul total. Axa fără hosting rămâne neschimbată. Excel și alți cititori acum redau pivot-urile multi-câmp-date în layout-ul pe care apelantul l-a intenționat în loc să recurgă la aproximarea anterioară „iData = 0unic per combinație". Pivot-urile cu câmp de date unic emit ieșire identică la nivel de bit cu v2.84.0. Compresia delta (H5.1) pliază combinațiile repetate la ~8 octeți pe replică, astfel că expansiunea adaugă overhead minim de octeți. Închide limita cunoscută din val H4.3 „SXLI multi-câmp-date nu este corect expandat"
Versiune 2.84.0
Modificat
- API pre-selecție axă pagină pivot (val H5.2).
TXLSPivotFieldtipizat poartă acum o proprietatePageItemIndexpe care pivot-urile construite programatic o pot seta pentru a pre-selecta un element de cache specific pe filtrul de axă pagină. ImplicitxlPageItemAll(= $7FFD) lasă filtrul la „(Toate)" astfel că apelantii care nu atribuie niciodatăPageItemIndexse comportă identic la nivel de bit cu v2.83.2. Scriitorul SXPI ($00B6) citeșteField.PageItemIndexîn loc să hardcodeze $7FFD, iar cititorul tipizat acum populeazăPageItemIndexdin SXPI la Open astfel că apelantii pot inspecta selecția de pagină salvată. Închide limita cunoscută din val H4.3 „pre-selecția callerului filtrului de pagină indisponibilă din API"
Versiune 2.83.2
Modificat
- Înregistrări SXLI pivot mai mici prin compresie delta (val H5.1). Scriitorul pivot acum delta-comprimă elementele de linie SXLI folosind câmpul cSic al spec-ului — indicii de element de cache de leading ale fiecărei linii care corespund liniei anterioare din același înregistrare SXLI sunt pliate într-un număr de prefix partajat, și doar indicii de coadă sunt emiși. Înregistrările SXLI tipice de axă rând (câteva câmpuri rând × zeci de elemente) se micșorează cu 30–60% fără nicio schimbare de semantică. Ieșirea este în continuare fragmentată pentru a rămâne sub limita BIFF de 8224 de octeți. Prima linie a fiecărei înregistrări SXLI emite întotdeauna cSic = 0 (local la înregistrare, fără referință înapoi cross-înregistrare), iar linia de total general nu este niciodată delta-comprimată
Versiune 2.83.1
Remediat
- Culorile de fill, font și bordură ale celulei setate prin RGB acum supraviețuiesc ciclului de salvare/deschidere .xls. Scriitorul BIFF8 XFExt ($087D) emitea câmpul ixfe al fiecărei înregistrări folosind poziția din matricea XF în memorie, dar înregistrările de celulă corespunzătoare de pe disc scriu ixfe folosind ordinea SaveIndex post-pruning. Ori de câte ori vreun XF mai devreme în tabel era prunat în timpul salvării (tipic când o celulă migrează de la un XF tranzitoriu la un XF final), fiecare ixfe al XFExt ajungea deplasat cu numărul de sloturi prunatate, iar culoarea bogată asociată cu fiecare celulă se deplasa la o celulă vecină la reîncărcare. Scriitorul acum rezolvă SaveIndex pentru fiecare XF cu slot bogat și emite ixfe-ul corespunzător de pe disc, astfel că culorile de celulă RGB salvate de HotXLS — fill interior, culoare font, culori bordură — supraviețuiesc curat unui ciclu de salvare/reîncărcare. Înregistrările XFExt pentru XF-uri care au fost prunatate complet sunt acum sărite în loc să fie emise cu un ixfe agățat
Versiune 2.83.0
Modificat
- Elemente de linie pivot + stare element de pagină (val H4.3). Tabelele pivot construite programatic acum emit SXLI ([MS-XLS] §2.4.275, $00B5) pentru ambele axe rând și coloană, plus SXPI ($00B6) pentru axa pagină. Aceasta oferă vizualizării pivot fidelitate de layout: cititorii non-Excel văd ordinea exactă de afișare pe care scriitorul a intenționat-o, pivot-urile mari se deschid mai repede (Excel nu trebuie să recalculeze layout-ul liniei de la zero), iar filtrele de pagină persistă cu o selecție implicită "(Toate)" per câmp de pagină
- Enumerare SXLI rând + coloană. Scriitorul enumeră produsul cartezian al elementelor de cache ale câmpurilor axei (câmpul interior variază cel mai repede, corespunzând layout-ului de rând imbricat al Excel) și emite câte o linie per combinație plus o linie de total general terminal marcată cu bitul SXLI nTypes fGrandTotal. Fiecare linie folosește cSic = 0 (fără compresie delta — mai simplu cu costul câtorva octeți în plus per linie). Ieșirea este fragmentată în multiple înregistrări SXLI când numărul de linii depășește limita BIFF de 8224 de octeți; o limită de siguranță de 16384 de linii previne expansiunea necontrolată pe inputuri patologice
- Stare axă pagină SXPI. Emisă doar când cel puțin un câmp are Axis = xlpfaPageField. Fiecare intrare are 10 octeți (isxvd + iCache + ipos + objId) cu iCache = $7FFD semnalând "(Toate)" — suprafața API pentru pre-selectarea elementelor de pagină specifice este amânată la val H5. Pivot-urile fără câmpuri de pagină nu emit SXPI (ABNF-ul foii de lucru îl listează ca opțional)
- Închide limita cunoscută din val H3 „SXLI / SXPI neemise". Combinat cu H4.1 (formate număr DataField) și H4.2 (stream per-înregistrare SXDBB), val H4 închide toate trei limitele cunoscute din scriitorul de tabel pivot H3. Tabelele pivot construite prin
IXLSWorksheet.AddPivotTableacum livrează cache-uri auto-conținute cu metadate complete de layout