ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
2021-04-26 08:27
YPE html>
标签:教程 char str pen batch 代码执行 open utf-8 rem
基础教程之导出Pdf收据
说明
本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出
要点
- 导出PDF数据
- 自定义PDF模板
- 导出单据
- 如何批量导出单据
导出特性
PdfExporterAttribute
- Orientation: 方向(横向或纵向)
- PaperKind: 纸张类型(默认A4)
- IsWriteHtml: 是否输出HTML模板
ExporterHeaderAttribute
DisplayName: 显示名称
主要步骤
1.安装包Magicodes.IE.Pdf
Install-Package Magicodes.IE.Pdf
2.导出PDF数据
- 创建Dto类
public class Student
{
///
/// 姓名
///
public string Name { get; set; }
///
/// 年龄
///
public int Age { get; set; }
}
public async Task ExportPdf()
{
var exporter = new PdfExporter();
var result = await exporter.ExportListByTemplate("test.pdf", new List()
{
new Student
{
Name = "MR.A",
Age = 18
},
new Student
{
Name = "MR.B",
Age = 19
},
new Student
{
Name = "MR.B",
Age = 20
}
});
}
导出内容如下所示:
通过上述代码我们实现了一个简单的Pdf文件导出,也许这样无法达到我们的要求,我们需要自定义标题,那么请看如下代码
[PdfExporter(Name = "学生信息")]
public class Student
{
///
/// 姓名
///
[ExporterHeader(DisplayName = "姓名")]
[Display(Name = "Display姓名")]
public string Name { get; set; }
///
/// 年龄
///
[ExporterHeader(DisplayName = "年龄")]
public int Age { get; set; }
}
- PdfExporter 通过Name属性来定义文档标题
- ExporterHeader DisplayName用来定义属性名称
- Display同样定义属性名称,但是优先级小于ExporterHeader
通过修改上述代码执行结果如下所示:
3.导出PDF收据
- 创建导出模板
@using DocumentFormat.OpenXml.EMMA
@Model.Title
NO:@Model.Data.Code 交易时间:@Model.Data.TradeTime.ToString("yyyy-MM-dd HH:mm:ss")
交款姓名
@Model.Data.Name
身份证号码
@Model.Data.IdNo
交易金额
¥:@Model.Data.Amount
人民币(大写):
@Model.Data.UppercaseAmount
收款方式
@Model.Data.PaymentMethod
交易状态
@Model.Data.TradeStatus
收款事由
@Model.Data.Remark
入学年级
@Model.Data.Grade
专业
@Model.Data.Profession
-
创建Dto类
[Exporter(Name = "湖南心莱信息科技有限公司电子收款凭证")] public class ReceiptInfo { ///
/// 交易时间 /// public DateTime TradeTime { get; set; } ////// 姓名 /// public string Name { get; set; } ////// 身份证 /// public string IdNo { get; set; } ////// 金额 /// public decimal Amount { get; set; } ////// 支付方式 /// public string PaymentMethod { get; set; } ////// 交易状态 /// public string TradeStatus { get; set; } ////// 备注 /// public string Remark { get; set; } ////// 年级 /// public string Grade { get; set; } ////// 专业 /// public string Profession { get; set; } ////// 收款人 /// public string Payee { get; set; } ////// 大写金额 /// public string UppercaseAmount { get; set; } ////// 编号 /// public string Code { get; set; } }- 如上代码片段通过Exporter 特性去指定模板中的Title,当然在我们实际开发中也可以不通过该属性去做指定,毕竟我们这一块也是完全自定义的
-
怎么使用?
public async Task ExportReceipt() { var tplPath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "ExportTemplates", "receipt.cshtml"); var tpl = File.ReadAllText(tplPath); var exporter = new PdfExporter(); //此处使用默认模板导出 var result = await exporter.ExportByTemplate("test.pdf", new ReceiptInfo { Amount = 22939.43M, Grade = "2019秋", IdNo = "43062619890622xxxx", Name = "张三", Payee = "湖南心莱信息科技有限公司", PaymentMethod = "微信支付", Profession = "运动训练", Remark = "学费", TradeStatus = "已完成", TradeTime = DateTime.Now, UppercaseAmount = "贰万贰仟玖佰叁拾玖圆肆角叁分", Code = "19071800001" }, tpl); }
通过上述代码我们需要进行指定传递我们模板路径及模板内容,最终导出效果如下:
4.批量导出PDF收据
-
创建模板
@for (var i = 0; i @Model.Data.Title
NO:@Model.Data.ReceiptInfoInputs[i].Code 交易时间:@Model.Data.ReceiptInfoInputs[i].TradeTime.ToString("yyyy-MM-dd HH:mm:ss") 交款姓名 @Model.Data.ReceiptInfoInputs[i].Name 身份证号码 @Model.Data.ReceiptInfoInputs[i].IdNo 交易金额 ¥:@Model.Data.ReceiptInfoInputs[i].Amount 人民币(大写): @Model.Data.ReceiptInfoInputs[i].UppercaseAmount 收款方式 @Model.Data.ReceiptInfoInputs[i].PaymentMethod 交易状态 @Model.Data.ReceiptInfoInputs[i].TradeStatus 收款事由 @Model.Data.ReceiptInfoInputs[i].Remark 入学年级 @Model.Data.ReceiptInfoInputs[i].Grade 专业 @Model.Data.ReceiptInfoInputs[i].Profession -
创建Dto类
///
/// 批量导出Dto /// [PdfExporter(Orientation = Orientation.Portrait, PaperKind = PaperKind.A5)] public class BatchReceiptInfoDto { ////// 交易时间 /// public DateTime TradeTime { get; set; } ////// 姓名 /// public string Name { get; set; } ////// 身份证 /// public string IdNo { get; set; } ////// 金额 /// public decimal Amount { get; set; } ////// 支付方式 /// public string PaymentMethod { get; set; } ////// 交易状态 /// public string TradeStatus { get; set; } ////// 备注 /// public string Remark { get; set; } ////// 年级 /// public string Grade { get; set; } ////// 专业 /// public string Profession { get; set; } ////// 大写金额 /// public string UppercaseAmount { get; set; } ////// 编号 /// public string Code { get; set; } } -
如何使用
public async Task BathExportReceipt() { var tplPath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "ExportTemplates", "batchReceipt.cshtml"); var tpl = File.ReadAllText(tplPath); var exporter = new PdfExporter(); var input = new BatchReceiptInfoInput { Payee = "湖南心莱信息科技有限公司", ReceiptInfoInputs = new List
() }; for (var i = 0; i
通过上述代码我们需要进行指定传递我们模板路径及模板内容,最终导出效果如下:
- PdfExporterAttribute Orientation进行方向如横向或纵向
- PaperKind 纸张类型(默认A4)
Reference
https://github.com/dotnetcore/Magicodes.IE
ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
标签:教程 char str pen batch 代码执行 open utf-8 rem
原文地址:https://www.cnblogs.com/yyfh/p/12222388.html
文章标题:ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
文章链接:http://soscw.com/index.php/essay/79733.html