通过Javascript将数据导出到外部Excel文档的函数代码


Posted in Javascript onJune 15, 2012
function AutomateExcel() { 
try { 
//Start Excel and get Application object. 
var oXL; 
try 
{ 
oXL = new ActiveXObject("Excel.Application"); 
} 
catch(e) 
{ 
alert("无法启动Excel!\n\n如果您确信您的电脑中已经安装了Excel," + "那么请调整IE的安全级别。\n\n具体操作:\n\n" + "工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用"); 
return false; 
} 
//Get a new workbook. 
var oWB = oXL.Workbooks.Add(); 
var oSheet = oWB.ActiveSheet; 
var table = $("#GridView1")[0]; 
var rows = table.rows; 
var columns = table.rows(0).cells; 
var codes = ""; 
//设置标题 
var name = "第 <%= _CurrentPage %> 页"; 
oXL.Caption = name; 
oSheet.Name = name; 
//设置表头 
oSheet.Cells(1, 1).Value = "申请单编号"; 
oSheet.Cells(1, 2).Value = "出货金额"; 
oSheet.Cells(1, 3).Value = "营销部门"; 
oSheet.Cells(1, 4).Value = "业务人员"; 
oSheet.Cells(1, 5).Value = "内部合同号"; 
oSheet.Cells(1, 6).Value = "客户名称"; 
oSheet.Cells(1, 7).Value = "币种"; 
oSheet.Cells(1, 8).Value = "客户船期"; 
oSheet.Cells(1, 9).Value = "国别"; 
oSheet.Cells(1, 10).Value = "核销单号"; 
oSheet.Cells(1, 11).Value = "发票号码"; 
oSheet.Cells(1, 12).Value = "报关日期"; 
//获取当前页申请单编号 
for (var i = 2; i <= rows.length; i++) { 
codes += "'" + rows(i - 1).cells(0).innerText + "',"; 
} 
codes += "''"; 
//获取数据并填充数据到EXCEL 
$.post("../Handlers/ShippingApplyHandler.ashx", 
{ Action: "ExportData", ExportCondition: codes }, 
function (views) { 
if (views != null) { 
var beginindex = 1; 
var endindex = 1; 
for (var i = 0; i < views.length; i++) { 
endindex++; 
oSheet.Cells(i + 2, 1).Value = views[i].SACode; 
oSheet.Cells(i + 2, 2).Value = views[i].AmountSum; 
oSheet.Cells(i + 2, 3).Value = views[i].Department; 
oSheet.Cells(i + 2, 4).Value = views[i].SalesName; 
oSheet.Cells(i + 2, 5).Value = views[i].ContractNo; 
oSheet.Cells(i + 2, 6).Value = views[i].CustomerName; 
oSheet.Cells(i + 2, 7).Value = views[i].CurrencyCode; 
if (views[i].CustomerSchedule != null) { 
oSheet.Cells(i + 2, 8).Value = ConvertToJSDate(views[i].CustomerSchedule).Format("yyyy-MM-dd"); 
} 
oSheet.Cells(i + 2, 9).Value = views[i].Country; 
oSheet.Cells(i + 2, 10).Value = views[i].VerificationNumber; 
oSheet.Cells(i + 2, 11).Value = views[i].InvoiceNumber; 
if (views[i].CustomsDate != null) { 
oSheet.Cells(i + 2, 12).Value = ConvertToJSDate(views[i].CustomsDate).Format("yyyy-MM-dd"); 
} 
if (i > 0 && views[i - 1].SACode == views[i].SACode) { 
oSheet.Range(oSheet.Cells(beginindex, 1), oSheet.Cells(endindex, 1)).Merge(); 
oSheet.Range(oSheet.Cells(beginindex, 2), oSheet.Cells(endindex, 2)).Merge(); 
oSheet.Range(oSheet.Cells(beginindex, 3), oSheet.Cells(endindex, 3)).Merge(); 
oSheet.Range(oSheet.Cells(beginindex, 4), oSheet.Cells(endindex, 4)).Merge(); 
oSheet.Range(oSheet.Cells(beginindex, 5), oSheet.Cells(endindex, 5)).Merge(); 
oSheet.Range(oSheet.Cells(beginindex, 6), oSheet.Cells(endindex, 6)).Merge(); 
oSheet.Range(oSheet.Cells(beginindex, 7), oSheet.Cells(endindex, 7)).Merge(); 
oSheet.Range(oSheet.Cells(beginindex, 8), oSheet.Cells(endindex, 8)).Merge(); 
beginindex = endindex; 
} 
else { 
beginindex++; 
} 
} 
} 
}, "json"); 
//设置自动列宽 
oSheet.Columns.AutoFit(); 
//设置excel为可见 
oXL.Visible = true; 
//将Excel交由用户控制 
oXL.UserControl = true; 
//禁止提示 
oXL.DisplayAlerts = false; 
//释放资源 
//oXL = null; 
//oWB = null; 
//oSheet = null; 
} 
catch (e) { 
} 
}
Javascript 相关文章推荐
用roll.js实现的图片自动滚动+鼠标触动的特效
Mar 18 Javascript
JavaScript 不只是脚本
May 30 Javascript
JavaScript Distilled 基础知识与函数
Apr 07 Javascript
在jQuery中 关于json空对象筛选替换
Apr 15 Javascript
仿百度输入框智能提示的js代码
Aug 22 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
Mar 30 Javascript
微信小程序 实现拖拽事件监听实例详解
Nov 16 Javascript
jQuery选择器中的特殊符号处理方法
Sep 08 jQuery
通过源码分析Vue的双向数据绑定详解
Sep 24 Javascript
详解在HTTPS 项目中使用百度地图 API
Apr 26 Javascript
使用Vue调取接口,并渲染数据的示例代码
Oct 28 Javascript
解决vue-cli输入命令vue ui没效果的问题
Nov 17 Javascript
精心挑选的15个jQuery下拉菜单制作教程
Jun 15 #Javascript
jQuery操作input type=radio的实现代码
Jun 14 #Javascript
jQuery操作 input type=checkbox的实现代码
Jun 14 #Javascript
基于jQuery的遍历同id元素 并响应事件的代码
Jun 14 #Javascript
jQuery操作select的实例代码
Jun 14 #Javascript
jQuery动态添加 input type=file的实现代码
Jun 14 #Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
Jun 14 #Javascript
You might like
apache php模块整合操作指南
2012/11/16 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
JS面向对象编程详解
2016/03/06 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
Python易忽视知识点小结
2015/05/25 Python
详解Python中的from..import绝对导入语句
2016/06/21 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
python生成式的send()方法(详解)
2017/05/08 Python
关于Python数据结构中字典的心得
2017/12/04 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
Django封装交互接口代码
2020/07/12 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
英国名牌男装店:Standout
2021/02/17 全球购物
c语言常见笔试题总结
2016/09/05 面试题
.net笔试题
2014/03/03 面试题
一些.net面试题
2014/10/06 面试题
公司董事长岗位职责
2014/06/08 职场文书
借条如何写
2015/05/26 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
R9700摩机记
2022/04/05 无线电