![]() |
VOOZH | about |
dotnet add package HTL.Aspose.MergeTemplate --version 1.0.1
NuGet\Install-Package HTL.Aspose.MergeTemplate -Version 1.0.1
<PackageReference Include="HTL.Aspose.MergeTemplate" Version="1.0.1" />
<PackageVersion Include="HTL.Aspose.MergeTemplate" Version="1.0.1" />Directory.Packages.props
<PackageReference Include="HTL.Aspose.MergeTemplate" />Project file
paket add HTL.Aspose.MergeTemplate --version 1.0.1
#r "nuget: HTL.Aspose.MergeTemplate, 1.0.1"
#:package HTL.Aspose.MergeTemplate@1.0.1
#addin nuget:?package=HTL.Aspose.MergeTemplate&version=1.0.1Install as a Cake Addin
#tool nuget:?package=HTL.Aspose.MergeTemplate&version=1.0.1Install as a Cake Tool
Thư viện trộn dữ liệu vào mẫu Excel có sẵn (lưu trên MinIO thông qua IStorageService) và xuất ra Excel/PDF bằng Aspose.
services.AddAsposeMergeTemplate(configuration);
AppSettings ví dụ:
{
"AsposeMergeTemplate": {
"TemplateStorageType": 2,
"OutputStorageType": 0,
"TemplatePrefix": ""
}
}
var svc = serviceProvider.GetRequiredService<IMergeTemplateService>();
var result = await svc.MergeAsync(new MergeTemplateRequest
{
AppCode = "System",
CompanyCode = tenantCode,
TemplateName = "mau-in/phieu-thu.xlsx",
Data = mergeData, // MergeTemplateData (contracts thuần), không phụ thuộc HTL.Domain.Core
ExportExcel = true,
ExportPdf = true,
// (Tuỳ chọn) custom xử lý cell cho riêng request này
// CellValueHandle = new MyCustomCellValueHandle()
});
// result.OutputExcelPath / result.OutputPdfPath là tên file đã được lưu trên storage output (thường là Temp)
##{tableName}.{key}####ChiTiet.SoLuong####{tableName}.{FieldName}##Bạn khai báo các rule để “bật” cột động tại các anchor key trong template:
mergeData.Metadata.DynamicColumnRules.Add(new MergeDynamicColumnRule
{
Id = 1,
TableName = "ChiTiet",
Key = "SoLuong", // khớp với ##ChiTiet.SoLuong##
IsDynamic = true,
ResultIndex = 0 // sẽ map với ColumnInfoDetails["ChiTiet"]["0"]
});
MergeTemplateData.ColumnInfoDetails có cấu trúc:
tableName → resultIndex(string) → List<MergeColumnDynamicInfo>Trong đó mỗi MergeColumnDynamicInfo mô tả 1 cột được sinh:
GroupIndex: phải bằng DynamicColumnRule.Id để rule biết cột nào thuộc anchor nàoText: tiêu đề cộtFieldName: tên field để sinh placeholder ở dòng template: ##{tableName}.{FieldName}##ParentName (tuỳ chọn): nếu có sẽ tạo group header và tự merge theo nhóm cùng ParentNameWidth: độ rộng cộtDataType: kiểu dữ liệu để format mặc địnhVí dụ:
mergeData.ColumnInfoDetails["ChiTiet"] = new Dictionary<string, List<MergeColumnDynamicInfo>>
{
["0"] = new List<MergeColumnDynamicInfo>
{
new()
{
GroupIndex = 1,
Text = "Kỳ 1",
FieldName = "SoLuongKy1",
ParentName = "Số lượng",
Width = 12,
DataType = MergeDataType.Decimal
},
new()
{
GroupIndex = 1,
Text = "Kỳ 2",
FieldName = "SoLuongKy2",
ParentName = "Số lượng",
Width = 12,
DataType = MergeDataType.Decimal
}
}
};
Details[tableName] và placeholder ##{tableName}.{field}## ở dòng template.| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.