简述
用Aspose.cells导出可以方便地将数据到Excel文档中,简单的直接将DataTable列表写入即可,复杂的格式一般会先做好模板,再将数据填充进去,这样可以保持设置好的样式,又能快速填充内容,十分方便。
智能标记
用于让 Aspose.Cells 知道在 Microsoft Excel 设计器电子表格中放置哪些信息。智能标记允许您创建仅包含特定信息和格式的模板。
所有智能标记都以 &= 开头。 &=Party.FullName 是数据标记的示例。如果数据标记产生多个项目,例如,一个完整的行,则随后的行会自动向下移动以为新信息腾出空间。因此,小计和总计可以放在数据标记之后的行上,以根据插入的数据进行计算。要对插入的行进行计算,请使用动态公式.
智能标记包括数据源和字段名称大多数信息的部分。特殊信息也可以与变量和变量数组一起传递。变量始终只填充一个单元格,而变量数组可能填充多个单元格。每个细胞只使用一个数据标记。未使用的智能标记将被删除。
智能标记也可能包含参数。参数允许您修改信息的布局方式。它们作为逗号分隔列表附加到括号中的智能标记的末尾。
智能标记选项
&=数据源.字段名
&=[数据源].[字段名]
&=$变量名
&=$变量数组
&==动态公式
&=&=重复动态公式
动态公式
动态公式允许您将 Excel 公式插入到单元格中,即使公式引用了将在导出过程中插入的行。动态公式可以为每个插入的行重复或仅使用放置数据标记的单元格。
动态公式允许以下附加选项:
- r - 当前行号。
- 2, -1 - 当前行号的偏移量。
例如:&=&=B{-1}/C{-1}~(skip:1)
在动态公式标记中,“-1”分别表示B列和C列到当前行的偏移量,将设置除法运算,skip参数为一行。此外,我们应该指定以下字符:"~"
作为分隔符以在动态公式中应用更多参数。
以下屏幕截图说明了一个重复的动态公式和生成的 Excel 工作表。
模板文件 | 输出文件 |
---|---|
| |
Cell “C1”包含公式A1*B1 ,单元格“C2”包含A2*B2单元格“C3”包含A3*B3. |
详细介绍可以参考官方说明
模板设置
先按照普通excel文档进行框架设置,要变化的部分根据Aspose.cells的预设格式(SmartMakers)进行编写。
示例如下图:
对于普通的单个变量,格式为&=$前缀,后面跟上变量名即可。
对于列表变量,前缀为&=,后面填写变量名.字段名,例如:&=[bom].cInvName,表名、字段名如果有特殊字符则用[]包裹,如果没有则可以省略。
如果有主从表的,按表名+字段填入即可,例如上图中上半部分是主表的,也可以使用&=[master].field格式来设置,不用分开传多个变量。
基本代码框架
string dataDir = "";
// Instantiate the workbook from a template file that contains Smart Markers
Workbook designer = new Workbook(dataDir + "模板文件,修改成自己的.xlsx");
DataTable dt = new DataTable(); //修改为自己的数据源
// 设置表名,对应智能标记中的表名
dt.TableName = "Report";
// 创建设计器
WorkbookDesigner d = new WorkbookDesigner();
// 关联文档
d.Workbook = designer;
// 设置数据源
d.SetDataSource(dt);
// 执行合并
d.Process();
// S保存文档
designer.Save(dataDir + "output.xlsx", SaveFormat.Xlsx);
其中SetDataSource的重载共有9个,可以将普通数据、DataSet、DataTable、DataView、DataReader、List等设置为数据源。可根据情况选用。