JS Excel读取和写入操作(模板操作)实现代码


Posted in Javascript onApril 11, 2010

本人是在实际项目中摸索出,JS读写Excel(模板)数据,包括怎么用JS把图片插入Excel中。
首先,添加一个公用的模板地址JS,如下:
AddZDaddress.js

/////////////////////////////////////////////////////////////////////////////////////////////////// 
////DocName:信任站点地址添加--AddZDaddress.js 
////Author:lify 
////Company:Wavenet 
////Date:2009-11-04 
////EditDate:2010-03-11 
////MainContent:Findings,Ajax And So On; 
////////////////////////////////////////////////////////////////////////////////////////////////// 
var BelieveAddress='172.18.1.25/psc1';////配置地址配置程序时需要的配置地址 
////**********************************Excel 导入到WEB界面模板地址集合*******************************************// 
//////////////////////////飞行检测excel模板地址配置///////////////////////////////////////////////////////////// 
var template_path_FxjcExcelDatasIntoSqlDatas = "http://%22+believeaddress+%22/NewReports/xls_template/飞行检测城镇污水厂进出水主要污染物浓度.xls"; 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
////***********************************************************************************************************// 
////*********************************Excel 录入模板导入地址集合**********************************************// 
//////////////////////////月报导入excel地址配置////////////////////////////////// 
var template_path_month = "http://%22+believeaddress+%22/NewReports/xls_template/上海市污水处理企业生产运行表.xls"; 
///////////////////////////////////////////////////////////////////////////////// 
//////////////////////////年报导入excel地址配置////////////////////////////////// 
var template_path_year = "http://%22+believeaddress+%22/NewReports/xls_template/上海市污水处理设施信息表.xls"; 
////*********************************************************************************************************// 
//图片地址 
var pic_path="http://%22+believeaddress+%22/NewReports/"; 
/////////////////////////////////////////////////////////////////////////////////

