sgcSpreadsheet: Delphi ve .NET için Excel Tarzı Bir Elektronik Tablo

· Bileşenler
sgcSpreadsheet: Delphi ve .NET için Excel Tarzı Bir Elektronik Tablo
✦  sgcUI · sgcSpreadsheet

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
Bir satış tablosu ile hücre aralıklarından çizilen sütun, çizgi ve pasta grafikleriyle sgcSpreadsheet
211çalışma sayfası fonksiyonu
7grafik türü
5arayüz çatısı
XLSXyükleme ve kaydetme

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)
211 fonksiyonSUM ve AVERAGE'dan TEXT ile tarih ve saat fonksiyonlarına kadar, her platform için tek bir motor.
=XLOOKUP(C2,…)
XLOOKUP dahilKullanıcılarınızın ilk başvurduğu arama fonksiyonları, =Sheet2!A1 gibi diğer sayfalara başvurularla birlikte.
=SORT(A2:A20)↓
Taşan dizilerSEQUENCE, SORT, FILTER ve UNIQUE altlarındaki hücreleri doldurur; #SPILL! ve A1# başvuruları da desteklenir.
B2 → B14 → D3
Artımlı yeniden hesaplamaBir bağımlılık grafiği hangi hücrenin hangisini okuduğunu bilir; böylece bir değişiklik yalnızca ona bağlı hücreleri yeniden hesaplar.
=SUM(Sales)*(1+Rate)
Tanımlı adlarFormüller hücre adresleri yerine anlamlı adlar kullanır; çalışma kitabı ve sayfa kapsamı desteklenir.
'007
Zorunlu metinBaştaki bir kesme işareti metni yazıldığı gibi saklar; böylece 007 gibi bir kod metin olarak kalır.
Matematik formülleri ve sonuçlarıyla Functions demosu, her kategori için bir sayfa
Functions demosu: her kategori için bir sayfa, her formül sonucunun yanında

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.

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.

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.

Bir satış çalışma kitabı ve formül çubuğuyla VCL Basic demosu
Basic: bir özet sayfası, dondurulmuş bir başlık satırı ve formül çubuğu olan bir satış çalışma kitabı

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.