当前位置: 首页 > news >正文

Aspose.cells模板导出使用记录

简述

用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 MarkersWorkbook 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等设置为数据源。可根据情况选用。

http://www.lryc.cn/news/45866.html

相关文章:

  • AcWing——糖果传递
  • Redis中的单线程模型
  • Python函数默认参数设置(超级详细)
  • 人工智能如何赋能业务创新?安克创新有话要说
  • 如何学习与学习的本质
  • C++ deque容器
  • HashMap的底层原理
  • Django 4.0文档学习(四)
  • 2023年全国最新高校辅导员精选真题及答案38
  • 和ChatGPT-4聊完后,我觉得一切可能已经来不及了
  • RocketMQ 5.1 NameServer 启动流程
  • 马云回国,首谈ChatGPT
  • 深入理解C++迭代器:让你的C++代码更加灵活
  • Java 读取Excel模板中的数据到实体类
  • 【java基础】Socket网络编程
  • 转发和重定向区别
  • java面试题(持续更新)
  • 【花雕学AI】09:发挥ChatGPT最大潜力——产生高质量内容的九种方法和建议
  • 实战打靶集锦-013-Loly
  • 程序员OKR学习法
  • 【从零开始学习 UVM】6.6、UVM 激励产生 —— UVM Virtual Sequence【重要】
  • 蓝桥杯:阶乘约数
  • 最大数字
  • 【java进阶08:异常】finally关键字、自定义异常类、用户业务作业、军队武器作业
  • #课程笔记# 电路与电子技术基础 课堂笔记 第6章 半导体器件的基本特性
  • skimage.filters.apply_hysteresis_threshold详解
  • 一、基础算法5:前缀和与差分 模板题+算法模板(前缀和,子矩阵的和,差分,差分矩阵)
  • Python矩阵分解之QR分解
  • 随机森林程序
  • 每日一练2627——变态跳台阶快到碗里来不用加减乘除做加法三角形