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 相关文章推荐
使用TextRange获取输入框中光标的位置的代码
Mar 08 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
May 15 Javascript
js获取url参数代码实例分享(JS操作URL)
Dec 13 Javascript
JQUERY dialog的用法详细解析
Dec 19 Javascript
jquery绑定事件不生效的解决方法
Feb 11 Javascript
判断字符串的长度(优化版)中文占两个字符
Oct 30 Javascript
浅谈Javascript 数组与字典
Jan 29 Javascript
js自定义回调函数
Dec 13 Javascript
逻辑表达式中与或非的用法详解
Jun 06 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
Feb 11 Javascript
Vue实现简单的留言板
Oct 23 Javascript
vue实现列表拖拽排序的功能
Nov 02 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
多人战的战术与战略
2020/03/04 星际争霸
PHP+MYSQL的文章管理系统(二)
2006/10/09 PHP
PHP闭包实例解析
2014/09/08 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
PHP序列化和反序列化深度剖析实例讲解
2020/12/29 PHP
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
关于跨站脚本攻击问题
2011/12/22 Javascript
javascript控制swfObject应用介绍
2012/11/29 Javascript
node在两个div之间移动,用ztree实现
2013/03/06 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
js常用DOM方法详解
2017/02/04 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
jQuery操作css样式
2017/05/15 jQuery
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
Python设计模式之工厂模式简单示例
2018/01/09 Python
班主任新年寄语
2014/04/04 职场文书
班级体育活动总结
2014/07/05 职场文书
电大奖学金获奖感言
2014/08/14 职场文书
开业典礼致辞
2015/07/29 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS