HotXLS belgeleri / API başvurusu

Otomatik sorgu sağlayıcıları

Windows'ta XLSX çalışma kitabı cephesi üzerinden sürüm 2.384.99'dan itibaren kullanılabilir; otomatik sağlayıcı seçimi yalnızca açık bir sorgu yenilemesi sırasında gerçekleşir

Mevcut bir sorguyu yenileme

Workbook.QueryProviders.BaseDirectory := 'C:\Data';
Workbook.QueryProviders.MaxInputBytes := 64 * 1024 * 1024;
Workbook.QueryProviders.MaxResultCells := 2000000;
Workbook.QueryProviders.TimeoutSeconds := 30;
Status := Sheet.RefreshQueryTable('ImportedData', 1000000);

TXLSXWorkbook.QueryProviders: TXLSQueryProviderDispatcher, lxQueryProviders biriminden çalışma kitabının sahibi olduğu bir dağıtıcıyı açığa çıkarır; dağıtıcıyı serbest bırakmayın

TXLSXWorksheet.RefreshQueryTable(const AName: WideString; AMaxRows: Integer = 1000000; AOnProgress: TXLSQueryRefreshProgress = nil): Integer ve sıfır tabanlı AIndex alan aşırı yükleme, mevcut bir sorguyu seçer ve bu dağıtıcıyı kullanır

Açık bir TXLSQueryTableProvider kabul eden mevcut aşırı yüklemeler, eksik sağlayıcıyı reddetme davranışları dahil, o sağlayıcıyı doğrudan kullanmaya devam eder; otomatik dağıtıma geri düşmezler

Yenileme başarıda 1, iptalde 0, başarısızlıkta -1 döndürür; xlsOperationRefresh altında tanılama kodları 1401 ve 1400'dür; mevcut işlemsel sonuç uygulaması, şema doğrulaması, literal dizeler ve biçimlendirme davranışı yürürlükte kalır

Bu tanılamaların adları xlsDiagnosticQueryRefreshCancelled ve xlsDiagnosticQueryRefreshFailed'dir; çalışma kitabı yazma korumasının alınması durum dönüşümünden önce gerçekleşir, böylece donmuş salt okunur bir görünüm ya da başka bir yazma koruması reddi istisna fırlatır

Çalışma kitabı açma ve kaydetme asla bağlantı verisi çekmez, sorgu değerlendirmez ya da saklanan RefreshOnLoad üst verisine dokunmaz; sonucunu kaydetmeden önce gereken her sorguyu açıkça yenileyin

Desteklenen gömülü sağlayıcılar

BaseDirectory yalnızca göreli yerel metin yolları için temel sağlar; veritabanı bağlantı dizeleri ve Web URL'leri açık bağlantı üst verisi olarak kalır

Belirtilmemiş bir metin kodlaması, desteklenen bir bayt sırası işareti kodlamayı tanımlamadıkça yalnızca ASCII girdiyi kabul eder; ASCII dışı girdi, açık bir desteklenen kodlamayı ya da bayt sırası işaretini gerektirir

Ayrıştırılmış bir Text bağlantısı için TextPrompt = False, TextDelimited = True ve tam olarak bir ayırıcı atayın, ardışık ayırıcıları daraltmayın; yeni oluşturulan bağlantılar varsayılan olarak sorma ve sekme ayırıcısı kullanır, farklı bir ayırıcı seçerken TextTab'i temizleyin

Sabit genişlikli metin

TextPrompt = False ve TextDelimited = False atayın, sonra sıfırdan başlayarak kesin artan sıfır tabanlı Position sırasıyla TextFields ekleyin; her alan bir sonraki konumda ya da fiziksel kayıt sonlandırıcısında biter, xltiftSkip alanını sonuçtan hariç tutar

Konumlar girdi baytlarını değil çözülen UTF-16 kod birimlerini sayar; bir vekil çifti bölen bir sınır reddedilir; CRLF, LF ve CR kayıtları ayırıcı ve niteleyici ayarlarından bağımsız sonlandırır

