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 相关文章推荐
JQuery datepicker 使用方法
May 20 Javascript
js读取被点击次数的简单实例(从数据库中读取)
Mar 07 Javascript
Javascript中数组方法汇总(推荐)
Apr 01 Javascript
原生JS和JQuery动态添加、删除表格行的方法
May 28 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
Jun 01 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
Oct 01 Javascript
微信小程序 教程之wxapp 视图容器 view
Oct 19 Javascript
微信和qq时间格式模板实例详解
Oct 21 Javascript
详解express与koa中间件模式对比
Aug 07 Javascript
js编写简单的聊天室功能
Aug 17 Javascript
javascript填充默认头像方法
Feb 22 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
Jun 18 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漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
checkbox 多选框 联动实现代码
2008/10/22 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
js模拟支付宝密码输入框
2017/04/11 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
Python学生信息管理系统修改版
2018/03/13 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
药剂学专业应届生自荐信
2013/09/29 职场文书
经济类毕业生求职信
2014/06/26 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
主题班会开场白
2015/06/01 职场文书
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA