Excel çalışma kitaplarını doğrudan Delphi veya C++Builder kodundan oluşturun, düzenleyin, inceleyin, hesaplayın ve dışa aktarın. HotXLS; Microsoft Excel otomasyonu olmadan masaüstü araçları, batch işleri, raporlama sistemleri ve sunucu tarafı belge üretimi için tasarlanmış, XLS ve XLSX iş akışlarına yönelik kaynak kodlu yerel bir Object Pascal kütüphanesidir.
Bu yazı developers generating visual Excel reports, dashboards, or template-based workbooks in Delphi için hazırlanmıştır. charts, images, and drawing objects konusunu tek bir bileşen çağrısı olarak değil, üretim düzeyinde belge mühendisliği olarak ele alır.
Pratik risk şudur: visual workbook elements fail when anchors, sheet changes, chart ranges, image DPI, and drawing identifiers are treated as decorative afterthoughts. Bu nedenle akışın yazılı sözleşmeye, gözlemlenebilir tanılara ve gerçekçi regresyon dosyalarına ihtiyacı vardır.
Mimari kararlar
Treat drawings as workbook data. chart data range ownership and whether ranges expand with inserted rows / image source, DPI, compression, transparency, and alternate text policy
- chart data range ownership and whether ranges expand with inserted rows
- image source, DPI, compression, transparency, and alternate text policy
- object anchoring behavior when cells resize, hide, or move
- whether existing drawings are preserved, replaced, or regenerated from templates
Uygulama akışı
Bind visuals to stable ranges and anchors. The order below keeps the workflow reviewable for Delphi and C++Builder teams.
- prepare named ranges or stable addresses before creating chart objects
- normalize image dimensions and compression before insertion
- place drawings with the intended cell anchor and movement behavior
- recalculate or refresh chart ranges after data changes
- open the workbook in the target Excel version and inspect layout at print scale
Doğrulama kanıtı
Visual-output evidence for workbook support. Keep these fields with the output or support record.
- chart type, source range, sheet name, and series count
- image dimensions, DPI, compression mode, anchor cell, and object identifier
- drawing preservation or regeneration decision for each template object
- viewer compatibility notes for Excel, LibreOffice, or downstream conversion
A chart depends on workbook structure
Charts, pictures, and shapes are connected to sheets, cell anchors, relationships, and sometimes formulas. A reliable workflow keeps those relationships stable when rows, columns, templates, or sheet order change.
Üretim uygulama notları
HotXLS: charts, images, and drawing objects in Delphi konusunu HotXLS çağrılarının çevresinde açık bir servis sözleşmesi olarak ele alın; giriş doğrulama, çalışma kitabı yazma, çıktı denetimi ve destek kanıtını ayırın
- Çalışma kitabını oluşturmadan önce veri kaynağını, hücre aralıklarını ve çıktı biçimini belirleyin
- Satır sayısı, sayfalar, uyarılar ve çıktı yolunu incelenebilir destek kaydına yazın
- Uygulamaya özel ayrıntıları UI olaylarına değil test edilebilir helper'lara yerleştirin
- Dosyayı başka sisteme veya müşteriye vermeden önce kaydedilmiş çıktıyı yeniden açın veya inceleyin
Prova edilmesi gereken hata kipleri
- Başarılı SaveAs çağrısı iş sözleşmesinin doğru kaldığını kanıtlamaz
- Sunucu ile geliştirici makinesinde yazı tipleri, izinler ve bölgesel ayarlar farklı olabilir
- Loglar parola, müşteri verisi veya iç bağlantı açığa çıkarmamalıdır
Ayrıntılı Delphi örneği
Aşağıdaki Delphi örneği bu konu için pratik bir servis sınırı gösterir ve politika, günlükleme ve doğrulamayı test edilebilir katmanda tutar
procedure BuildSalesDashboardWorkbook(const OutputFile, LogoFile: string; const Rows: TArray<TSalesRow>);
var
Wb: TXLSXWorkbook;
Sh: IXLSWorksheet;
RowIndex: Integer;
Row: TSalesRow;
begin
Wb := TXLSXWorkbook.Create;
try
Sh := Wb.Sheets[0];
Sh.Name := 'Dashboard';
Sh.Range['A1'].Value := 'Quarter';
Sh.Range['B1'].Value := 'Revenue';
Sh.Range['C1'].Value := 'Margin';
Sh.Range['D1'].Value := 'Pipeline';
RowIndex := 2;
for Row in Rows do
begin
Sh.Range['A' + IntToStr(RowIndex)].Value := Row.Quarter;
Sh.Range['B' + IntToStr(RowIndex)].Value := Row.Revenue;
Sh.Range['C' + IntToStr(RowIndex)].Value := Row.Margin;
Sh.Range['D' + IntToStr(RowIndex)].Value := Row.Pipeline;
Inc(RowIndex);
end;
Sh.Range['A1:D1'].ApplyBuiltinStyle(xbsTitle);
Sh.Range['A2:D' + IntToStr(RowIndex - 1)].ApplyBuiltinStyle(xbsGood);
AddColumnChart(Sh, 'A1:D' + IntToStr(RowIndex - 1), 'F3:M18');
AddImageIfPresent(Sh, LogoFile, 'F1');
WriteWorkbookAudit(Wb, 'dashboard', RowIndex - 2);
if Wb.SaveAs(OutputFile) <> 1 then
RaiseWorkbookSaveError(OutputFile);
finally
Wb.Free;
end;
end;
Üretim kontrol listesi
- Run the workflow on an empty workbook, a normal customer workbook, and a worst-case workbook
- Open the output with the target spreadsheet application or downstream importer
- Log product version, template version, profile, row count, output path, elapsed time, and warning count
- Keep passwords, temporary files, customer data, and support bundles under explicit retention rules
- Add regression workbooks when a customer file exposes a new edge case