Bir elektronik tablo.
Uygulamanızın içinde.
sgcSpreadsheet, sgcUI'nin yeni Excel tarzı elektronik tablo denetimidir. Kullanıcılarınız değer ve formül yazar, birkaç sayfada çalışır ve hücrelerinden grafik çizer. Kodunuz çalışma kitabını doldurur, kendi fonksiyonlarını ekler ve Excel'in açtığı XLSX dosyalarını okuyup yazar.
- VCL
- FireMonkey
- C++ Builder
- WinForms
- WPF
- Avalonia

Er ya da geç her kurumsal uygulamanın bir tabloya ihtiyacı olur. Kullanıcılar bütçe planlar, teklif fiyatlandırır, maliyet hesaplar veya bir müşterinin Excel dosyasıyla gönderdiği rakamları kontrol eder; bunu yaparken formüller, birkaç sayfa ve grafikler bekler. Düz bir ızgara bunların hiçbiri için yeterli değildir.
sgcSpreadsheet, sgcGrid üzerine ve sgcUICore'da paylaşılan bir formül motoru üzerine kurulu, Excel tarzı bir elektronik tablo denetimidir. Sayfalar, tanımlı adlar ve dinamik diziler içeren gerçek bir çalışma kitabı tutar, yalnızca bir değişikliğin etkilediği hücreleri yeniden hesaplar ve XLSX yükler ve kaydeder. Aynı motor, Delphi ve C++ Builder için VCL ve FireMonkey denetimlerini, .NET için ise WinForms, WPF ve Avalonia denetimlerini çalıştırır.
sgcSpreadsheet Çalışırken
Formüller, taşan diziler, birkaç sayfa, canlı grafikler ve XLSX dosyaları, her platformda. YouTube'da da izleyin.
Kullanıcılarınızın Zaten Bildiği Formüller
Rakamlarla çalışan insanlar Excel formülleriyle düşünür. sgcSpreadsheet'te = ile başlayan bir metin formüldür ve motor 211 çalışma sayfası fonksiyonunu hesaplar: matematik, istatistik, metin, tarih ve saat, arama, mantıksal, bilgi ve dinamik dizi fonksiyonları. Motor sgcUICore içinde yer aldığından sgcGrid formülleri de aynı sonuçları verir.
=SUM(B2:B13)=XLOOKUP(C2,…)=Sheet2!A1 gibi diğer sayfalara başvurularla birlikte.=SORT(A2:A20)↓#SPILL! ve A1# başvuruları da desteklenir.B2 → B14 → D3=SUM(Sales)*(1+Rate)'007
Sayfalar, Adlar ve Taşan Diziler
Bir elektronik tablo, bir veya daha fazla sayfadan oluşan bir çalışma kitabıdır. Izgaranın altındaki sekmeler sayfayı değiştirir, + sekmesi yeni bir sayfa ekler ve yeniden adlandırılan bir sayfa, ona başvuran her formülde de yeniden adlandırılır. Kodda sayfaları AddSheet, ActiveSheet ve SheetCount yönetir, çalışma kitabının tanımlı adlarını ise Grid.Sheets.Names tutar.
Aşağıdaki yöntem bir fiyat listesi doldurur, aralıklarını adlandırır ve onu okuyan bir özet sayfası oluşturur. SORT tüm ürün listesini döndürür ve liste alttaki hücrelere taşar; A1# ise liste ne kadar uzarsa uzasın taşan bu aralığa başvurur. XLOOKUP bir fiyatı bulur, VAT adı ise vergiyi ekler.
uses
sgcSpreadsheet_VCL;
procedure TForm1.BuildPriceList;
var
vSummary: Integer;
begin
// Sheet1: a price list, row and column are 0-based, (0, 0) is A1
sgcVCLSpreadsheet1.SetCellInput(0, 0, 'Product');
sgcVCLSpreadsheet1.SetCellInput(0, 1, 'Price');
sgcVCLSpreadsheet1.SetCellInput(1, 0, 'Monitor');
sgcVCLSpreadsheet1.SetCellInput(1, 1, '219');
sgcVCLSpreadsheet1.SetCellInput(2, 0, 'Keyboard');
sgcVCLSpreadsheet1.SetCellInput(2, 1, '49');
sgcVCLSpreadsheet1.SetCellInput(3, 0, 'Mouse');
sgcVCLSpreadsheet1.SetCellInput(3, 1, '25');
// defined names: formulas use them instead of cell addresses
sgcVCLSpreadsheet1.Grid.Sheets.Names.Add('Products', '=Sheet1!$A$2:$A$4');
sgcVCLSpreadsheet1.Grid.Sheets.Names.Add('Prices', '=Sheet1!$B$2:$B$4');
sgcVCLSpreadsheet1.Grid.Sheets.Names.Add('VAT', '0.21');
// a second sheet that reads the first one
vSummary := sgcVCLSpreadsheet1.AddSheet('Summary');
sgcVCLSpreadsheet1.ActiveSheet := vSummary;
// a dynamic array: the sorted names spill into A1:A3
sgcVCLSpreadsheet1.SetCellInput(0, 0, '=SORT(Products)');
// A1# is the whole spilled range, however long the list grows
sgcVCLSpreadsheet1.SetCellInput(0, 2, 'Items');
sgcVCLSpreadsheet1.SetCellInput(0, 3, '=ROWS(A1#)');
// XLOOKUP finds the price of a product, VAT included
sgcVCLSpreadsheet1.SetCellInput(1, 2, 'Monitor');
sgcVCLSpreadsheet1.SetCellInput(1, 3, '=XLOOKUP(C2,Products,Prices)*(1+VAT)');
// every sheet, formula and name goes to a file that Excel opens
sgcVCLSpreadsheet1.SaveToXLSX('prices.xlsx');
end;
Özet sayfası üç ürünü sırayla, 3 öğeyi ve monitör için 264.99 değerini gösterir. İlk sayfada bir fiyatı değiştirirseniz yalnızca ona bağlı hücreler yeniden hesaplanır. FreezePanes(1, 0), sayfanın geri kalanı kayarken başlık satırını yerinde tutar; TsgcVCLSpreadsheetFormulaBar ve TsgcFMXSpreadsheetFormulaBar formül çubukları ise kullanıcılarınıza bir ad kutusu ve geçerli hücrenin formülünü sunar.
Kendi Fonksiyonlarınız
Mühendislik, finans ve laboratuvar uygulamalarının kendi hesaplamalarına ihtiyacı vardır. Formül motorunun bir fonksiyon kayıt defteri vardır ve oraya kaydedilen bir fonksiyon, elektronik tablonun, sgcGrid'in ve bir TsgcCalcEvaluator'ın her formülünde, yerleşik bir fonksiyon gibi çalışır. İşleyici sıradan bir fonksiyondur ve bir birimin initialization bölümünden kaydedilir.
unit MyFunctions;
interface
implementation
uses
sgcUICore_Calc;
{ =MARKUP(price, [rate]): the price plus a margin, 20% by default }
function DoMarkup(aCall: TsgcCalcCall): Variant;
var
vPrice, vRate: Double;
vError: string;
begin
vError := aCall.Number(0, vPrice);
vRate := 0.2;
if (vError = '') and (aCall.Count > 1) then
vError := aCall.Number(1, vRate);
if vError <> '' then
Result := vError
else
Result := vPrice * (1 + vRate);
end;
initialization
// MARKUP takes 1 or 2 arguments
sgcCalcRegisterFunction('MARKUP', DoMarkup, 1, 2);
end.
Birimi projeye ekleyin, kullanıcılarınız =MARKUP(B2) yazabilir. Dinamik dizilerle motor, bir dizi bağımsız değişkeninin her öğesi için fonksiyonu çağırır; böylece =MARKUP(B2:B4, 0.3) her fiyat için bir sonuç taşırır ve =SUM(MARKUP(B2:B4)) ek kod olmadan çalışır. Bir aralığın hücrelerine ihtiyaç duyan bir fonksiyon cfRanges bayrağıyla kaydedilir ve hücreleri bir yineleyiciyle dolaşır.
Hücre Aralıklarından Grafikler
Bir grafik, bir hücre aralığının değerlerini gösterir ve Excel'deki bir grafik gibi sayfanın üzerinde durur. Grafiği sgcCharts çizer; aralıktaki bir hücre değiştiğinde veya aralıktaki bir formül yeni bir değer verdiğinde grafik de buna uyar. Kullanıcılar grafikleri fareyle taşır ve yeniden boyutlandırır, her sayfanın kendi grafikleri vardır.
- 7 grafik türü: sütun, çubuk, çizgi, alan, pasta, halka ve dağılım.
'A1:D10'veya'Sheet1!A1:D10'gibi bir aralıklaAddChart; seri adları ve kategoriler başlık satırından ve sütunundan okunur.TsgcSpreadsheetChartsher sayfanın grafiklerini tutar,SaveToXLSXise onları Excel'in açtığı grafikler olarak yazar.
XLSX Girer, XLSX Çıkar
Müşteriler XLSX dosyaları gönderir ve karşılığında XLSX dosyaları bekler. LoadFromXLSX bir çalışma kitabının tüm sayfalarını okur, SaveToXLSX ise tüm sayfaları bir dosya adına veya bir akışa yazar; böylece bir dosya uygulamanız ile Excel arasında gidip gelebilir.
- Değerler, formüller ve hücre biçimleri.
- Tanımlı adlar ve dinamik diziler.
- Dondurulmuş bölmeler ve sütun genişlikleri.
- Excel'in açtığı grafikler olarak kaydedilen grafikler.
VCL, FireMonkey ve .NET
Delphi ve C++ Builder, VCL için TsgcVCLSpreadsheet ve FireMonkey için TsgcFMXSpreadsheet denetimlerini, her biri kendi formül çubuğuyla birlikte alır. .NET için ise yine formül çubuklu TsgcWinFormsSpreadsheet, TsgcWpfSpreadsheet ve TsgcAvaloniaSpreadsheet vardır; bunlar esegece.sgcSpreadsheet, esegece.sgcSpreadsheet.WinForms, esegece.sgcSpreadsheet.Wpf ve esegece.sgcSpreadsheet.Avalonia NuGet paketlerinde yer alır. .NET denetimleri Delphi olanlarla aynı adları kullanır ve özel bir fonksiyon bir lambda olabilir.
using esegece.sgcSpreadsheet;
using esegece.sgcUICore;
// once at startup, before the first formula is parsed
sgcUICore_Calc.sgcCalcRegisterFunction("MARKUP", aCall =>
{
double vPrice;
double vRate = 0.2;
string vError = aCall.Number(0, out vPrice);
if ((vError.Length == 0) && (aCall.Count > 1))
vError = aCall.Number(1, out vRate);
if (vError.Length > 0)
return vError;
return vPrice * (1 + vRate);
}, 1, 2);
// sheet is a TsgcWinFormsSpreadsheet: open a workbook made in Excel
sheet.LoadFromXLSX("prices.xlsx");
sheet.ActiveSheet = 0;
// the custom function spills over the whole price column
sheet.SetCellInput(0, 2, "=MARKUP(B2:B4, 0.3)");
// a column chart of the range, drawn by sgcCharts
TsgcSpreadsheetChart chart = sheet.AddChart(TsgcSpreadsheetChartType.sctColumn, "A1:B4");
chart.Title = "Prices";
sheet.SaveToXLSX("prices-markup.xlsx");
Demoları Çalıştırın
Delphi ve C++ Builder demoları sgcUI deneme sürümüyle kurulur, .NET demoları ise Registered .NET indirmesiyle birlikte gelir.

