表单中的信息如何导出到Excel
一个表单的信息量比较大,有很多同类型的表格(料号1,料号2,料号3,...)等等,显出在web页面,我想在这个页面做一个功能按钮,一点就能将这个页面的相关表格信息导出到excel, 之前有用其他语言弄过, lotusscript不熟.
有弄过的兄台指教下,多谢了.
小弟一直在线.
[解决办法]
var oExcel = new ActiveXObject("Excel.application"); //创建Excel对象
var oWork =oExcel.Workbooks.Add(); //新建一个Excel工作簿
var oSheet =oWork.ActiveSheet; //指定要写入内容的工作表为活动工作表
var table =document.all.table1; //指定要写入的数据源的id
var myRow =table.rows.length; //取数据源行数
var myCell =table.rows(0).cells.length; //取数据源列数
for(i=0;i<myRow;i++){ //在Excel中写行
for(j=0;j<myCell;j++){ //在Excel中写列
//定义格式
if ((i==0)
[解决办法]
(i==myRow-1)){
oSheet.Cells(i+1,j+1).Font.Bold =true; //加粗
oSheet.Cells(i+1,j+1).Font.Size =12; //字体大小
}else{
oSheet.Cells(i+1,j+1).Font.Bold =false;
oSheet.Cells(i+1,j+1).Font.Size =10; //字体大小
}
oSheet.Cells(i+1,j+1).value =table.rows(i).cells(j).innerText; //向单元格写入值
}
}
oExcel.Visible = true;
oExcel.UserControl = true;
[解决办法]
首先你要明白从哪里抓取数据,表单上的字段数据是存在文档里的,因此要从文档中获取数据,然后写入Excel中。你可以按照以下思路来做:
1,表单上建一个导出按钮
2,写一个ajax调用一个代理获取到数据,拼成XML返回
3,获取到返回的数据,循环写入Excel即可
参考代码:
function excelout()
{
var t=new Date();
var sGetURL="/Application/test.nsf/exceloutAgent?OpenAgent&key="+t.getSeconds()
var xmlHttp = GetXmlHttp();
var XMLDom=new ActiveXObject("Microsoft.XMLDOM");
xmlHttp.open("GET", sGetURL, false); //GET传参
xmlHttp.setRequestHeader("Cookie",document.cookie);
xmlHttp.send(null);
XMLDom=xmlHttp.responseXML;
//alert(XMLDom.xml)
try
{
var xls = new ActiveXObject("Excel.Application");
}
catch(e)
{
alert( "要打印,您必须安装Excel软件,同时浏览器须使用“ActiveX 控件”,您的浏览器须允许执行控件!");
return false;
}
xls.visible = true;
//wbook=xls.workbooks.open(tempurl);
wbook=xls.workbooks.add();
wsheet=wbook.worksheets(1);
wsheet.cells(1,1).value=t.getYear()+"_"+(t.getMonth()+1)+"_"+t.getDate()+"—安全检查上报统计";
wsheet.cells(1,1).HorizontalAlignment=3;
wsheet.cells(1,1).Font.size="14";
wsheet.cells(1,1).Font.Bold=true;
wsheet.cells(2,1).value="部门名称";
wsheet.cells(2,2).value="检查项";
wsheet.cells(2,2).HorizontalAlignment=3;
......
.......
for(var i=0;i<dom.length;i++)
{
wsheet.cells(i+4,1).value=XMLDom.getElementsByTagName("Dept")[i].getAttribute("name");
wsheet.cells(i+4,2).value=dom.item(i).childNodes.item(0).text;
wsheet.cells(i+4,3).value=dom.item(i).childNodes.item(1).text;
............
..............
}