Alan dolgusu, açıkça türlendirilmiş metin dahil, doğrulanmış yerel sabit genişlikli içe aktarma davranışıyla eşleşen biçimde dönüştürmeden önce kırpılır; alan içindeki tırnak, sekme ve ayırıcı karakterler literal girdi olarak kalır; kısa kayıtlar bildirilen şemayı değiştirmeden boş sondaki alanları sağlar

TextFields yokken her kayıt tek bir genel alandır; TextFirstRow ilk şema kaydını seçer, Query.Headers o kaydın değerlerini atlar ve açık boş kayıtlar satır olarak kalır

Mevcut satır, girdi baytı, sonuç hücresi ve 32767 kod birimli alan sınırları uygulanır; geçersiz üst veri, dönüşüm başarısızlıkları ya da aşırı girdi, işlemsel çalışma sayfası güncellemesinden önce hazırlanmış veriyi temizler; iptal önceki sonuç hücrelerini korur

Connection.TextPrompt := False;
Connection.TextDelimited := False;
Connection.TextFields.Add(xltiftGeneral, 0);
Connection.TextFields.Add(xltiftText, 8);
Status := Sheet.RefreshQueryTable('Imported');

Bir Web bağlantısı için WebHtmlTables = True ve WebHtmlFormat = 'none' atayın; desteklenen istekler gömülü kimlik bilgilerini, parçaları, kimlik doğrulamayı ve yönlendirmeleri reddeder

Gömülü sağlayıcılar kendi bağlantı türlerindeki desteklenmeyen üst veriyi reddeder; veritabanı yenilemesi OLAP ya da sunucu komutlarını, bağlantı dosyası dolaylamasını, saklanan parolaları ve kimlik bilgisi sorularını reddeder; Text yenilemesi dosya sorularını reddeder; Web yenilemesi anonim tablo üst verisi ister

Türlü veritabanı parametreleri

SQL metin komutları, Connection.Parameters sırasına göre bir ADO Command üzerinden bağlanan konumsal ? işaretlerini destekler; parametre değerleri asla SQL metninin yerine geçmez, adlar konumsal sırayı değiştirmeden bağlamaları etiketler

Ön denetim; tek tırnaklı dizeler, çift tırnaklı ya da ters tırnaklı tanımlayıcılar, köşeli parantezli tanımlayıcılar, satır yorumları ve iç içe blok yorumlarının dışındaki işaretleri sayar, ikilenmiş tırnak ya da köşeli parantez kaçışları dahildir; eşleşmeyen tırnak ya da yorumlar ve işaret sayısı uyuşmazlıkları bağlantı açılmadan reddedilir

ParameterType = 'value' ile xlcpvInteger, xlcpvDouble, xlcpvBoolean ya da xlcpvString olmak üzere açık bir ValueKind ve karşılık gelen değer özelliğini kullanın; sıfır, False ve boş dizeler değerdir ve xlcpvNone yürütme sırasında bir değer çıkarsamaz

Connection.CommandType := 2;
Connection.CommandText := 'SELECT Amount FROM Sales WHERE Amount > ?';
with Connection.Parameters.Add do
begin
  Name := 'MinimumAmount';
  ParameterType := 'value';
  ValueKind := xlcpvInteger;
  IntegerValue := 0;
  SqlType := 4;
end;
Status := Sheet.RefreshQueryTable('SalesQuery');

Inputs!$A$1 ya da 'Sales Input'!B2 gibi tam nitelemeli bir yerel çalışma sayfası başvurusu için ParameterType = 'cell', ValueKind = xlcpvCell ve CellReference kullanın; tırnaklı sayfa adları ikilenmiş apostrof kullanır; aralıklar, dış çalışma kitapları, adlar ve nitelemesiz hücre başvuruları reddedilir

Çalışma sayfası yenilemesi; yeniden hesaplama ya da paketlenmiş hücre somutlaştırması olmadan saklanan skaler değerlerin ve kullanılabilir formül önbelleklerinin anlık görüntüsünü alır; eksik formül önbellekleri ve hata hücreleri reddedilir; eksik ya da boş bir hücre yalnızca açık bir desteklenen SQL türüyle SQL null sağlar

Hücre anlık görüntüsü Variant türünü korur; işaretli Int64, Currency, türlü tarih ve null girdilerin kalıcı 32 bitlik tamsayı ya da Double literal alanlarına indirilmesine izin vermez; doğrudan saklanan tarih, null ve Int64 literalleri yerel parametre üst veri modelinin dışındadır, bu değerler için türlü hücre bağlamalarını kullanın

