Magicodes.IE之Excel模板导出教材订购表

说明

本教程主要说明如果使用Magicodes.IE.Excel完成教材订购表的Excel模板导出。

要点

  • 本教程使用Magicodes.IE.Excel来完成Excel模板导出
  • 需要通过创建Dto来完成导出
  • 需要按要求准备Excel模板

主要步骤

1.安装包Magicodes.IE.Excel

在本篇教程中,我们仅演示使用Excel来完成学生数据的导入。我们需要在已准备好的工程中安装以下包,参考命令如下所示:

Install-Package Magicodes.IE.Excel

2.准备模板

Magicodes.IE.Excel模板导出支持单元格渲染和表格渲染:

  • 单元格渲染

    语法:

    {{Company}}             (教学单位名称)2020年春季教材订购明细

    注意:

    • 双大括号是必须的
    • 暂不支持表达式等
    • 支持子对象属性
    • 大小写敏感
  • 表格渲染

表格渲染的格式如上所述:

  • 渲染语法以“Table>>BookInfos|”为开始,其中“BookInfos”为列表属性
  • “RowNo”、“No”等均为列表字段
  • 必须以“|>>Table”结尾
  • 暂不支持一行多个Table(即将支持,具体请查看日志)

根据以上语法,我们可以编写模板如下所示:

3.创建导出Dto

主要代码如下所示:

  • 教材订购信息Dto

    /// <summary>
        /// 教材订购信息
        /// </summary>
        public class TextbookOrderInfo
        {
            /// <summary>
            /// 公司名称
            /// </summary>
            public string Company { get; }
    
            /// <summary>
            /// 地址
            /// </summary>
            public string Address { get; }
    
            /// <summary>
            /// 联系人
            /// </summary>
            public string Contact { get; }
    
            /// <summary>
            /// 电话
            /// </summary>
            public string Tel { get; }
    
            /// <summary>
            /// 制表人
            /// </summary>
            public string Watchmaker { get; }
    
            /// <summary>
            /// 时间
            /// </summary>
            public string Time { get; }
    
            /// <summary>
            /// 教材信息列表
            /// </summary>
            public List<BookInfo> BookInfos { get; }
    
            public TextbookOrderInfo(string company, string address, string contact, string tel, string watchmaker, string time, List<BookInfo> bookInfo)
            {
                Company = company;
                Address = address;
                Contact = contact;
                Tel = tel;
                Watchmaker = watchmaker;
                Time = time;
                BookInfos = bookInfo;
            }
        }

    如上述代码所示,定义的结构基本上和模板一致。其中属性BookInfos对应列表,具体定义如下所示。

  • 教材信息Dto:
    /// <summary>
        /// 教材信息
        /// </summary>
        public class BookInfo
        {
            /// <summary>
            /// 行号
            /// </summary>
            public int RowNo { get; }
    
            /// <summary>
            /// 书号
            /// </summary>
            public string No { get; }
    
            /// <summary>
            /// 书名
            /// </summary>
            public string Name { get; }
    
            /// <summary>
            /// 主编
            /// </summary>
            public string EditorInChief { get; }
    
            /// <summary>
            /// 出版社
            /// </summary>
            public string PublishingHouse { get; }
    
            /// <summary>
            /// 定价
            /// </summary>
            public string Price { get; }
    
            /// <summary>
            /// 采购数量
            /// </summary>
            public int PurchaseQuantity { get; }
    
            /// <summary>
            /// 备注
            /// </summary>
            public string Remark { get; }
    
            public BookInfo(int rowNo, string no, string name, string editorInChief, string publishingHouse, string price, int purchaseQuantity, string remark)
            {
                RowNo = rowNo;
                No = no;
                Name = name;
                EditorInChief = editorInChief;
                PublishingHouse = publishingHouse;
                Price = price;
                PurchaseQuantity = purchaseQuantity;
                Remark = remark;
            }
        }

4.导出

接下来直接调用Magicodes.IE.Excel封装的模板导出方法,该方法实现自接口IExportFileByTemplate:

 /// <summary>
    /// 根据模板导出文件
    /// </summary>
    public interface IExportFileByTemplate
    {
        /// <summary>
        ///     根据模板导出
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="fileName"></param>
        /// <param name="data"></param>
        /// <param name="template">HTML模板或模板路径</param>
        /// <returns></returns>
        Task<ExportFileInfo> ExportByTemplate<T>(string fileName, T data,
            string template) where T : class;
    }

通过以上方法中的ExportByTemplate,我们就可以完成Excel模板导出。具体使用可以参考以下单元测试:

