关于导出Excel的经验求教

ForTheFree 发布于 2014/11/06 10:09
阅读 195
收藏 0

最近做了一个项目需要导出Excel,一开始用的是js那种方式。

function ExportToExcel(){
try{
	var curTbl = document.getElementById("data");
	var oXL = new ActiveXObject("Excel.Application");
	var oWB = oXL.Workbooks.Add();
	var oSheet = oWB.ActiveSheet;
	var lenRow = curTbl.rows.length;
	for (i = 0; i < lenRow; i++){
		var lenCol = curTbl.rows(i).cells.length;
		for (j = 0; j < lenCol; j++){
			oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText;
		}
	}
	oXL.Visible = true;
}catch(e){
	if((!+'\v1')){
		alert("无法启动Excel,请确保电脑中已经安装了Excel!\n\n如果已经安装了Excel,"+"请调整IE的安全级别。\n\n具体操作:\n\n"+"工具 → Internet选项 → 安全 → 自定义级别 → ActiveX 控件和插件 → 对未标记为可安全执行脚本的ActiveX 控件初始化并执行脚本 → 启用 → 确定"); 
	}else{
		alert("请使用IE浏览器并调整IE的安全级别。\n\n具体操作:\n\n"+"工具 → Internet选项 → 安全 → 自定义级别 → ActiveX 控件和插件 → 对未标记为可安全执行脚本的ActiveX 控件初始化并执行脚本 → 启用 → 确定!");  //方便设置安全等级,限制为ie浏览器
	}
}
}



直接将数据复制到Excel中,后来客户说不行,他们非要用下载文件的方式,于是我又到网上去找,本来一开始想找js导出成文件,但是没有找到,后来没办法就用java导出.

于是又开始折腾,一开始想法就是传一个SQL语句到后台,后台直接导出成文件,因为这样比较通用,但是现在又发现一个问题,有的报表不是一句sql就能搞定的,因为太麻烦了,里面有很多计算还有特殊情况的判断,现在想问问大家有没有一些好的方法和经验,分享下,谢谢了

加载中
0
阿阿阿飞
阿阿阿飞
jxl   这个包是操作excel的  你可以看看 
F
ForTheFree
回复 @冷月行殇 : 好的 谢谢 我先试试拼接SQL把
阿阿阿飞
阿阿阿飞
回复 @ForTheFree : 一般来讲,我碰到的复杂的也是拼sql实现的,一般遇到的问题为数据量大,sql执行慢的效率问题。你可以先试着拼一下,看看效率不行的话在找别的方法
F
ForTheFree
回复 @冷月行殇 : 就是一些例如报表的地方,会有一些计算,这些如果sql拼接会比较麻烦,你有遇到过这种情况吗
阿阿阿飞
阿阿阿飞
回复 @ForTheFree : 传一些参数到后台,然后在后台拼sql查询,然后用流输出,一般不都这样吗?
F
ForTheFree
我目前用的就是这个,你仔细看我后面说的问题
0
d
dongyihao
这种情况还是在服务器端生成后再下载比较好 一直用的poi
0
酷酷的就
酷酷的就

特殊计算的,这个需要你在数据库或者业务里面实现了,没有好方法

导出excel的数据,最好是能够沉淀在一张表内, 这样重复导出方便,而且可以做成异步的.

需下载 简单点 直接导出成逗号分隔的cvs文件也行,复杂的就需要jxl这类操作excel的类库了.

0
FebruaryFeb
FebruaryFeb
有一种方法是直接使用SpreadJS这种类Excel控件,在里面直接编辑就好了,然后可以存成Excel文件类型。Excel里面的功能基本都支持啦,还不用写太多代码。
你看这个例子能不能解决你的问题:http://demo.gcpowertools.com.cn/spreadjs/exceliosample/exceliosample/
返回顶部
顶部