SqlType, ADO türlerine açıkça eşlenen ODBC SQL tür kodlarını kullanır; bir ADO DataTypeEnum değeri değildir

SQL tür kodlarıKabul edilen değerler ve bağlama sözleşmesi
0Açık literal türünden ya da özgün hücre Variant'ından çıkarılır: tamsayı, işaretli Int64, Single, Double, Currency, Boolean, tarih ya da Unicode dize; null açık bir SQL türü ister
4, 5, -5INTEGER, SMALLINT ve BIGINT; tam sayısal değerlerle ve işaretli hedef aralık doğrulamasıyla
7, 8, 6REAL, DOUBLE ve FLOAT; yalnızca sayısal girdiler, kayıpsız tamsayıdan kayan noktaya dönüşüm ve REAL için tam Single dönüşümüyle
-7BIT, sayısal ya da dize zorlaması olmadan Boolean değerleri kabul eder
-8, -9, -10Unicode CHAR, VARCHAR ve LONGVARCHAR; boş dizeler dahil UTF-16 dizelerini korur
1, 12, -1Unicode olmayan CHAR, VARCHAR ve LONGVARCHAR yalnızca ASCII dizeleri kabul eder; diğer karakterler için bir Unicode tür kullanın
91, 92, 93 veya eski 9, 10, 11DATE, TIME ve TIMESTAMP, metin ayrıştırmadan ya da bir Excel çağı tahmin etmeden türlü tarih Variant'larını kabul eder; DATE bir zaman bileşenini reddeder, TIME sıfır (dahil) ile bir (hariç) arasından bir değer ister

Desteklenen açık türler SQL null'u da kabul eder; diziler, başvuru Variant'ları, hatalar, sonlu olmayan sayılar, desteklenmeyen SQL türleri ve tamsayı hassasiyeti kaybedecek dönüşümler reddedilir; NUMERIC ya da DECIMAL, bu bağlama API'sinin sağlamadığı hassasiyet ve ölçek üst verisi ister

ADO türlü değeri ve bildirilen boyutu alır; boş metin için en az bir kod birimi ayrılır; yerel sürücüler SQL lehçesinden, desteklenen parametre türlerinden ve sonuç dönüşümlerinden sorumlu kalır; böylece kurulu bir sağlayıcı geçerli bir bağlamayı yine reddedebilir ya da daha dar sayısal ya da tarih yeteneklerine sahip olabilir

Jet ve ACE; doğrulanmış DATE, TIME ve TIMESTAMP değerleri için türlü OLE DATE bağlamalarını kullanır; böylece tarih ve saat, yerel ayara bağlı zaman damgası metni yansımalarından bağımsız kalır; DATE ve TIME doğrulama kuralları yine uygulanır ve null yansıtma yetenekleri sağlayıcıya özgü kalır

Parametreler bir SQL metin komutu ister ve getirme başına 1024, ad başına 255 kod birimi ve metin değeri başına 32767 kod birimiyle sınırlıdır; komut metni, parametre atıfları, adlar ve yükler de girdi baytı bütçesini harcar

Sorular ve bilinmeyen parametre uzantı öznitelikleri reddedilir; RefreshOnChange saklanan üst veri olarak kalır ve arka plan yenilemesi tetiklemez; açma ya da kaydetme hücreleri çözümlemez ya da komut yürütmez

Doğrudan Fetch literalleri destekler; FetchWithCellResolver(Connection, Query, MaxRows, out Data, var Abort, AResolver), hücre değerleri için Boolean sonucu bir saklanan değerin kullanılabilir olup olmadığını belirten TXLSQueryParameterCellResolver geri çağırısını kabul eder

Geri çağırı çağrıya özgüdür ve saklanmaz; otomatik çalışma sayfası yenilemesi kendi yerel çözümleyicisini sağlar; kayıtlı özel sağlayıcılar yine önceliklidir ve parametre semantiğinin sahibidir