再次,怎么样把页面数据读取到Excel中JS,如下:
YearReportLuRu.jsYearReportLuRu.js
////DocName:污水处理设施信息表(年报)-录入报表--YearReportLuRu.js 
////Author:lify 
////Company:Wavenet 
////Date:2009-08-14 
////EditDate:2009-08-14 
////MainContent:Findings,Ajax And So On; 
/////////////////////////////////////////////////////////////////////////////////////////////////// 
///////////////////////////////////////添加正则表达式类///////////////////////////////////////////////////////////// 
document.write("<script language=\"javascript\" type=\"text/javascript\" src=\"js/RegularExpression.js\"><\/script>"); 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
function AutomateExcel3() 
{ 
//alert(pic_path+document.getElementById("ImgUrl").value);//测试 
var xls = new ActiveXObject("Excel.Application"); 
xls.Visible = true; 
var newBook = xls.Workbooks.Open(template_path_year);//这里的Add方法里的参数是模板的路径 
var oSheet=newBook.ActiveSheet; 
////////////////////////////////////////////写入数据到模板中//////////////////////////////////////////////////////////// 
///////////////法人单位名称///////////////////////////////////////////////////////////////////////////////////////////// 
oSheet.Cells(2,3).value = Trim(PT.rows[0].cells[1].innerText); 
///////////////法人单位代码以及代表姓名///////////////////////////////////////////////////////////////////////////////////////////////// 
oSheet.Cells(2,9).value = Trim(PT.rows[0].cells[3].innerText); 
oSheet.Cells(2,13).value = Trim(PT.rows[0].cells[5].innerText); 
//////////////进出口三张表///////////////////////////////////////////////////////////////////////////////////////// 
oSheet.Cells(3,2).value=Trim(PT.rows[1].cells[1].innerText); 
oSheet.Cells(3,6).value=Trim(PT.rows[1].cells[3].innerText); 
oSheet.Cells(3,8).value=Trim(PT.rows[1].cells[5].innerText); 
oSheet.Cells(3,10).value=Trim(PT.rows[1].cells[7].innerText); 
oSheet.Cells(3,13).value=Trim(PT.rows[1].cells[9].innerText); 
oSheet.Cells(4,2).value=Trim(PT.rows[2].cells[1].innerText); 
oSheet.Cells(4,4).value=Trim(PT.rows[2].cells[3].innerText); 
oSheet.Cells(4,6).value=Trim(PT.rows[2].cells[5].innerText); 
oSheet.Cells(4,8).value=Trim(PT.rows[2].cells[7].innerText); 
oSheet.Cells(4,10).value=Trim(PT.rows[2].cells[9].innerText); 
oSheet.Cells(4,12).value=Trim(PT.rows[2].cells[11].innerText); 
oSheet.Cells(4,14).value=Trim(PT.rows[2].cells[13].innerText); 
oSheet.Cells(5,2).value=Trim(PT.rows[3].cells[1].innerText); 
oSheet.Cells(5,5).value=Trim(PT.rows[3].cells[3].innerText); 
oSheet.Cells(5,8).value=Trim(PT.rows[3].cells[5].innerText); 
oSheet.Cells(5,10).value=Trim(PT.rows[3].cells[7].innerText); 
oSheet.Cells(5,12).value=Trim(PT.rows[3].cells[9].innerText); 
oSheet.Cells(5,14).value=Trim(PT.rows[3].cells[11].innerText); 
//////////////年运行简况/////////////////////// 
oSheet.Cells(6,4).value = Trim(PT.rows[4].cells[3].innerText); 
oSheet.Cells(6,6).value = Trim(PT.rows[4].cells[5].innerText); 
oSheet.Cells(6,8).value = Trim(PT.rows[4].cells[7].innerText); 
oSheet.Cells(6,10).value = Trim(PT.rows[4].cells[9].innerText); 
oSheet.Cells(6,12).value = Trim(PT.rows[4].cells[11].innerText); 
oSheet.Cells(6,14).value = Trim(PT.rows[4].cells[13].innerText); 
oSheet.Cells(7,4).value = Trim(PT.rows[5].cells[2].innerText); 
oSheet.Cells(7,6).value = Trim(PT.rows[5].cells[4].innerText); 
oSheet.Cells(7,8).value = Trim(PT.rows[5].cells[6].innerText); 
oSheet.Cells(7,10).value = Trim(PT.rows[5].cells[8].innerText); 
oSheet.Cells(7,12).value = Trim(PT.rows[5].cells[10].innerText); 
oSheet.Cells(7,14).value = Trim(PT.rows[5].cells[12].innerText); 
//////////////年处理水量/////////////////////// 
oSheet.Cells(8,2).value = Trim(PT.rows[6].cells[1].innerText); 
oSheet.Cells(8,5).value = Trim(PT.rows[6].cells[3].innerText); 
oSheet.Cells(8,8).value = Trim(PT.rows[6].cells[5].innerText); 
oSheet.Cells(8,11).value = Trim(PT.rows[6].cells[7].innerText); 
oSheet.Cells(8,14).value = Trim(PT.rows[6].cells[9].innerText); 
//////////////污水厂工艺概况/////////////////////// 
oSheet.Cells(10,3).value = Trim(PT.rows[8].cells[1].innerText); 
oSheet.Cells(10,4).value = Trim(PT.rows[8].cells[2].innerText); 
oSheet.Cells(10,5).value = Trim(PT.rows[8].cells[3].innerText); 
oSheet.Cells(10,7).value = Trim(PT.rows[8].cells[4].innerText); 
oSheet.Cells(11,3).value = Trim(PT.rows[9].cells[1].innerText); 
oSheet.Cells(11,4).value = Trim(PT.rows[9].cells[2].innerText); 
oSheet.Cells(11,5).value = Trim(PT.rows[9].cells[3].innerText); 
oSheet.Cells(11,7).value = Trim(PT.rows[9].cells[4].innerText); 
oSheet.Cells(12,3).value = Trim(PT.rows[10].cells[1].innerText); 
oSheet.Cells(12,4).value = Trim(PT.rows[10].cells[2].innerText); 
oSheet.Cells(12,5).value = Trim(PT.rows[10].cells[3].innerText); 
oSheet.Cells(12,7).value = Trim(PT.rows[10].cells[4].innerText); 
//--------------------------运行费用分析-------------------------------------// 
oSheet.Cells(13,3).value = Trim(PT.rows[11].cells[2].innerText); 
oSheet.Cells(13,5).value = Trim(PT.rows[11].cells[4].innerText); 
oSheet.Cells(13,7).value = Trim(PT.rows[11].cells[6].innerText); 
oSheet.Cells(13,9).value = Trim(PT.rows[11].cells[8].innerText); 
////////////////////////////////厂外输送泵站示意图//////////////////////////// 
//copy(document.getElementById("ImgUrl")); 
//oSheet.Pictures.Insert(pic_path+document.getElementById("ImgUrl").value);///////.Cells(13,11) 
var msoShaoeRectangle = 1;//AddShape(透明度,左,上,宽度,高度) 
oSheet.Shapes.AddShape(msoShaoeRectangle, 560, 330, 200, 150).Fill.UserPicture(pic_path+document.getElementById("ImgUrl").value); 
//oSheet.Cell(13,11).select();//选中excel的单元格 
//oSheet.Pictures.Insert(PT.rows[11].cells[8].getElementById("ImgUrl").src); 
////////////////////////////////////////////////////////////////////////////// 
oSheet.Cells(14,3).value = Trim(PT.rows[12].cells[1].innerText); 
oSheet.Cells(14,5).value = Trim(PT.rows[12].cells[3].innerText); 
oSheet.Cells(14,7).value = Trim(PT.rows[12].cells[5].innerText); 
oSheet.Cells(14,9).value = Trim(PT.rows[12].cells[7].innerText); 
oSheet.Cells(15,3).value = Trim(PT.rows[13].cells[1].innerText); 
oSheet.Cells(15,5).value = Trim(PT.rows[13].cells[3].innerText); 
oSheet.Cells(15,7).value = Trim(PT.rows[13].cells[5].innerText); 
oSheet.Cells(15,9).value = Trim(PT.rows[13].cells[7].innerText); 
oSheet.Cells(16,5).value = Trim(PT.rows[14].cells[1].innerText); 
oSheet.Cells(16,7).value = Trim(PT.rows[14].cells[3].innerText); 
oSheet.Cells(16,9).value = Trim(PT.rows[14].cells[5].innerText); 
oSheet.Cells(17,3).value = Trim(PT.rows[15].cells[1].innerText); 
oSheet.Cells(17,5).value = Trim(PT.rows[15].cells[3].innerText); 
oSheet.Cells(17,7).value = Trim(PT.rows[15].cells[5].innerText); 
//---------------------------------------------------------------------------// 
//////////////污水厂表下方信息/////////////////////// 
oSheet.Cells(18,2).value = Trim(RT.rows[0].cells[1].innerText); 
oSheet.Cells(18,7).value = Trim(RT.rows[0].cells[3].innerText); 
oSheet.Cells(18,11).value = Trim(RT.rows[0].cells[5].innerText); 
oSheet.Cells(18,14).value = Trim(RT.rows[0].cells[7].innerText); 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
xls.Visible = true; 
xls.UserControl = true; 
xls = null; 
idTmr = window.setInterval("Cleanup();",1); 
//xls.quit(); 
} 
function Cleanup() 
{ 
window.clearInterval(idTmr); 
CollectGarbage(); 
} 
function copy(tabid){ 
var oControlRange = document.body.createControlRange(); 
oControlRange.add(tabid,0); 
oControlRange.select(); 
document.execCommand("Copy"); 
}

