通过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 相关文章推荐
JavaScript 撑出页面文字换行
Jun 15 Javascript
浅析js封装和作用域
Jul 09 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
Sep 27 Javascript
详解AngularJS中的http拦截
Feb 09 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
Sep 21 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
Apr 25 Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 Javascript
Ajax请求时无法重定向的问题解决代码详解
Jun 21 Javascript
npm 语义版本控制详解
Sep 10 Javascript
angular8和ngrx8结合使用的步骤介绍
Dec 01 Javascript
解决新建一个vue项目过程中遇到的问题
Oct 22 Javascript
JavaScript实现网页计算器功能
Oct 29 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
php 特殊字符处理函数
2008/09/05 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
微信支付开发订单查询实例
2016/07/12 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
浅谈PHP的反射API
2017/02/26 PHP
js constructor的实际作用分析
2011/11/15 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
JavaScript实现可拖拽的拖动层Div实例
2015/08/05 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
vue favicon设置以及动态修改favicon的方法
2018/12/21 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
Python logging模块学习笔记
2014/05/24 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
Django时区详解
2019/07/24 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
css3学习心得分享
2013/08/19 HTML / CSS
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
请解释流与文件有什么不同
2016/07/29 面试题
领导检查欢迎词
2014/01/14 职场文书
出国留学计划书
2014/04/27 职场文书
保护环境倡议书300字
2014/05/19 职场文书
暑期教师培训方案
2014/06/07 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
MySQL 字符集 character
2022/05/04 MySQL