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)); }