/// <summary>
/// 测试方法:测试依据复杂模板(多工作薄,且含固定表格,可重复表格)+DataSet来生成EXCEL,只支持XLS
/// </summary>
[TestMethod]
public
void
TestExportToExcelWithTemplateByDataSet()
{
var
ds = GetDataSet();
string
templateFilePath = AppDomain.CurrentDomain.BaseDirectory +
"/mb2.xls"
;
Dictionary<
string
, SheetFormatterContainer> formatterContainerDic =
new
Dictionary<
string
, SheetFormatterContainer>();
#region 创建第一个工作薄格式化容器,并设置相关参数对应关系
SheetFormatterContainer formatterContainer1 =
new
SheetFormatterContainer();
PartFormatterBuilder partFormatterBuilder =
new
PartFormatterBuilder();
partFormatterBuilder.AddFormatter(
"school"
,
"跨越小学"
);
formatterContainer1.AppendFormatterBuilder(partFormatterBuilder);
TableFormatterBuilder<DataRow> tableFormatterBuilder =
new
TableFormatterBuilder<DataRow>(ds.Tables[0].Select(),
"lv"
);
tableFormatterBuilder.AddFormatters(
new
Dictionary<
string
, Func<DataRow,
object
>>
{
{
"lv"
,r=>r[
"Col1"
]},
{
"clscount"
,r=>r[
"Col2"
]},
{
"lvmaster"
,r=>r[
"Col3"
]}
});
formatterContainer1.AppendFormatterBuilder(tableFormatterBuilder);
RepeaterFormatterBuilder<DataRow> repeaterFormatterBuilder =
new
RepeaterFormatterBuilder<DataRow>(ds.Tables[1].Select(),
"lv_begin"
,
"lv_end"
);
repeaterFormatterBuilder.AddFormatters(
new
Dictionary<
string
, Func<DataRow,
object
>> {
{
"class"
,r=>r[
"Col1"
]},
{
"stucount"
,r=>r[
"Col2"
]},
{
"clsmaster"
,r=>r[
"Col3"
]},
{
"lvitem"
,r=>r[
"Col4"
]}
});
formatterContainer1.AppendFormatterBuilder(repeaterFormatterBuilder);
formatterContainerDic.Add(
"table1"
, formatterContainer1);
#endregion
#region 创建第二个工作薄格式化容器,并设置相关参数对应关系
SheetFormatterContainer formatterContainer2 =
new
SheetFormatterContainer();
PartFormatterBuilder partFormatterBuilder2 =
new
PartFormatterBuilder();
partFormatterBuilder2.AddFormatter(
"Title"
,
"跨越IT学员"
);
formatterContainer2.AppendFormatterBuilder(partFormatterBuilder2);
CellFormatterBuilder cellFormatterBuilder2 =
new
CellFormatterBuilder();
cellFormatterBuilder2.AddFormatter(
"rptdate"
, DateTime.Today.ToString(
"yyyy-MM-dd HH:mm"
));
formatterContainer2.AppendFormatterBuilder(cellFormatterBuilder2);
TableFormatterBuilder<DataRow> tableFormatterBuilder2 =
new
TableFormatterBuilder<DataRow>(ds.Tables[2].Select(),
"name"
);
tableFormatterBuilder2.AddFormatters(
new
Dictionary<
string
, Func<DataRow,
object
>>{
{
"name"
,r=>r[
"Col1"
]},
{
"sex"
,r=>r[
"Col2"
]},
{
"km"
,r=>r[
"Col3"
]},
{
"score"
,r=>r[
"Col4"
]},
{
"result"
,r=>r[
"Col5"
]}
});
formatterContainer2.AppendFormatterBuilder(tableFormatterBuilder2);
formatterContainerDic.Add(
"table2"
, formatterContainer2);
#endregion
string
excelPath = ExcelUtility.Export.ToExcelWithTemplate(templateFilePath, formatterContainerDic);
Assert.IsTrue(File.Exists(excelPath));
}