Web yenilemesi; kapsayan hücreleri, iç içe seçili tabloları ya da betikle üretilen içeriği olmayan düz text/html tablolarını destekler; desteklenmeyen düzenler ve varlıklar kısmi veri üretmek yerine reddedilir

Özel sağlayıcı kaydetme

Workbook.QueryProviders.RegisterProvider(xlckWeb, CustomProvider);
try
  Status := Sheet.RefreshQueryTable('RemoteData');
finally
  Workbook.QueryProviders.RegisterProvider(xlckWeb, nil);
end;

TXLSQueryProviderDispatcher.Create, doğrudan kullanım için bağımsız sahipli bir dağıtıcı kurar; çalışma kitabı kendi örneğini oluşturur ve sahiplenir

RegisterProvider(AKind: TXLSConnectionKind; AProvider: TXLSQueryTableProvider), bildirilen bir bağlantı türü için ödünç bir işleyici kurar ve nil kaydı kaldırır; işleyici kayıttan uzun yaşamalıdır

Kayıtlı bir işleyici gömülü sağlayıcıya göre önceliklidir ve uygulamaya özgü kimlik doğrulamayı ya da bağlantı türlerini destekleyebilir; kayıt değişiklikleri, yapılandırma değişiklikleri ve özyinelemeli dağıtım getirme sırasında reddedilir; geçersiz enum değerleri dizi erişiminden önce reddedilir

Fetch(Connection, Query, MaxRows, out Data, var Abort), çalışma sayfası yenilemesi sırasında koparılmış üst veri alır ve dikdörtgen bir TXLSQueryResultData döndürür; iptal ya da istisnalar yayılmadan önce hazırlanmış sonuçları temizler

Kaynak sınırları

MaxInputBytes varsayılanı 67108864 bayttır ve metin ya da Web girdisini ve desteklenen veritabanı sonuç yüklerini sınırlar; MaxResultCells varsayılanı 2000000 hücresidir ve dikdörtgen sonucu sınırlar

TimeoutSeconds varsayılanı 30'dur ve desteklenen yerel veritabanı ya da HTTP aşamalarını yapılandırır; tüm işlem ya da özel bir sağlayıcı için garantili bir son tarih değildir

Üç ayarın ve MaxRows'un pozitif olması ve zaman aşımının yerel bir milisaniye tamsayısına sığması gerekir; dağıtıcı fazla satır, sütun ya da hücreyi kırpma yapmadan reddeder; bayt ve girdi sınırları gömülü sağlayıcılar tarafından uygulanır ve özel getirmeler için kayıtlı işleyicinin sorumluluğunda kalır

Çalışma sayfası yenilemesi tüm sonuç değerlerini doğrular ve iptal ya da uygulama hatalarından sonra hücreleri ile sorgu ya da tablo üst verisini geri yükler; özel sağlayıcılar kendi dış işlem sınırlarına uymaktan sorumlu kalır

Yerel XLSX sonuç bağlamaları

Tablo destekli veritabanı sorguları; tablo-sorgu tablosu ilişkisini, tutarlı alan kimliklerini, sütun kimliklerini ve gizli bir yerel hedef adını kullanır; bağımsız desteklenen Text ve Web hedefleri sonuç aralıklarını korur

TXLSXTable.ColumnUniqueNames[Index]: WideString, sıfır tabanlı yerel sütun kimliklerini açığa çıkarır ve bunları ColumnQueryTableFieldIds ile birlikte atama, kopyalama ve yeniden açma boyunca korur

Doğrudan bir dış tablo olarak bağlanan eski bir Text bağlantısı desteklenen bir yerel dışa aktarma biçimi değildir ve kaydetme, çıktıdan önce onu reddeder; açıkça yenilenen metin değerleri sıradan bir tabloyu doldurabilir ya da kurulu bir ADO/ODBC metin sürücüsü tablo destekli yerel bir veritabanı sorgusu sağlayabilir

İlgisiz ya da desteklenmeyen alınmış ilişkiler ve uzantı XML'i korunmaya devam eder; bu özellik opak dış grafikleri desteklenen yenilenebilir sorgulara dönüştürmez

Hedef doğrulaması, ilerleme geri çağrıları ve çevresindeki üst veri modeli için bağlantı ve işlemsel sorgu API'leri sayfasına bakın