Создавайте, редактируйте, проверяйте, вычисляйте и экспортируйте книги Excel напрямую из кода Delphi или C++Builder. HotXLS — нативная библиотека Object Pascal с исходным кодом для рабочих процессов XLS и XLSX, предназначенная для настольных инструментов, batch-задач, систем отчетности и серверной генерации документов без автоматизации Microsoft Excel.
Эта статья предназначена для developers exporting workbook data to integration feeds, web previews, reports, and legacy document flows. Она рассматривает CSV, TSV, HTML, and RTF export как промышленную инженерию документов, а не как одиночный вызов компонента.
Практический риск состоит в том, что export formats lose workbook semantics in different ways, so data, encoding, formulas, styles, and selected ranges need explicit product policy. Поэтому процессу нужны письменный контракт, наблюдаемая диагностика и реалистичные регрессионные файлы.
Архитектурные решения
Define the target format contract. selected sheets, ranges, headers, hidden rows, and filtered data policy / encoding, delimiter, quote, newline, decimal, and date formatting rules
- selected sheets, ranges, headers, hidden rows, and filtered data policy
- encoding, delimiter, quote, newline, decimal, and date formatting rules
- formula output as cached values, formulas, or blocked content
- style preservation expectations for HTML and RTF compared with workbook layout
Порядок реализации
Choose data fidelity before visual fidelity. The order below keeps the workflow reviewable for Delphi and C++Builder teams.
- select the export profile from the target system rather than from file extension alone
- normalize data types and locale-sensitive formats before writing delimited output
- escape delimiters, quotes, line breaks, and HTML-sensitive characters deliberately
- record which workbook features were dropped or simplified
- validate exported files with the downstream importer or browser target
Доказательства проверки
Export evidence for downstream consumers. Keep these fields with the output or support record.
- format, encoding, delimiter, selected range, row count, and column count
- formula handling, hidden-row policy, filter policy, and style-loss warnings
- downstream import result or web-preview verification
- sample records showing quote, newline, Unicode, date, and number behavior
Every export format is a tradeoff
CSV and TSV emphasize delimited data, HTML emphasizes presentation and web preview, and RTF emphasizes styled document interchange. The application should decide which workbook features are preserved, flattened, or rejected.
Заметки по промышленной реализации
Рассматривайте HotXLS Component: CSV, TSV, HTML, and RTF export in Delphi как явный сервисный контракт вокруг вызовов HotXLS, разделяя проверку входных данных, запись книги, контроль результата и сведения для поддержки
- Определите источник данных, диапазоны ячеек и формат вывода до создания книги
- Записывайте число строк, листы, предупреждения и путь вывода в проверяемые сведения поддержки
- Инкапсулируйте прикладные детали в тестируемые helper-функции, а не в события UI
- Повторно откройте или проверьте сохраненный файл перед передачей другой системе или клиенту
Сценарии отказов для проверки
- Успешный SaveAs не доказывает, что бизнес-контракт остался корректным
- Шрифты, права и региональные настройки на сервере могут отличаться от машины разработчика
- Журналы не должны раскрывать пароли, данные клиентов или внутренние ссылки
Подробный пример Delphi
Следующий пример Delphi показывает практическую границу сервиса для этой темы, где политика, журналирование и проверка остаются тестируемыми
procedure ExportWorkbookViews(const WorkbookFile, OutputFolder: string; const Profiles: TArray<TExportProfile>);
var
Wb: TXLSXWorkbook;
Profile: TExportProfile;
ExportPath: string;
begin
RequireFolder(OutputFolder);
Wb := TXLSXWorkbook.Create;
try
Wb.Open(WorkbookFile);
for Profile in Profiles do
begin
RequireExportRange(Wb, Profile.SheetName, Profile.RangeAddress);
ExportPath := BuildExportPath(OutputFolder, Profile);
case Profile.Format of
efCsv: ExportRangeAsCsv(Wb, Profile, ExportPath);
efTsv: ExportRangeAsTsv(Wb, Profile, ExportPath);
efHtml: ExportRangeAsHtml(Wb, Profile, ExportPath);
else
RaiseUnsupportedExportFormat(Profile.Format);
end;
ValidateExportRecordCount(Profile, ExportPath);
AppendExportManifest(OutputFolder, Profile, ExportPath);
end;
finally
Wb.Free;
end;
end;
Производственный чек-лист
- 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