背景
前段时间因一个需求后端无法完成,所以交给前端来实现,导出表格,需要实现:
1、支持多个sheet,并且有自己的name
2、根据要求合并单元格,设置单元格的宽高
3、在表格内有各自的二维码
4、打印的页边距为左右各0.5cm
5、打印多页的话,固定表头
6、设置页脚
实现
导出后,如下图所示:
源码
https://github.com/pangpangni...
略凌乱,欢迎指正及优化。
思路
用现有的js导出excel的插件,无法实现,所以只能手写各种样式代码;
关于打印、页脚之类无从下手的要求,需要导出后,复制一份,原文件拖进sublime,查看源码,复制的那份用wps打开,设置打印、页脚。然后复制的那份拖进sublime,对比两个文件的代码有什么不同,就基本可以知道打印、页脚的代码。
Bug
1、只能用wps打开,如果用excel打开的话,会报错
2、wps打开后,如果修改了内容,保存后再打开,二维码消失
重点代码
1、设置页脚及页边距
<style>
<!-- @page
{mso-footer-data:"&C\\7B2C &P \\9875\\FF0C\\5171 &N \\9875";
margin:0.748in 0.195in 0.748in 0.195in;
mso-header-margin:0.51in;
mso-footer-margin:0.51in;}
-->
</style>
2、文字折行
<td colspan="4" style="font-size:13px;vertical-align:middle;">
送货人:
<br style='mso-data-placement:same-cell;'/>
<br style='mso-data-placement:same-cell;'/>
日 期 :
</td>
3、打印固定表头
<x:ExcelName>
<x:Name>Print_Titles</x:Name>
<x:SheetIndex>1</x:SheetIndex>
<x:Formula>=3D'2773'!$1:$7</x:Formula>
</x:ExcelName>
<x:ExcelName>
<x:Name>Print_Titles</x:Name>
<x:SheetIndex>1</x:SheetIndex>
<x:Formula>=3D'2773'!$1:7</x:Formula>
</x:ExcelName>
4、插入图片
目前只支持插入转成base64的图
<img src=3D'code2773.xml' />
------BOUNDARY_0008----
Content-Location: file:///C:/0E8D990C/SongHuoDan/code2773.xml
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
iVBORw0KGgoA...省略掉...Qn9mxgAAAABJRU5ErkJggg==
------BOUNDARY_0008----
Content-Location: file:///C:/0E8D990C/SongHuoDan/code2774.xml
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
其他的请自行摸索……
注意
1、请严格按照格式拼接代码(空格、空行等)
2、注意分割线boundary="----BOUNDARY_0008----"
,BOUNDARY_0008可以改成别的
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。