# Export API
API 1.1 导出Word/PDF/PNG
- 根据Word模版(docx格式),填充表单数据并导出为docx或pdf或png文件。
- png文件每页一个
# Format:
POST /{format}?template={url}&data={json}&fields={json}&page={integer}
1
# Parameters:
# format: {string}
- 只支持docx或pdf
# data: key-value(string-object) map
- 其中key即为下面的fields的name
- 具体说明可参考 FormData 的"数据表示"=>"传输数据"
- 图片请使用url或InfoPlus的File格式(JSON),如:{ "name":"avatar.png", "uri":"http://example.com/a.png" }
- 物品类型(Thing,在fields的type中定义)数据,将按条形码图片方式导出
# fields:
- 给出所有涉及到的字段列表,定义如下:
[{
"name":{string}, // 字段的name
"type":{string}, // 可枚举,具体请参见 [Controls](Controls)中定义的所有数据类型
"label":{string}, // 仅对Excel导出:该字段描述性质的标签
"merge":{boolean}, // 仅对Excel导出:该列是否自动合并单元格,默认false
"groupName":{string}, // 仅对Word/PDF导出:格式形如:"Resume//groupStudy",表示一层重复节
}]
1
2
3
4
5
6
7
2
3
4
5
6
7
# template: {uri}
- 表单模版的地址,要求可被ExportAPI访问到。
# page: {integer}
- 仅返回指定页的内容,仅对图片格式有效,0下标。
# HTTP Header: Accept
- 根据Accept不同,返回文件流或者json格式的meta信息。仅 “Accept: application/json” 时,返回meta信息如下:
{
"files": // 导出后的文件列表
[{
"uri":{string}, // 文件链接地址
"page":{integetr} // 第几页,0下标,仅对图片格式有效
}]
}
1
2
3
4
5
6
7
2
3
4
5
6
7
- png等图片格式,按流返回时,按page参数(默认0)返回指定页的图片。
# 返回值因Response的状态码而异:
- 200:返回导出后的文件下载(文件的二进制流)
- 400:Bad Request/参数错误,返回错误JSON格式为"Response",参见InfoPlusAPI中的Data Types节
- 403:没有权限使用此API
- 500:服务端导出失败,返回JSON格式同上
# Word template design
在Word模版文件中,通过插入如特定格式的文本来相应功能。
# 格式1:${fieldXXX} 或 ${XXX}
- ExportAPI会将此替换为表单数据(data)中的对应字段的值
# 格式2:${groupXXX} 或 书签 "groupXXX"
- 必须是某个表格的某行的第一个单元格,表明此表格为重复表/节
- 重复的列区域:表格的所有列
- 重复的行区域:是此标签所在的行到此表格的最后一行
# 格式3:==${variable}==
- 表明此处是一个可选节的开始,到下一个同样标记结束,必须成对出现
- variable可以是可以是任何data中可以查询到的变量,包括表单变量
- variable的值必须为boolean,默认为true,表明此可选节是否可见
# 格式4:${fieldXXX:format} 或 ${XXX:format}
- 2019/12/16 新增
- 仅支持date或datetime类型
- format 参数格式参考:.NET Custom date and time format strings (opens new window) 举例:${fieldDate:yyyy-MM-dd HH:mm:ss},${field1:yyyy}
# API 1.2 导出到Excel
- 根据数据直接产生Excel文件,Excel模板可以给出也可不给
# Format
POST /xlsx?template={url}&data={object[][]}&fields={json}&label={boolean}&row={int}&column={int}
1
# Parameters:
# template:{url}
- Excel模板地址,比如包括给ExportAPI可访问
# data:{object[][]}
- 格式: 二维数组,但数据类型可能有所不同
# fields:{json}
- 可选。
- 具体格式参见前面章节
- fields的下标和data的最右便下标匹配
- 当merge=true时,API会自动把null值对应的单元格和上面的格子合并
# label:{boolean}
- 可选,默认为false。当label=true时,第一行为标题栏,显示fields的label字段
# row/column:{int}
- 可选,启始行、列的位置,0下标。默认是0,0
# 举例:
# POST /xlsx
# 参数:
- data=[ [1,"hello"], [2,null], [3,"world"] ]
- fields=[ {"name":"index","type":"integer","label":"序号",merge":true}, {"name":"index","label":"内容"} ]
- label=true
- row=2,column=1
# 导出结果为:
序号 | 内容 | |
1 | Hello | |
2 | ||
3 | World |