js控制excel打印完美解决方案
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js控制excel打印完美解决方案相关的知识,希望对你有一定的参考价值。
参考技术A做web开发大家都遇到过打印的问题 对于复杂的表格打印着实令人头痛 这片文章介绍一下使用excel打印的解决方法
首先 如果客户端调用excel必须降低ie安全级别 这样一些非法的控件 如 什么的都自动安装了 所以我这样解决 保持原来的ie设置 把你的站点添加到信任站点 然后更改安全站点的安全级别 这样就给你的站点设置了一个安全通道 而且阻止了 等的非法入侵 当然前提是你要让你的客户下载一个注册表并安装 我是自己做 自己用 所以我得用户是我说什么都跟着我做 你们就需要说服客户了 ) 好 那么下一步就是如何实现打印了 这里我有非常夺得报表 而且一些非常复杂 如学生成绩单 需要按照学年 学期计算学分绩点 打印照片 学位授予情况 学籍处理情况 四六级成绩 实习 辅修成绩 实践等 那么我如何把这些信息完整的打印到客户端就是非常麻烦的了 所有我用excel 先做一个模版 然后调用模版填充数据 问题又来了 这么多数据怎么组织呢 摸索好长时间 突然有个想法 把数据的提取单独写一个对象 这样我的程序就简洁多了 而且最好的是我任何地方都可以一样使用它 还说成绩单 数据非常大 多的要 条数据 所以我的数据源选择了表格 这样不必费力的生成什么xml了 显示的就是我要的数据 ok介绍一下Gettabledata js 它就是我要的数据对象了 主要功能是从table中提取数据(GetTableData) 并提供一个输出数据的方法(getfielddata) 这个基本功能可以满足我多数的需求 这个我自己写的一个简介 怕以后我忘了的 ) 大家看看有什么不清楚的我补充一下
//Obj参数指定数据的来源(限定Table) 默认第一行为字段名称行 //MoveNext方法 参数是表的行向上或向下移动的位数 正数向下移动 负数向上 如 MoveNext( ) MoveNext( ) //GetFieldData方法获得当前行的指定的列名的数 据如 GetFieldData( 考试成绩 ):列名 GetFieldData( ) 索引 //Sort_desc方法对指定的列按降序排列 如 Sort_desc( 学年 学期 ) //Sort_asc方法对指定的列按升序排列 如 Sort_asc( 考试成绩:number ): : 后面的参数制定改列数据类型 此例为数字 //GetData方法返回字段值为特定值的数据数组 如果没有字段值则返回所有该字段记录 可以在外部进行其他处理 不建议直接处理数据 如 GetData() //Delete方法删除当前记录 数组减少一行 如: Delete //updateField更新当前行的指定的索引数据(索引如果是数字 则是列的索引 为字符 是数据字段的名称)如:MyData UpdateField( 课程号 MyData GetFieldData( 原课程号 )) //MoveFirst记录移动到数据的第一条记录 注意数据从第二行开始 默认第一行为字段名称行 //MoveLast记录移动到数据的最后一条记录 //Distinct返回所选记录的不同记录的条件个数维数数组 同时升序排序 //初始化 Obj:table的名字 Leftlen:左面多余数据长度 Rightlen:右面多余数据长度 //rows属性:数组行数 cols:列数
在示例代码中Print_bzcjd js他是打印复杂excel的脚本
var xlBook = xls Workbooks Open( c:\\\\xsxycjb xls ); var xlsheet = xlBook Worksheets( )
这个可是使用网络模板
var xlBook = xls Workbooks Open( \\PrintTemplates\\\\xsxycjb xls ); var xlsheet = xlBook Worksheets( )
这个力例子中基本把excel打印需要的技术都展示出来了 如图片 退出什么的
这里要说明的是table的数据可以是隐藏的 不显示也可以取出 这样就可以增加很多数据进来 又不影响界面
Excel js 这个是清理excel的脚本 当结束excel进程的时候它还没有推出 清理一下 这个就没有vs好了 (
这个是一个简单的示例 就是你给他一个表格名字就可以了 然后生成一个表格 就是这样:MakeExcel( TABLE true xls ) 其他参数可以不要
function MakeExcel(Obj ProceVisible SaveAsFilename SortType SortField) var MyData= new GetTableData(Obj ); var myrows=MyData rows; var i j;
lishixinzhi/Article/program/Java/javascript/201311/25274
自定义的打印语句NSLog在控制台输出不完整的完美解决
之前定义日志输出时用的下面的方法
1 #ifdef DEBUG // 调试状态, 打开LOG功能 2 #define CXTLog(...) NSLog(__VA_ARGS__) 3 #else // 发布状态, 关闭LOG功能 4 #define CXTLog(...) 5 #endif
感觉很完美,但是最近升级xcode 9以后发现控制台总是输出不完整,打印接口数据总是打印出一部分,很是郁闷,
直到发现了下面的方法:
1 #ifdef DEBUG // 调试状态, 打开LOG功能 2 3 #define CXTLog( s, ... ) printf("class: <%p %s:(%d) > method: %s \n%s\n", self, [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, __PRETTY_FUNCTION__, [[NSString stringWithFormat:(s), ##__VA_ARGS__] UTF8String] ) 4 5 #else// 发布状态, 关闭LOG功能 6 #define CXTLog( s, ... ) 7 #endif
用这个方法解决了控制台输出不完整的问题,整个人就好了!
以上是关于js控制excel打印完美解决方案的主要内容,如果未能解决你的问题,请参考以下文章