public void TestInsertPic2()
        {
            string templateFilePath = AppDomain.CurrentDomain.BaseDirectory + "/pic.xls";             //获得EXCEL模板路径
            SheetFormatterContainer formatterContainers = new SheetFormatterContainer();              //实例化一个模板数据格式化容器

            string picPath = AppDomain.CurrentDomain.BaseDirectory + "\\tz.png";                      //图片路径

            PictureWithShapeFormatterBuilder pictureBuilder = new PictureWithShapeFormatterBuilder(); //实例化一个图片关联图形格式化器

            pictureBuilder.AddFormatter(picPath);
            formatterContainers.AppendFormatterBuilder(pictureBuilder);

            string excelPath = Export.ToExcelWithTemplate(templateFilePath, "pic", formatterContainers);

            Assert.IsTrue(File.Exists(excelPath));
        }
        public void TestInsertPic()
        {
            DataTable dt = GetDataTable();                                                      //获取数据
            string    templateFilePath = AppDomain.CurrentDomain.BaseDirectory + "/excel.xlsx"; //获得EXCEL模板路径
            SheetFormatterContainer formatterContainers = new SheetFormatterContainer();        //实例化一个模板数据格式化容器


            PartFormatterBuilder partFormatterBuilder = new PartFormatterBuilder();                    //实例化一个局部元素格式化器

            partFormatterBuilder.AddFormatter("Title", "跨越IT学员");                                      //将模板表格中Title的值设置为跨越IT学员d
            formatterContainers.AppendFormatterBuilder(partFormatterBuilder);                          //添加到工作薄格式容器中,注意只有添加进去了才会生效

            CellFormatterBuilder cellFormatterBuilder = new CellFormatterBuilder();                    //实例化一个单元格格式化器

            cellFormatterBuilder.AddFormatter("rptdate", DateTime.Today.ToString("yyyy-MM-dd HH:mm")); //将模板表格中rptdate的值设置为当前日期
            formatterContainers.AppendFormatterBuilder(cellFormatterBuilder);                          //添加到工作薄格式容器中,注意只有添加进去了才会生效

            //实例化一个表格格式化器,dt.Select()是将DataTable转换成DataRow[],name表示的模板表格中第一行第一个单元格要填充的数据参数名
            TableFormatterBuilder <DataRow> tableFormatterBuilder = new TableFormatterBuilder <DataRow>(dt.Select(), "name");

            tableFormatterBuilder.AddFormatters(new Dictionary <string, Func <DataRow, object> > {
                { "name", r => r["Col1"] },  //将模板表格中name对应DataTable中的列Col1
                { "sex", r => r["Col2"] },   //将模板表格中sex对应DataTable中的列Col2
                { "km", r => r["Col3"] },    //将模板表格中km对应DataTable中的列Col3
                { "score", r => r["Col4"] }, //将模板表格中score对应DataTable中的列Col4
                { "result", r => r["Col5"] }//将模板表格中result对应DataTable中的列Co5
            });
            formatterContainers.AppendFormatterBuilder(tableFormatterBuilder);//添加到工作薄格式容器中,注意只有添加进去了才会生效


            string picPath = AppDomain.CurrentDomain.BaseDirectory + "\\tz.png";                      //图片路径

            PictureWithShapeFormatterBuilder pictureBuilder = new PictureWithShapeFormatterBuilder(); //实例化一个图片关联图形格式化器

            pictureBuilder.AddFormatter(picPath);                                                     //当sheet中只有一个图形时,我们可以省略指定区域,那么默认就是把整个工作薄区域当成一个寻找图形区域,若sheet中包含多个,则应指定区域,如下语句
            //pictureBuilder.AddFormatter(picPath,5,60000, 0, 3, false);//第一个参数为图片路径,中间4个参数为数字型指定图形寻找的工作薄区域(行索引,列索引,索引从0开始计),最后一个为是否自适应大小,一般不建议使用,除非压缩图片

            //pictureBuilder.AddFormatter(picPath, 5, 60000, 0, 255, false);//图形可能下移,可能右移,那么将结束行设为可能最大值:60000,结束列设为可能最大值:255

            //pictureBuilder.AddFormatter(new PictureWithShapeInfo(picPath, new SheetRange() {MinRow=5,MinColumn=0 },false));//此处只指定开始行与开始列,与上面差不多,但建议使用上面的用法

            formatterContainers.AppendFormatterBuilder(pictureBuilder);

            string excelPath = Export.ToExcelWithTemplate(templateFilePath, "table", formatterContainers);

            Assert.IsTrue(File.Exists(excelPath));
        }