最后,如何读取到Excel模板中数据到页面上共客户编辑数据再保存到数据库中(此步可以用xml发送至后台交互,在此不进一步说明)JS,如下:
Fxjc_ExcelDatasIntoSqlDatas.js
////DocName:导入模板数据功能--Fxjc_ExcelDatasIntoSqlDatas.js 
////Author:lify 
////Company:Wavenet 
////Date:2010-03-12 
////EditDate:2010-03-12 
////MainContent:Findings,Ajax And So On; 
////////////////////////////////////////////////////////////////////////////////////////////////// 
var excelFileName=""; //本地EXCEL地址 
var oWB; 
var idTmr=""; 
function AutomateExcel3() 
{ 
//删除PT表的除前2行的所有行 
DeleteTablePT(); 
//alert(pic_path+document.getElementById("ImgUrl").value);//测试 
var xls=null; 
var newBook; 
try{ 
xls = new ActiveXObject("Excel.Application"); 
}catch(e){openBg(0);openTS(0); 
alert("请您打开ActiveX控件,具体操作:单击IE中的“工具”里“Internet 选项”,单击“安全”中的“自定义级别”中“ActiveX控件和插件”中,请选择第三项为启用即可。详细错误:"+e.message); 
return ; 
} 
if (xls == null){openBg(0);openTS(0); 
alert("创建Excel文件失败,可能是您的计算机上没有正确安装Microsoft Office Excel软件或浏览器的安全级别设置过高!"); 
return; 
} 
try{ 
newBook = xls.Workbooks.Open(excelFileName);//这里的Add方法里的参数是模板的路径 
}catch(e){openBg(0);openTS(0); 
alert("加载的Excel文件路径有错误!详细:"+e.message); 
return ; 
} 
var oSheet=newBook.ActiveSheet; 
////////////////////////////////////////////模板写入数据到WEB页面中//////////////////////////////////////////////////////////// 
var xhnum=0; 
//alert("oSheet.Cells(3,18).value="+oSheet.Cells(3,18).value+"|"+(oSheet.Cells(3,5).value=="<30")+"|oSheet.Cells(3,20).value="+oSheet.Cells(3,20).value); 
for(var i=3;i<108;i++) 
{ 
if(oSheet.Cells(i,1).value) 
{ 
xhnum++; 
var newRow = document.getElementById("PT").insertRow(-1); 
var newCell; 
newRow.align = "center"; 
newRow.height = "35px"; 
for(var j=0;j<28;j++) 
{ 
if(j==4) 
{ 
//什么都不做 
} 
else if(j<4) 
{ 
newCell = newRow.insertCell(j); 
if(j==0) newCell.innerHTML = (xhnum).toString();//序号 
else if(j==1) 
{ 
if(!oSheet.Cells(i,1).value) 
newCell.innerHTML = " "; 
else if(oSheet.Cells(i,1).value=="——"||oSheet.Cells(i,1).value=="--") 
newCell.innerHTML = " "; 
else 
newCell.innerHTML = (oSheet.Cells(i,1).value==""?" ":oSheet.Cells(i,1).value); 
} 
else if(j==2) 
{ 
if(!oSheet.Cells(i,2).value) 
newCell.innerHTML = " "; 
else if(oSheet.Cells(i,2).value=="——"||oSheet.Cells(i,2).value=="--") 
newCell.innerHTML = " "; 
else 
newCell.innerHTML = (oSheet.Cells(i,2).value==""?" ":oSheet.Cells(i,2).value); 
//newCell.innerHTML = (oSheet.Cells(i,2).value==""?" ":oSheet.Cells(i,2).value); 
} 
else if(j==3) 
{ 
if(!oSheet.Cells(i,4).value) 
newCell.innerHTML = " "; 
else if(oSheet.Cells(i,4).value=="——"||oSheet.Cells(i,4).value=="--") 
newCell.innerHTML = " "; 
else 
newCell.innerHTML = (oSheet.Cells(i,4).value==""?" ":oSheet.Cells(i,4).value); 
//newCell.innerHTML = (oSheet.Cells(i,4).value==""?" ":oSheet.Cells(i,4).value); 
} 
else if(j==9) 
{ 
if(!oSheet.Cells(i,j+1).value) 
newCell.innerHTML = " "; 
else if(oSheet.Cells(i,j+1).value=="<30") 
newCell.innerHTML = "30"; 
else if(oSheet.Cells(i,j+1).value=="——"||oSheet.Cells(i,j+1).value=="--") 
newCell.innerHTML = " "; 
else 
newCell.innerHTML = (oSheet.Cells(i,j+1).value==""?" ":oSheet.Cells(i,j+1).value); 
} 
else 
{ 
if(!oSheet.Cells(i,j+1).value) 
newCell.innerHTML = " "; 
else if(oSheet.Cells(i,j+1).value=="<30") 
newCell.innerHTML = "30"; 
else if(oSheet.Cells(i,j+1).value=="<DL") 
newCell.innerHTML = " "; 
else if(oSheet.Cells(i,j+1).value=="——"||oSheet.Cells(i,j+1).value=="--") 
newCell.innerHTML = " "; 
else 
newCell.innerHTML = (oSheet.Cells(i,j+1).value==""?" ":oSheet.Cells(i,j+1).value); 
} 
} 
else 
{ 
newCell = newRow.insertCell(j-1);//少一个就可以了,少样品编号插入 
if(j==0) newCell.innerHTML = (xhnum).toString();//序号 
else if(j==1) 
{ 
if(!oSheet.Cells(i,1).value) 
newCell.innerHTML = " "; 
else if(oSheet.Cells(i,1).value=="——"||oSheet.Cells(i,1).value=="--") 
newCell.innerHTML = " "; 
else 
newCell.innerHTML = (oSheet.Cells(i,1).value==""?" ":oSheet.Cells(i,1).value); 
} 
else if(j==2) 
{ 
if(!oSheet.Cells(i,2).value) 
newCell.innerHTML = " "; 
else if(oSheet.Cells(i,2).value=="——"||oSheet.Cells(i,2).value=="--") 
newCell.innerHTML = " "; 
else 
newCell.innerHTML = (oSheet.Cells(i,2).value==""?" ":oSheet.Cells(i,2).value); 
//newCell.innerHTML = (oSheet.Cells(i,2).value==""?" ":oSheet.Cells(i,2).value); 
} 
else if(j==3) 
{ 
if(!oSheet.Cells(i,4).value) 
newCell.innerHTML = " "; 
else if(oSheet.Cells(i,4).value=="——"||oSheet.Cells(i,4).value=="--") 
newCell.innerHTML = " "; 
else 
newCell.innerHTML = (oSheet.Cells(i,4).value==""?" ":oSheet.Cells(i,4).value); 
//newCell.innerHTML = (oSheet.Cells(i,4).value==""?" ":oSheet.Cells(i,4).value); 
} 
else if(j==9) 
{ 
if(!oSheet.Cells(i,j+1).value) 
newCell.innerHTML = " "; 
else if(oSheet.Cells(i,j+1).value=="<30") 
newCell.innerHTML = "30"; 
else if(oSheet.Cells(i,j+1).value=="——"||oSheet.Cells(i,j+1).value=="--") 
newCell.innerHTML = " "; 
else 
newCell.innerHTML = (oSheet.Cells(i,j+1).value==""?" ":oSheet.Cells(i,j+1).value); 
} 
else 
{ 
if(!oSheet.Cells(i,j+1).value) 
newCell.innerHTML = " "; 
else if(oSheet.Cells(i,j+1).value=="<30") 
newCell.innerHTML = "30"; 
else if(oSheet.Cells(i,j+1).value=="<DL") 
newCell.innerHTML = " "; 
else if(oSheet.Cells(i,j+1).value=="——"||oSheet.Cells(i,j+1).value=="--") 
newCell.innerHTML = " "; 
else 
newCell.innerHTML = (oSheet.Cells(i,j+1).value==""?" ":oSheet.Cells(i,j+1).value); 
} 
} 
} 
} 
} 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
newBook.Close(); 
newBook=null; 
xls = null; 
openBg(0);openTS(0); 
///////////////////////////////开启编辑和保存按钮功能/////////////////////////////////// 
OnOrOffBtn(1); 
//////////////////////////////////////////////////////////////////////////////////////// 
idTmr = window.setInterval("Cleanup();",1); 
////////////////////////////////表格数字和字符转化////////////////////////////////////// 
TableIntoDatas();////表格数字和字符转化 
//////////////////////////////////////////////////////////////////////////////////////// 
}