[Fact(DisplayName = "Excel模板导出教材订购明细样表")]
public async Task ExportByTemplate_Test()
{
    //模板路径
    var tplPath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "ExportTemplates",
        "2020年春季教材订购明细样表.xlsx");
    //创建Excel导出对象
    IExportFileByTemplate exporter = new ExcelExporter();
    //导出路径
    var filePath = Path.Combine(Directory.GetCurrentDirectory(), nameof(ExportByTemplate_Test) + ".xlsx");
    if (File.Exists(filePath)) File.Delete(filePath);
    //根据模板导出
    await exporter.ExportByTemplate(filePath,
        new TextbookOrderInfo("湖南心莱信息科技有限公司", "湖南长沙岳麓区", "雪雁", "1367197xxxx", "雪雁", DateTime.Now.ToLongDateString(),
            new List<BookInfo>()
            {
                new BookInfo(1, "0000000001", "《XX从入门到放弃》", "张三", "机械工业出版社", "3.14", 100, "备注"),
                new BookInfo(2, "0000000002", "《XX从入门到放弃》", "张三", "机械工业出版社", "3.14", 100, "备注"),
                new BookInfo(3, "0000000003", "《XX从入门到放弃》", "张三", "机械工业出版社", "3.14", 100, "备注")
            }),
        tplPath);
}

结果如下图所示:

最后

整个Excel模板导出教程就此结束了,由于仓促完成,还有许多地方可以改善并优化。

相关库会一直更新,在功能体验上有可能会和本文教程有细微的出入,请以相关具体代码、版本日志、单元测试示例为准。

编程交流群<85318032>,产品交流群<897857351>。

原文地址:https://www.cnblogs.com/codelove/p/12187037.html

时间: 2024-11-09 00:35:58

Magicodes.IE之Excel模板导出教材订购表的相关文章

kettle 使用excel模板导出数据

通过excel进行高速开发报表: 建设思路: 1.首先制订相关的execl模板. 2.通过etl工具(kettle)能够高速的 将数据库中的数据按excel模板导出成新的excel就可以. 当中kettle 按excel模板导出excel 能够參考: http://type-exit.org/adventures-with-open-source-bi/2010/12/using-the-excel-writer-step/ 或可在我的资源中找.

C# Winform Excel的导出,根据excel模板导出数据

namespace dxhbskymDemo { public partial class ExcelForm : DevExpress.XtraEditors.XtraForm { public ExcelForm() { InitializeComponent(); } #region 导出Excel //导出按钮 private void sbtnDaochu_Click(object sender, EventArgs e) { string fileName = "";//要

Net 自定义Excel模板导出数据

转载自:http://www.cnblogs.com/jbps/p/3549671.html?utm_source=tuicool&utm_medium=referral 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using Aspos

按照word/Excel模板导出word/excel

最近项目要实现下载打印的功能,想了想,用水晶报表实在是大材小用, 用office组件直接就可以实现这一功能. 引用类 using Microsoft.Office.Interop.Word; 建立两个实体类 一个是导出word需要替换内容的配置,一个是替换内容的实体 public class AgentInfoEntity     {                 private string comname; public string ComName         {          

EasyPoi 模板语法介绍,POI 的Excel模板导出

现在模板基本上可以完美执行代码了,可以代替之前的注解玩耍了,在报表什么的运用中可以达成客户的要求了 只要在几个语法和注解类型上处理就基本上不需要写代码了哈哈 1.基础替换 {{key}} 根据key来替换 ,key支持 .操作比如 foo.boo.name 这种取值 {{key}} 默认为String类型,cell的格式也是String 2.N:{{key}} 功能可上面一致, 但是N: 表示这个cell是数值类型,代码会这样写 //如何是数值 类型,就按照数值类型进行设置 if (isNumb

JXLS模板导出EXCEL

最近做要做一些报表导出的功能,由于表格内容比较复杂,直接生成excel比较麻烦,所以采用模板的方式来做,可惜自己不了解,也证明了自己技术有多差!通过多次资料,终于找到了适合自己的方法.特此记录,方便以后查找. maven用到的包  <dependency>     <groupId>net.sf.jxls</groupId>     <artifactId>jxls-core</artifactId>     <version>1.0

PHP版另类EXCEL导出,按模板导出!

PHP版另类EXCEL导出,按模板导出! 特点: 不需要使用插件!而且支持导出非常好看的Excel! 实例截图: 步骤: 1.找到一个Excel,并将其另存为xml格式 2.修改xml格式文件,中间将 数据部分 替换成PHP代码 3.然后在导出将 该xml 文件用 include引入到系统内,可以得到xml的数据字符串 // 执行文件得到内容 ob_start(); include $file; return ob_get_clean(); 4.最后将这些字符串写入到 xls文件里即可! 参考实

.Net常用技巧_调用Excel模板格式导出Excel

object missing = System.Reflection.Missing.Value;  //表示缺i省object SaveFileDialog savedialog = new SaveFileDialog(); savedialog.Filter = "(*.xlsx)|*.xlsx|(*.xls)|*.xls"; savedialog.Title = "导成Excel"; if (savedialog.ShowDialog() == Dialog

aspose.cells根据模板导出excel

又隔十多天没写博客了,最近都在忙项目的事情,公司人事变动也比较大,手头上就又多了一个项目.最近做用aspose.cells根据模板导出excel报价单的功能,顺便把相关的核心记下来,先上模板和导出的效果图吧,如下: 导出效果图(看到产品图,打不死的程(diao)序(si)员(猿)骚动吧,有没有不禁看了看自己粗大的右手): (其中红色框框起来的是动态填充的内容,工作薄名(产品信息)也是动态输出的) 模板如下: 大概流程是这样,先把需要输出到excel的内容存到一个model里面,然后把该model