JS将网页数据导出Excel问题

tianyaxingge 2012-07-23 10:09:47
各位大神我桌急啊,同样的网页,在不同的客户机器上倒出来效果就不一样,我无能为力了。所以求助各位大神......

描述:有一个EXCEL的JS,我在网页里调用这个JS,然后点击按钮 将网页的Table传递给JS,然后导出Excel,现在在不同的电脑里导出EXCEL,导出来不同的效果,具体看图吧。

JS代码:

var idTmr = "";

function toExcel(tableid) //读取表格中每个单元到EXCEL中
{
var curTbl = document.getElementById(tableid);
var oXL = new ActiveXObject("Excel.Application");
//创建AX对象excel
var oWB = oXL.Workbooks.Add();
//获取workbook对象
var oSheet = oWB.ActiveSheet;
//激活当前sheet
var Lenr = curTbl.rows.length;
//取得表格行数
for (i = 0; i < Lenr; i++)
{
var Lenc = curTbl.rows(i).cells.length;
//取得每行的列数
for (j = 0; j < Lenc; j++)
{
oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText;
//赋值
}
}
oXL.Visible = true;
//设置excel可见属性
}


function copy(tabid)
{
var oControlRange = document.body.createControlRange();
oControlRange.add(tabid,0);
oControlRange.select();
document.execCommand("Copy");
}
function toExcel(tabid){
copy(tabid);
try
{
var xls = new ActiveXObject( "Excel.Application" );
}
catch(e)
{
alert( "Excel没有安装或浏览器设置不正确.请启用所有Active控件和插件");
return false;
}
xls.visible = true;
var xlBook = xls.Workbooks.Add;
var xlsheet = xlBook.Worksheets(1);
xlBook.Worksheets(1).Activate;
for(var i=0;i<tabid.rows(0).cells.length;i++){
xlsheet.Columns(i+1).ColumnWidth=15;
}
xlsheet.Paste;
xls=null;
idTmr = window.setInterval("Cleanup();",1);
}
function Cleanup() {
window.clearInterval(idTmr);
CollectGarbage();
}


导出图1:


导出图2:
...全文
350 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序媛小李 2013-01-25
  • 打赏
  • 举报
回复
引用 6 楼 yenange 的回复:
用什么js啊, 明明是服务器端做事情…… 就像说用手枪打多少枪, 才能达到导弹的效果…… 用服务器来完成吧, 效果好。 而且只要服务器安装office就可以了。 .aspx, .jsp 等可以很方便地完成这件事嘛
+1
吉普赛的歌 社区高级成员 T9 2013-01-24
  • 打赏
  • 举报
回复
用什么js啊, 明明是服务器端做事情…… 就像说用手枪打多少枪, 才能达到导弹的效果…… 用服务器来完成吧, 效果好。 而且只要服务器安装office就可以了。 .aspx, .jsp 等可以很方便地完成这件事嘛
fanxin_accp 2013-01-24
  • 打赏
  • 举报
回复
那个 "t1"就是table的id.
fanxin_accp 2013-01-24
  • 打赏
  • 举报
回复
你用这个试试: //导出到Excel function AutomateExcel(){ var appExcel = new ActiveXObject("Excel.Application"); var elTable = document.getElementById("t1"); var oRangeRef = document.body.createTextRange(); oRangeRef.moveToElementText(elTable); oRangeRef.execCommand("Copy"); appExcel.Workbooks.Add().Worksheets.Item(1).Paste(); appExcel.Visible = true; appExcel = null; }
tianyaxingge 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

调试 找到原因-找解决方案-解决
[/Quote]

调试JS?
wellma2 2012-07-23
  • 打赏
  • 举报
回复
调试 找到原因-找解决方案-解决
tianyaxingge 2012-07-23
  • 打赏
  • 举报
回复
CSDN发图真累啊,这个是我的图片地址,在相册“代码”中

http://my.csdn.net/my/album/detail/1222634
本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。 这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。 平时不明白的知识点,放在项目里去理解就恍然大悟了。   一、融汇贯通 本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用Python 的Django框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。   二、贴近实战 本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django中实现针对数据的增删改查的接口、在Vuejs中实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战   三、课程亮点 在本案例中,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互   适合人群: 1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友; 2、有Django基础,但是想学习企业级项目实战的朋友; 3、有MySQL数据库基础的朋友  

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