ASP.NET 开源导入导出库Magicodes.IE Docker中使用
Magicodes.IE在Docker中使用
更新历史
2019.02.13
【Nuget】版本更新到2.0.2
【导入】修复单列导入的Bug,单元测试“OneColumnImporter_Test”。问题见(https://github.com/dotnetcore/Magicodes.IE/issues/35)。
【导出】修复导出HTML、Pdf、Word时,模板在某些情况下编译报错的问题。
【导入】重写空行检查。
2019.02.14
【Nuget】版本更新到2.1.0
【导出】PDF导出支持.NET 4.6.1,具体见单元测试
说明
本章主要说明使用Magicodes.IE,在Docker环境中的配置.
要点
- 通过Dto进行Excel导出
- 导出PDF数据
- Docker配置
示例
导出示例:
Install-Package Magicodes.IE.ExcelInstall-Package Magicodes.IE.Pdf
- 导出Excel
[ExcelExporter(Name = "学生信息", TableStyle = "Light10", AutoFitAllColumn = true, MaxRowNumberOnASheet = 2)] public class StudentExcel { /// <summary> /// 姓名 /// </summary> [ExporterHeader(DisplayName = "姓名")] public string Name { get; set; } /// <summary> /// 年龄 /// </summary> [ExporterHeader(DisplayName = "年龄")] public int Age { get; set; } /// <summary> /// 备注 /// </summary> public string Remarks { get; set; } /// <summary> /// 出生日期 /// </summary> [ExporterHeader(DisplayName = "出生日期", Format = "yyyy-mm-DD")] public DateTime Birthday { get; set; } }
public async Task<IActionResult> ExporterExcel() { IExporter exporter = new ExcelExporter(); var result = await exporter.Export(Path.Combine("wwwroot","test.xlsx"), new List<StudentExcel>() { new StudentExcel { Name = "MR.A", Age = 18, Remarks = "我叫MR.A,今年18岁", Birthday=DateTime.Now }, new StudentExcel { Name = "MR.B", Age = 19, Remarks = "我叫MR.B,今年19岁", Birthday=DateTime.Now }, new StudentExcel { Name = "MR.C", Age = 20, Remarks = "我叫MR.C,今年20岁", Birthday=DateTime.Now } }); return File("test.xlsx", "application/ms-excel", result.FileName); }
- 导出PDF
[PdfExporter(Name = "学生信息")] public class StudentPdf { /// <summary> /// 姓名 /// </summary> [ExporterHeader(DisplayName = "姓名")] public string Name { get; set; } /// <summary> /// 年龄 /// </summary> [ExporterHeader(DisplayName = "年龄")] public int Age { get; set; } /// <summary> /// 备注 /// </summary> public string Remarks { get; set; } /// <summary> /// 出生日期 /// </summary> [ExporterHeader(DisplayName = "出生日期", Format = "yyyy-mm-DD")] public DateTime Birthday { get; set; } }
public async Task<IActionResult> ExporterPdf() { var exporter = new PdfExporter(); var result = await exporter.ExportListByTemplate(Path.Combine("wwwroot", "test.pdf"), new List<StudentPdf>() { new StudentPdf { Name = "MR.A", Age = 18, Remarks = "我叫MR.A,今年18岁", Birthday=DateTime.Now }, new StudentPdf { Name = "MR.B", Age = 19, Remarks = "我叫MR.B,今年19岁", Birthday=DateTime.Now }, new StudentPdf { Name = "MR.C", Age = 20, Remarks = "我叫MR.C,今年20岁", Birthday=DateTime.Now } }); return File("test.pdf", "application/pdf", result.FileName); }
通过上述代码我们创建了一个导出示例,
具体特性属性可以看一下前两篇文章 基础教程之导出Excel 、基础教程之导出Pdf收据
Dockerfile配置
FROM ccr.ccs.tencentyun.com/magicodes/aspnetcore-runtime:latest AS base# 安装libgdiplus库,用于Excel导出#RUN apt-get update && apt-get install -y libgdiplus libc6-dev#RUN ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll#RUN apt-get update && apt-get install -y fontconfigWORKDIR /srcRUN lsCOPY /src/Magicodes.IE.Exporter/simsun.ttc /usr/share/fonts/simsun.ttcWORKDIR /appEXPOSE 80EXPOSE 443FROM mcr.microsoft.com/dotnet/core/sdk:latest AS buildWORKDIR /srcCOPY ["Magicodes.IE.Exporter.csproj", "src/Magicodes.IE.Exporter/"]RUN dotnet restore "src/Magicodes.IE.Exporter/Magicodes.IE.Exporter.csproj"COPY . .WORKDIR "src/Magicodes.IE.Exporter"RUN dotnet build "Magicodes.IE.Exporter.csproj" -c Release -o /app/buildFROM build AS publishRUN dotnet publish "Magicodes.IE.Exporter.csproj" -c Release -o /app/publishFROM base AS finalWORKDIR /appCOPY --from= publish /app/publish .ENTRYPOINT ["dotnet", "Magicodes.IE.Exporter.dll"]
# 安装libgdiplus库,用于Excel导出RUN apt-get update && apt-get install -y libgdiplus libc6-devRUN ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
# 安装fontconfig库,用于Pdf导出RUN apt-get update && apt-get install -y fontconfigCOPY /simsun.ttc /usr/share/fonts/simsun.ttc
注意,以上基础镜像使用:(ccr.ccs.tencentyun.com/magicodes/aspnetcore-runtime:latest) ,该镜像GitHub地址:(https://github.com/xin-lai/aspnetcore-docker)。
推荐理由:
- 加快镜像构建和拉取速度,加速CI\CD构建以及提高开发体验
- 时区默认设置为东八区,见“ENV TZ=Asia/Shanghai”
- 默认安装了libgdiplus等库,以便支持Excel导入导出
- 目前提供了腾讯云的公共镜像和hub.docker的公共镜像,大家可以按需
Reference
https://github.com/dotnetcore/Magicodes.IE
https://github.com/hueifeng/BlogSample/tree/master/src/Magicodes.IE.Exporter
赞 (0)