- Basic: kodla oluşturulmuş, SUM, AVERAGE, IF ve XLOOKUP kullanan bir satış çalışma kitabı, onu okuyan bir özet sayfası, dondurulmuş bir başlık satırı, formül çubuğu ve XLSX olarak Aç ve Kaydet.
- Functions: matematik, metin, tarih ve saat, arama ve dinamik dizi fonksiyonları, her kategori için bir sayfa, her formül sonucunun yanında.
- Charts: hücre aralıklarından sütun, çizgi ve pasta grafikleri. Bir gelir veya maliyeti düzenleyin, grafikler buna uyar.
- CustomFunction, BasicFMX ve ChartsFMX: uygulama tarafından kaydedilen fonksiyonlar ve FireMonkey üzerindeki Basic ve Charts demoları. Basic ve Charts ayrıca C++ Builder projeleri olarak da gelir.
- .NET: WinForms için SpreadsheetBasic, SpreadsheetBasicWpf, SpreadsheetBasicAvalonia, SpreadsheetFunctions, SpreadsheetCharts ve SpreadsheetCustomFunction.
sgcSpreadsheet Nerede Yer Alır
sgcSpreadsheet, sgcUI Enterprise'a ve All-Access paketine dahildir; ayrıca Delphi ve C++ Builder için ve .NET için tek başına bir paket olarak satılır. sgcSpreadsheet'i kurmak sgcGrid ve sgcCharts'ı da kurar, böylece ızgara ve grafikler her zaman çalışır. Ücretsiz bir Community sürümü yoktur. Ayrıntılar için fiyatlandırma sayfasına bakın.
Kullanıcılarınıza Bir Elektronik Tablo Verin
sgcSpreadsheet, Delphi ve C++ Builder için VCL ve FireMonkey üzerinde, .NET için ise WinForms, WPF ve Avalonia üzerinde sgcUI'nin bir parçasıdır.
Sorularınız veya geri bildirimleriniz mi var? Bizimle iletişime geçin, yanıtı kodu yazan kişilerden alırsınız.
