Luckysheet中打印功能的一种实现方案

关于luckysheet

luckysheet是一款在网页端实现类似excel功能的js组件,其功能相对比较丰富,配置简单而且开源。然后对于部分比较关键功能,官方api却不怎么完善,比如打印功能。

实现思路

luckysheet官方文档中,其中一个接口为getRangeHtml,该接口作用为复制指定区域内单元格的html格式数据,文档如下:getRangeHtml
其实可以通过该方法获取对应区域内的html格式数据,然后拼接只一div中,接着打印该div内容即可。

代码实现

HTML:


<!--    打印按钮区域-->
    <div id="button-area">
        <button id="print-button" onclick="to_print()">打印</button>
    </div>
<!--    打印内容区域,默认不显示,点击打印后才显示-->
    <div id="print-area" style="display: none;">
        <div class="noprint">
            <button id="confirm-button" onclick="print()">确认打印</button>
        </div>
        <div id="print-html"></div>
    </div>
<!--    luckysheet容器-->
	<div id="luckysheet" style="margin:0px;padding:0px;position:absolute;width:100%;height:100%;left: 0px;top: 50px;"></div>

JS:

		// 打印方法
		// 打印时,获取luckysheet指定区域html内容,拼接至div,隐藏luckysheet容器并显示打印区域html
        function to_print() {
            const html = luckysheet.getRangeHtml();
            document.querySelector('#print-html').innerHTML = html;
            document.querySelector('#print-area').style.display = 'block';
            document.querySelector('#button-area').style.display = 'none';
            document.querySelector('#luckysheet').style.display = 'none';
        }

CSS:


    <style type="text/css" media="print">
    	// 隐藏打印区域按钮
        .noprint {
            display: none;
        }
    </style>
    <style type="text/css">
    	// 合并打印区域table边框
        table {
            border-collapse: collapse;
        }
    </style>

最终效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后记

对于以上方式实现的打印效果,实际效果并不理想,如:

  1. 当一个单元格内内容有多种格式时(有些字符设置为红色,有些字符设置为蓝色),实际打印时,单元格内容无法出来为空,原因为getRangeHtml无法获取到正确的html内容。
  2. 另外对于目标区域范围太大(宽度过大)的情况,打印出来的结果无法横向分页,导致打印效果不够理想

总体来说,以上方式只是实现了一种相对于比较简单的打印方式,寄希望于luckysheet团队早日开发官方的打印功能。

感谢luckysheet

最后感谢luckysheet团队能够带来这么优秀的产品。
附上luckysheet的gitee库地址:https://gitee.com/mengshukeji/Luckysheet

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1.扫描表格 把原表格放入扫描仪,扫描分辨率设定为100dpi、缩放比设为100、模式为黑白文本。在预览图形上调整扫描区域框使它尽量靠近表格边框,你也可以在扫描后再用图形处理软件进行修剪,去除表格周围的空白,再将扫描的图像处理后保存好。 如果在表格外也要填写的话,那么在扫描前最好先用铅笔在原表格上画一个边框,作为扫描后修剪和量取页边距的依据。 2.设置背景 启动Excel 2003,单击菜单栏的“格式/工作表/背景…”,打开工作表背景对话框,找到刚才保存的表格图像,设定为背景。单击工具栏上显示比例的下拉列表框,在框直接输入105后回车,把显示比例设定为105%。 注意:这里105%的比例是这样得来的。在纸上画一个边长10厘米的正方形,扫描后设为电子表格背景,此时比例为100%,用绘图工具栏的“矩形”工具画一个与背景正方形完全重合的矩形,打印出来。量得打印出正方形边长为10.5厘米,除以原正方形的边长10厘米,可得比例为105%。另外,你也可以在Excel画一个边长为10厘米的正方形,再试着慢慢调整比例,使它与背景正方形重合,亦不难得到相应的比例。 3.定位填写 通过拖动行、列标题的边界调整行高或列宽,再配合使用格式工具栏的“合并及居”按钮,调整表格线使它与背景表格的表格线重合(也不必很准确,只要能让文字填写在所需位置就可以)。对于大量等高(宽)的行(列),全部选并从菜单样的“格式/行/行高(列/列宽)”直接输入数值会更快些。然后在相应单元格里输入数据、文字或公式引用(如图),记住千万不要设置单元格边框,这样一张表格就做好了。 4.页面设置 单击菜单栏的“文件/页面设置…/页边距”,用尺子量取原表格纸表格边框到纸张左边和上边的距离,把量取的尺寸直接输入页面设置对话框相应的左、上页边距,右、下边距则要设小一点,让整张表格都可以打印出来就行了。单击“选项”按钮,进入打印机设置界面自定义纸张尺寸,直接输入纸张的尺寸,这当然也要直接用尺子测量。 部分打印机设置可能没有自定义纸张尺寸的功能,此时我们只要从“文件/页面设置/页面/纸张大小”选一个比实际纸张大点的纸张尺寸,一般也可以正常打印。 5.打印输出 现在可以把原表格纸放入打印打印了,如果以上操作均无误的话,一般无须调整即可一次成功。即使出现水平或垂直移位,也只要直接量取偏移值,然后增减到相应的上、左页边距即可。在此我们设置为背景的表格虽然在屏幕上可以看到,但是并不会被打印出来,所以无须考虑。 这种套打表格的方法特别适用于打印大量的相关表格。像财务、税务和统计这三种报表的数据都是密切相关的。如果把这些相关的报表都存放在同一工作簿内,设置好不同工作表间的相互引用和计算公式。以后我们只要输入几个基本数据就可以自动计算套打出一套完整的报
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值