标签:开始 pcs wfs 含义 psk ipy SOS v2p rtl
根据指定格式的JSON
文件生成对应的excel
文件,需求如下
由于是生成Excel文件,这里值考虑生成xlsx格式的Excel文件,数据多表头默认考虑使用 | 表示,不在使用colspan rowspan作为。如需要表示两列两行,第一列合并表头格式为: A|B,A|C生成的表格为
A B C 前端通过post的方式将需要生成的数据构造成符合要求的JSON文件提交跟后台。根据以上需求定义JSON格式如下
{ "saveName": "生成Excel的文件名.xlsx", "userStyles": [{ "id": "1", //不能出现重复,在需要设置单元样式的地方,可以直接将style赋值为此值 "style": { "font": { //设置字体基本格式 "blod": true,//是否加粗 "italic": true, //是否倾斜 "color": "#FF0000",//字体颜色 "name": "微软雅黑", //字体名称 "height": 20 //大小 }, "fmtStr": "", //单元格格式,#,##0.00_);#,##0.00;0 千分位 "align": "",//水平对齐方式 left right center "valign": "",//垂直对齐方式 top center bottom "borderColor": "", //设置边框颜色 如 #FF0000 "bgColor": "" //设置单元格填充颜色 } }], "sheets": [{ "sheetName": "", //sheet名称 "title": [], // 对应Sheet标题区域数据 "titleMerge": [], //对应Sheet标题区域合并信息 "head": [{}], //表头信息 "data": [], //数据信息 "dataMerge": [], //数据合并信息 "foot": [], //表尾信息 "footMerge": [], //表尾合并信息 "img": [] //图片信息,需要将图片转换base64 }] }
简要说明
{ "name": "A|B", //表头名称,多表头用|分割 "type": "str", //此列数据类型 str num ,在excel中日期也是数字类型,通过fmtStr,显示为日期格式 "field": "F_FIELD1", //备用字段,可不用 "style": { //此列数据为列默认样式,可以是Style对象,也可以是在userStyles中定义的id值 "align": "center" } }
{ "value": "", //单元格具体的值 "type": "", //单元格类型,默认str "style": {} //单元格样式 可以是Style对象,也可以是在userStyles中定义的id值,如果没设置,默认取head总此列对应的style }
"开始行,结束行,开始列,结束列"
,索引从0开始。如在title中有两行三列数据,现在需要合并一行两列数据对应的值为"0,0,0,1"
{ "col": 1, //图片开始列 "row": 0, //开始行 "colSpan": 1,//列跨度,最小值1 "rowSpan": 2, //行跨度,最小值1 "data": "" //base64图片数据如: "data:image/png;base64,iVBO...ggg==" }
07以后的Excle文件,其实是一个压缩包,里边是一个个的xml文件,其中每一个sheet是一个xml文件,样式是一个xml文件,图片是对应的图片文件,放在media文件夹中,所以,代码思路依次为
功能入口如下
生成单元格样式对象,包括字体
边框
背景
对齐方式
创建字体样式
处理表头,表过多表头处理,采用 | 分割的方式,传入head长度为列数据,name中有几个 | 就知道表头有几行。所以针对表头处理有以下几个步骤
添加图片,默认采用单元格描点方式,将图片固定指定的单元格区域内
这次通过传入JSON对象生成样式丰富的excel文件,对于POI操作office文档又更加熟悉一些。相对于解析excel文档,生成就不用考虑文件格式,如:兼容2003格式,考虑大文件sax方式解析。相对于js前端生成excel文件,增加了对生成后文件二次加工的可能性,所以在功能入口中,采用了生成二进制流的方式。文件生成好后,可以继续发送邮件,上传ftp等操作。
重点说明
标签:开始 pcs wfs 含义 psk ipy SOS v2p rtl
原文地址:https://www.cnblogs.com/xusongfeng/p/9264164.html