Hesaplama ve dönüşüm sadakati
Hesaplanan diziler; seçim, sıralama, arama, matris ve yeniden şekillendirme işlevleri boyunca birleşir; otomatik XLSX taşma sahipliği, açık CSE hedefleri ve sınırlı değerlendirme kaynaklarıyla
Dinamik diziler ve açık CSE dizileri
Dizi üreten bir ifadeyi tek bir TXLSXCell.Formula'ya atayın ve TXLSXWorkbook.Recalculate çağırın; sonuç o hücreye çapalanmış dikdörtgen bir taşmanın sahibi olur; SEQUENCE(3,2), A1:A3*10, dizi sabitleri ve dizi değerli LET sonuçları gibi formüller dahildir
Sheet.Cells.Item[1, 1].Formula := 'SEQUENCE(3,2)'; Sheet.Cells.Item[1, 4].Formula := 'SUM(A1#)'; Workbook.Recalculate;
Yeniden hesaplama sonucu büyütür ya da küçültür, yalnızca çapanın sahibi olduğu eskimiş takipçileri temizler ve kapsam değiştiğinde bağımlılıkları yeniden kurar; yeni oluşturulan takipçilere atıflar ve A1# taşma işleci güncel kapsamı kullanır
Mevcut değerler, formüller, zengin metin, diğer diziler, birleştirilmiş aralıklar, tablolar ve çalışma sayfası sınırları taşmayı engeller ve #SPILL! üretir; başka türlü boş hücrelerdeki stiller kullanılabilir kalır ve bir engellemenin kaldırılması, sonraki yeniden hesaplamanın çapayı yeniden denemesine izin verir
Bir takipçiyi değer ya da zengin metinle düzenlemek o hücreyi çapadan ayırır; böylece sonraki hesaplama düzenlemeyi bir engelleme olarak korur; çapayı kaldırmak ya da temizlemek sahipli takipçilerini serbest bırakır, ConvertFormulasToValues ise hesaplanan değerlerini sıradan hücreler olarak tutar
XLSX kaydetme güncel dizi kapsamını ve üst verisini kaydeder; yükleme, yeniden hesaplamadan önce önbelleğe alınmış mevcut takipçilerin sahipliğini geri yükler; hata içeren dizi formülleri, hatalar tek tek öğelere ait olduğunda kapsamlarını korur
SetArrayFormula her iki çalışma kitabı motorunda açık sabit aralıklı CSE giriş noktası olarak kalır; ham aralık aritmetiği o aralık içinde öğe öğe değerlendirilir, sıradan skaler formüller ise örtük kesişimi korur
Tekli @ işleci bir başvuruyu formül hücresiyle kesiştirir ve hesaplanan bir dizinin ilk öğesini alır; SINGLE ve ANCHORARRAY, örtük kesişim ve taşma atıfları için kabul edilen depolama takma adlarıdır
MAP birden çok girdi dizisini ve eşleşen bir LAMBDA parametre listesini kabul eder, öğe hatalarını iletir ve iç içe dizi sonuçlarını #CALC! ile reddeder; FILTER hesaplanmış dizileri ve satır ya da sütun maskelerini kabul eder; hata iletimi ve yedek sağlanmadığında boş sonuç için #CALC! dahildir
Dinamik taşma değişikliği, birden çok hesaplama iş parçacığı yapılandırılmış olsa bile sıralı yürür; kapsam kararlılığı 32 geçişle sınırlıdır ve döngüsel yinelemeli hesaplamalardaki dinamik diziler skaler sonuç sayılmak yerine reddedilir
INDEX başvuruları, dizi sabitlerini ve hesaplanan dizileri kabul eder; her iki seçici de skalerken pozitif satır ve sütun seçicileri tek bir değer döndürür, sıfır bir seçici seçilen satırı ya da sütunu döndürür, iki sıfır seçici ise dizinin tamamını döndürür; skaler seçicili bir başvuru kaynağı, ROW ve ISREF gibi tüketiciler için başvuru davranışını korur
Satır ve sütun seçicileri dizi de olabilir; sabitler, hesaplanmış vektörler, aralık değerleri ve LET bağlamaları dahil; karşıt satır ve sütun yönleri dikdörtgen bir kartezyen çarpıma yayılır, eşleşen yönler ise eşleştirilmiş konumları seçer; tekil boyutlar yayılır ve eşit olmayan boyutlarda eksik konumlar tek tek #N/A değerleri döndürür
Herhangi bir seçici bir dizi olduğunda sıfır ya da atlanmış bir seçici, tüm satır ya da sütunu genişletmek yerine o eksende ilk üyeyi seçer; kesirli seçiciler sıfıra doğru kırpılır, negatif seçiciler kırpmadan önce tek tek #VALUE! döndürür, kaynak sınırlarının ötesindeki seçiciler ise tek tek #REF! döndürür; seçilen dizeler, Boolean değerler ve türlü hatalar türlerini korur
SORT ve UNIQUE; iç içe FILTER, SEQUENCE ve LET sonuçları dahil aralıkları, sabitleri ve hesaplanan dizileri kabul eder; satır ve sütun yönü, artan ya da azalan sıralama, ilk geçiş sırası ve tam bir kez yinelenenleri ayıklama her kaynak biçimi için aynı sözleşmeyi izler
Çalışma kitabı tanımlı adları başvuru, skaler ya da hesaplanan dizi kaynakları sağlayabilir; ISREF(INDEX(...)) gerçek bir başvuru sonucunu adlandırılmış hesaplanmış bir değerden ayırır; skaler INDEX seçicileri ve SORT sayısal seçenekleri kesirli değerleri kırpır, isteğe bağlı Boolean bağımsız değişkenler TRUE ya da FALSE dışındaki metinleri reddeder
Sheet.Cells.Item[1, 6].Formula := 'SORT(UNIQUE(FILTER(A1:B5,A1:A5>1)),1,-1)'; Sheet.Cells.Item[1, 9].Formula := 'INDEX(SORT(UNIQUE(A1:B5)),0,2)'; Sheet.Cells.Item[1, 12].Formula := 'INDEX(SEQUENCE(2,3,10,2),2,3)'; Workbook.Recalculate;
Sheet.Cells.Item[1, 1].Formula := 'INDEX(SEQUENCE(3,3),{1;3},{1,3})';
Workbook.Recalculate;
Bu seçici örneği ikişerlik bir sonuç içine {1,3;7,9} taşar; INDEX(SEQUENCE(3,3),{1;3},{1;3}) ise eşleştirilmiş {1;9} sütununu döndürür; dizi seçiciler kaynak bir başvuru bile olsa değer üretir, skaler başvuru seçicileri ise başvuru kimliğini korur
Bu ifadeler XLSX'te taşabilir ve yeniden boyutlanabilir ya da açık bir CSE hedefi içinde değerlendirilebilir; dizi kaynaklı hatalar türlü olarak kalır ve boş bir tek-geçiş sonucu #CALC! döndürür; seçici çıktıları değerlendirme adımı bütçesini harcar, birleşik kaynak, seçici ve sonuç matris yükleri ise dizi belleği bütçesine karşı denetlenir
INDEX, hesaplanan bir kaynak için 1 değerinde açık bir dördüncü area_num bağımsız değişkeni kabul eder ve satır, sütun ile alan seçicileri desteklenen aynı sayfalı bir başvuru birleşimi üzerinde birlikte yayılabilir; gerçek çok alanlı başvurular kimliklerini yerel tanımlı adlar ve LET üzerinden korur, skaler CHOOSE ise başka sayfadaki bir seçim dahil seçilen başvuruyu korur; seçici dizisi sonuçları iç içe başvuru dizileri değil değerlerdir; sıfır, eksik, zorlama ve hata kuralları için INDEX alan seçimi ve başvuru kimliği sayfasına bakın
Bağımsız hesaplama için TXLSCalculator.OnGetSpillRange, bir çapanın güncel kapsayıcı sınırlarını çözümleyen TXLSGetSpillRange geri çağırısını kabul eder; çalışma kitabı destekli değerlendiriciler bu geri çağırışı otomatik kurar
TXLSGetSpillRange = function(SheetIndex, AnchorRow, AnchorCol: Integer; var LastRow, LastCol: Integer): Integer of object;
lxNormalizeStorageFormula girilmiş formül söz dizimini OOXML için normalleştirir, lxTryStorageFormulaOperators taşma ve örtük kesişim işleçlerini çevirir, lxApplyXlfnPrefix gereken gelecek işlev öneklerini uygular; korunan metin ve dizi satırı ayırıcıları eksiksiz kalır ve formül atamak çağıranın metnini bellekte korur
Kaydetme, bellekteki girilmiş ifadeyi değiştirmez; yeni girilmiş XLSX formüllerini yeniden açmak, yerel Excel içe aktarımlarıyla tutarlı olarak virgüllü bağımsız değişkenli ve başında = olmayan kurallı depolama söz dizimini döndürür; değişmemiş alınmış formül XML'i mevcut koruma yolunu izler
Arama, matris ve yeniden şekillendirme birleşimleri
TRANSPOSE; metni, Boolean değerleri ve tek tek hataları koruyarak başvuruları, sabitleri ve hesaplanan dizileri kabul eder; boş kaynak hücreler sayısal sıfıra döner
MMULT, MDETERM ve MINVERSE; MMULT(MUNIT(2),SEQUENCE(2,2)) gibi hesaplanmış matrisleri ve iç içe ifadeleri kabul eder; matris girdileri sayısal olmalıdır; metin, Boolean değerler ve boşlar zorlanmak yerine reddedilir, kaynak hataları ise hata kodlarını korur
CHOOSECOLS ve CHOOSEROWS; skaler ya da tek boyutlu seçici vektörlerini kabul eder, seçicileri bağımsız değişken sırasına göre birleştirir, yinelenenleri korur ve negatif indeksleri sondan sayar; kesirli seçiciler sıfıra doğru kırpılır, sıfır ve aralık dışı seçiciler reddedilir, iki boyutlu seçici matrisleri desteklenmez
XLOOKUP, XMATCH ve MATCH; hesaplanmış arama vektörlerini ve dizi değerli arama isteklerini kabul eder; anahtarlar tek bir satır ya da sütunu kaplamalıdır ve XLOOKUP dönüş dizileri o arama ekseniyle hizalanmalıdır
Skaler bir XLOOKUP; türlü hatalar dahil eşleşen bir satırın ya da sütunun tamamını döndürebilir; dizi değerli bir arama isteği kendi şeklini korur ve her eşleşen dilimden ya da yedek diziden ilk bileşeni alır
Tam eşleşmeli arama taramaları anahtar vektöründeki hata girdilerini atlar; Boolean, sayısal ve metin anahtarları ayrı kalır; sıradan skaler başvuru yolları mevcut akış ve yeniden hesaplama önbelleği davranışlarını korur; ikili arama modları yine doğru sıralanmış anahtarlar ister
VSTACK, HSTACK, TAKE, DROP, TOROW, TOCOL, WRAPROWS, WRAPCOLS ve EXPAND; hesaplanmış girdileri ve türlü dolguyu kabul eder; satırsız ya da sütunsuz bir sonuç #CALC! döndürür ve sarma tek boyutlu bir girdi ister
Matris işleri, arama taramaları, seçici gezinmesi, kopyalama ve doldurma değerlendirme adımı bütçesini harcar; eşzamanlı tutulan girdi, çalışma ve çıktı matris yükleri ayırmadan önce yapılandırılmış dizi bellek sınırına karşı denetlenir
Sheet.Cells.Item[1, 1].Formula := 'XLOOKUP({1;3},SEQUENCE(3),SEQUENCE(3,2))';
Sheet.Cells.Item[1, 4].Formula := 'CHOOSECOLS(SEQUENCE(2,3),{-1;1})';
Sheet.Cells.Item[1, 7].Formula := 'TRANSPOSE(UNIQUE({"A";"B";"A"}))';
Workbook.Recalculate;
Türlü modern hesaplama hataları
#SPILL! ve #CALC!; hesaplama, görüntüleme, önbellek incelemesi ve XLSX yeniden açma boyunca türlü hücre hataları olarak kalır; XLSX çıktısı, o uzantıyı anlamayan okuyucular için standart önbellek hata yedeğini korurken zengin değer üst verisini taşır
CSE ve dinamik dizi takipçileri dahil formül metni sonuçları, Excel'in yeniden hesaplamadan önce görüntüleyebilmesi için literal dize önbelleklerini kullanır; düz değer hücreleri paylaşılan dizeleri kullanmaya devam eder
Modern zengin hata çıktısı; Excel'in yeniden hesaplamadan önce o önbellekleri yorumlaması için gereken çalışma kitabı sürümünü ve Rich Data hesaplama özelliği bildirimlerini içerir; yayılan calcId en az 191029'dur ve çalışma kitabının bellek içi CalcId özelliğini değiştirmeden daha yüksek istenen değerleri korur
Alınmış hücre ve değer üst verisi, ilgisiz zengin değer yapıları ve opak kovalar, yeni hata kovaları eklenirken özgün kimliklerini korur; bir hata hücresini değiştirmek, kaydederken eskimiş türlü hata üst verisini temizler
TXLSXRichErrorCodes, çözülen zengin hata kovaları için kullanılan tamsayı dizi türüdür; uygulama kodu türlü hataları hücrenin Variant değerinden okur
BIFF8 bu modern hataları ya da taşma işleçlerini sadakatle gösteremez; Classic serileştiricisi ilgisiz bir eski hata kodu atamak yerine desteklenmeyen modern gösterimleri reddeder
Dönüşüm ön denetimi
TXLSXWorkbook.GetConversionReport, yeniden hesaplamadan ya da çalışma kitabını değiştirmeden çağıranın sahipliğinde bir TXLSConversionReport döndürür; türler lxDiagnostics içinde bildirilir
Report := Workbook.GetConversionReport(xlsConversionOpenDocument);
try
for I := 0 to Report.Count - 1 do
InspectIssue(Report.Items[I]);
finally
Report.Free;
end;
| Target | xlsConversionOpenXmlWorkbook, xlsConversionOpenXmlTemplate, xlsConversionMacroEnabledTemplate, xlsConversionOpenDocument, xlsConversionExcel97Workbook, veya xlsConversionExcelBinaryWorkbook |
| Fidelity | TXLSConversionFidelity: xlsConversionPreserved, xlsConversionDegraded, xlsConversionDropped, veya xlsConversionUnsupported |
| Issue | TXLSConversionIssue; Feature, Fidelity, SheetIndex, SheetName, Location ve Message alanlarını açığa çıkarır; HasLoss düşürülmüş, atlanmış ve desteklenmeyen girdileri kapsar |
Raporda VBA, koruma, çalışma kitabı görünümleri, bağlantılar, sorgu tabloları, yorumlar, dış bağlantılar, XML eşlemeleri, tablo yapısı, filtre ölçütleri, çizimler, türlü hata önbellekleri, desteklenmeyen doğrulama ya da formül söz dizimi, dizi sahipliği ve opak uzantı parçaları gibi bilinen biçim kayıpları stoklanır; uygulanan dönüşüm yollarını tanımlar ve her dış uygulamadaki her özelliği onaylamaz
ODS; sıradan tablo hücrelerini, önbelleğe alınmış formül sonuçlarını, desteklenen açıklama metinlerini ve yazarlarını, parolasız çalışma sayfası korumasını ve gösterilebilir filtreleri korurken Excel tablo nesnesini, daha zengin grafik geometrisini ya da desteklenmeyen kural semantiğini kaybeder; opak bir OOXML koruma yükü, hedef onu taşıyamadığında atlanmış olarak bildirilir
XLSX cephesi, BIFF8 çıktısını desteklenmeyen olarak bildirir; desteklenen BIFF iş akışları için Classic çalışma kitabı API'sini kullanın; sürüm 2.384.93, denetimli ve denetimsiz kaydetmelerde de gösterilemeyen formülleri, özellik nesnelerini, üst veriyi ve hesaplama ayarlarını reddeden sınırlı bir XLSB değer-ve-stil arka ucu ekler
Denetimli kaydetme
Status := Workbook.SaveAsChecked(Stream, xlsxOpenDocumentSpreadsheet, False);
Dosya ve akış aşırı yüklemeleri yazmadan önce bilinen kayıp ön denetimini yürütür; AllowLossy=False düşürülmüş ya da atlanmış özellikleri dönüşüm tanılamalarıyla reddeder, AllowLossy=True ise bu kayıpları açıkça kabul eder ve yine de desteklenmeyen dönüşümleri reddeder
Reddedilen bir ön denetim hedef baytlarını ve akış konumunu değişmeden bırakır; başarılı istekler mevcut kaydetme işlemini kullanır ve SaveAs ile aynı kaydetme durum kurallarını döndürür
Sıradan SaveAs mevcut davranışıyla kullanılmaya devam eder; açık bir kayıp kararı gerektiren uygulamalar raporu incelemeli ve denetimli kaydetmeyi kullanmalıdır
Şablon biçimleri
xlsxOpenXMLTemplate makrosuz XLTX'i seçer, xlsxOpenXMLMacroEnabledTemplate ise XLTM'i seçer ve mevcut bir VBA projesini korur; biçim açıktır ve dosya uzantısından ya da alınmış şablondan çıkarılmaz
Makrosuz XLTX, kayıplı denetimli kaydetme etkin olsa bile VBA taşıyan bir çalışma kitabını reddeder; bir XLTM paketi VBA projesi olmadan da yazılabilir ve HotXLS VBA kodu oluşturmaz
ODS doğrulama formülleri
Özel Boolean doğrulaması of:is-true-formula(...) kullanır; desteklenen skaler sınırlar, liste kaynakları, nitelemeli A1 başvuruları, dizeler ve bağımsız değişken ayırıcıları OpenFormula'ya çevrilir ve içe aktarımda doğrulama taban hücre adresine göre yeniden konumlandırılır
Desteklenmeyen yapılandırılmış, dış ya da üç boyutlu doğrulama ifadeleri, sarkan doğrulama tanımlarını önlemek için hücre atıflarıyla birlikte atlanır; dönüşüm ön denetimi atlanan kuralları bildirir
ODS açıklamaları, koruması ve filtreleri
Sıradan hücre yorumları; metni ve yazarıyla, boş notlar, sekmeler, boşluklar ve satır sonları dahil OpenDocument açıklamaları olarak dışa aktarılır; başka türlü olmayan hücrelerdeki ve uzak koordinatlardaki notlar, çalışma sayfası hücreleri oluşturmadan seyrek yinelenen satır ve sütun dizileri kullanır
Birleştirilmiş bir aralığın çapa hücresindeki yorum adresini korur; kapalı bir hücredeki ya da çalışma sayfası ızgarasının dışındaki not atlanmış olarak bildirilir; zengin yorum metni görüntülenen metnine düzleştirilir ve dönüşüm raporları çalışma stili, özel kutu boyutları ve her zaman görünür sunum kaybını tanımlar
OpenDocument korumalı bayrağı ve desteklenen kilitli ya da kilitsiz hücre stilleri korunur; kayıpsız çalışma sayfası alt kümesi parola ya da düzenlenebilir aralık istisnası kullanmaz ve yalnızca kilitli ve kilitsiz hücrelerin seçilmesine izin verir
Sheet.Protect; Sheet.SheetProtectionOptions := [xlsxSpoSelectLockedCells, xlsxSpoSelectUnlockedCells]; Sheet.Range['B2:B100'].Locked := False;
Excel parola karmaları, modern parola ayarları, düzenlenebilir aralıklar ve o alt kümenin dışındaki eylem izinleri, korumalı bayrak dururken düşürülmüş olarak bildirilir; geniş varsayılan Excel izin kümesi de açık bir kayıp kararı gerektirir
OpenDocument içe aktarması korumalı bayrağı ve hücre kilidi stillerini korur; yerel parola karmaları Excel karmalarına dönüştürülmez ve gösterilemeyen alınmış izin üst verisi sonraki dönüşüm raporlarında adlandırılmış bir kayıp olarak kalır
AutoFilter dışa aktarımı; altı skaler karşılaştırma işlecini, sütun başına AND ya da OR ile birleştirilmiş en çok iki skaler koşulu ve sütunlar arası bir AND'i destekler; desteklenen düz değer seçim listeleri ve boş seçimlerin iki değer sınırı yoktur ve yerel filtre üst verisi olarak kalır
Sayısal skaler ölçütler sabit sonlu değerler kullanır; metin seçimleri, seçim listeleri içindeki joker karakterler dahil literal karakterlerini korur; özel filtrelerdeki joker ifadeleri, belirsiz Boolean ölçütleri, tarih grupları, dinamik tarihler, renk ve simge filtrelerinin desteklenen eşdeğer dönüşümü yoktur
Desteklenmeyen filtre ifadeleri, seçili koşulları zayıflatmak yerine ifadenin tamamı olarak atlanır; filtre aralığı korunur ve dönüşüm raporu atlanan ölçütleri tanımlar
ODS akış kaydetmeleri, hedefin özgün konumuna yazmadan önce tamamlanmış paketi kayıtlı bir geçici dosyada hazırlar; mevcut ön baytlar ve mutlak ZIP ofsetleri, özgün sonun ötesindeki konumlar dahil korunur; işlem öncesi iptal ya da ilerleme geri çağırısı istisnası hedef baytlarını, boyutu ve konumu korur ve geçici dosyayı serbest bırakır; son yazma bildirimi iptal edilemez olarak kalır
OpenDocument içe aktarması aynı skaler birleşimleri ve aynı sütunlu metin ayrımlarını ya da değer kümelerini destekler; sütunlar arası OR, düzenli ifadeler, büyük/küçük harfe duyarlı karşılaştırmalar ve desteklenmeyen yerel filtre işleçleri açık alınmış kayıp olarak kalır
TXLSXOdsImportLoss ve TXLSXOdsImportLosses özel çalışma sayfası kökeni kategorilerini tanımlar; dönüşüm raporları ImportedOdsProtectionPassword, ImportedOdsProtectionOptions, ImportedOdsFilterCriteria ve ImportedOdsCommentFormatting değerlerini kullanır; bunlar çalışma sayfası kopyalamayı yaşatır ve hem OpenDocument hem de Open XML hedefleri için görünür
Filtre dönüşümü, filtre uygulamadan ya da hücreleri yeniden hesaplamadan üst veriyi ve mevcut satır görünürlüğünü korur; yerel uygulamalar kendi filtreleme ve düzenleme davranışlarından sorumlu kalır