其实做报表很痛苦,但是从中也能经历不少。很高兴以此文章让那些报表高手前来指导和拍砖。谢谢了!
以上为针对excel模板总结的一些方法,欢迎各位前来拍砖!也欢迎大家来交流交流!
Javascript 相关文章推荐
兼容ie和firefox js关闭代码
Dec 11 Javascript
一个JQuery写的点击上下滚动的小例子
Aug 27 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
Nov 13 Javascript
jquery中交替点击事件toggle方法的使用示例
Dec 08 Javascript
jquery 中ajax执行的优先级
Jun 22 Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 Javascript
利用JS实现页面删除并重新排序功能
Dec 09 Javascript
超全面的vue.js使用总结
Feb 12 Javascript
详谈js模块化规范
Jul 07 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
Apr 19 Javascript
基于javascript实现贪吃蛇小游戏
Nov 25 Javascript
一个js的tab切换效果代码[代码分离]
Apr 11 #Javascript
YUI的Tab切换实现代码
Apr 11 #Javascript
利用JS重写Cognos右键菜单的实现代码
Apr 11 #Javascript
可以将word转成html的js代码
Apr 11 #Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
Apr 11 #Javascript
jquery 模拟雅虎首页的点击对话框效果
Apr 11 #Javascript
url 编码 js url传参中文乱码解决方案
Apr 11 #Javascript
You might like
php 短链接算法收集与分析
2011/12/30 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
分享一个asp.net pager分页控件
2012/01/04 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
Vue-路由导航菜单栏的高亮设置方法
2018/03/17 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
js实现验证码干扰(静态)
2021/02/22 Javascript
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
python中list列表的高级函数
2016/05/17 Python
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
军训新闻稿范文
2015/07/17 职场文书
校园新闻稿范文
2015/07/18 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
详解Python牛顿插值法
2021/05/11 Python