想将jsp页面的一个table 里的tr td内容提交。用js取到了内容,并构建了一个二维数组,现在放到一个隐藏域里,在form里用一个二维数组接受,现在出现一个问题,form里的二维数组只有第一行有数,并且是js数组的全部内容。请问怎么才能将js二维数组完整提交到form二维数组呢?jsp内容如下:
<%@ page language="java" pageEncoding="GBK"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title>test.jsp</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script language="javascript">
function exp(tb){var doc=document.getElementById("tb");
var rows=doc.rows.length;var maxcol=0;
var rowarray=new Array();
for(r=0;r<rows;r++){
if(maxcol<doc.rows[r].cells.length){
maxcol=doc.rows[r].cells.length;
}
rowarray[r]=new Array();
for(c=0;c<doc.rows[r].cells.length;c++){
rowarray[r][c]=doc.rows[r].cells[c].innerText;
}
//document.writeln();
}
with(document.forms[0]){
title.value=rowarray;
flag.value="exp";
row.value=rows;
col.value=maxcol;
}
}/////////////////////////
function gettitle(tb){
var doc=document.getElementById("tb");
var excel = new ActiveXObject("Excel.Application"); var book=excel.Workbooks.Add();
var sheet=book.ActiveSheet;
var rows=doc.rows.length;
for(r=0;r<rows;r++){
var colspan=1;//单元格所占单元格数
var current=1;//td当前打印位置
var maxcolumn=doc.rows[r].cells.length;//当前行列数
for(c=0;c<maxcolumn;c++){
sheet.Cells(r+1,current)=doc.rows[r].cells[c].innerText; //将表格内容赋值给excel单元格
colspan=doc.rows[r].cells[c].colSpan; //取的当前单元格所占单元格数
current=current+colspan;//将当前位置往后移动colspan数量
sheet.Range(sheet.Cells(r+1,current-colspan),sheet.Cells(r+1,current-1)).mergecells=true;
//将刚写入的单元格进行合并。
}
}
excel.Visible=true;
}//gettitle
</script>
</head>
<body>
<html:form action="/expexcel.do">
<html:hidden property="flag" name="expexcelForm" styleId="flag" />
<html:hidden property="title" name="expexcelForm" styleId="title" />
<html:hidden property="row" name="expexcelForm" styleId="row" />
<html:hidden property="col" name="expexcelForm" styleId="col" />
<table border="1" id="tb">
<tr>
<td colspan="2">
r1c1
</td>
<td colspan="3">
r1c2
</td>
<td colspan="2">
r1c3
</td>
</tr>
<tr>
<td>
r2c1
</td>
<td>
r2c2
</td>
<td>
r2c3
</td>
<td>
r2c4
</td>
<td>
r2c5
</td>
<td>
r2c6
</td>
<td>
r2c7
</td>
</tr>
<tr>
<td>
data1
</td>
<td>
data2
</td>
<td>
data3
</td>
<td>
data4
</td>
<td>
data5
</td>
</tr>
</table>
<html:button property="submit" value="导出" onclick="gettitle(id)"></html:button>
<html:submit onclick="exp(id)" value="提交导出"></html:submit>
</html:form>
</body>
</html:html>
<%@ page language="java" pageEncoding="GBK"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title>test.jsp</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script language="javascript">
function exp(tb){var doc=document.getElementById("tb");
var rows=doc.rows.length;var maxcol=0;
var rowarray=new Array();
for(r=0;r<rows;r++){
if(maxcol<doc.rows[r].cells.length){
maxcol=doc.rows[r].cells.length;
}
rowarray[r]=new Array();
for(c=0;c<doc.rows[r].cells.length;c++){
rowarray[r][c]=doc.rows[r].cells[c].innerText;
}
//document.writeln();
}
with(document.forms[0]){
title.value=rowarray;
flag.value="exp";
row.value=rows;
col.value=maxcol;
}
}/////////////////////////
function gettitle(tb){
var doc=document.getElementById("tb");
var excel = new ActiveXObject("Excel.Application"); var book=excel.Workbooks.Add();
var sheet=book.ActiveSheet;
var rows=doc.rows.length;
for(r=0;r<rows;r++){
var colspan=1;//单元格所占单元格数
var current=1;//td当前打印位置
var maxcolumn=doc.rows[r].cells.length;//当前行列数
for(c=0;c<maxcolumn;c++){
sheet.Cells(r+1,current)=doc.rows[r].cells[c].innerText; //将表格内容赋值给excel单元格
colspan=doc.rows[r].cells[c].colSpan; //取的当前单元格所占单元格数
current=current+colspan;//将当前位置往后移动colspan数量
sheet.Range(sheet.Cells(r+1,current-colspan),sheet.Cells(r+1,current-1)).mergecells=true;
//将刚写入的单元格进行合并。
}
}
excel.Visible=true;
}//gettitle
</script>
</head>
<body>
<html:form action="/expexcel.do">
<html:hidden property="flag" name="expexcelForm" styleId="flag" />
<html:hidden property="title" name="expexcelForm" styleId="title" />
<html:hidden property="row" name="expexcelForm" styleId="row" />
<html:hidden property="col" name="expexcelForm" styleId="col" />
<table border="1" id="tb">
<tr>
<td colspan="2">
r1c1
</td>
<td colspan="3">
r1c2
</td>
<td colspan="2">
r1c3
</td>
</tr>
<tr>
<td>
r2c1
</td>
<td>
r2c2
</td>
<td>
r2c3
</td>
<td>
r2c4
</td>
<td>
r2c5
</td>
<td>
r2c6
</td>
<td>
r2c7
</td>
</tr>
<tr>
<td>
data1
</td>
<td>
data2
</td>
<td>
data3
</td>
<td>
data4
</td>
<td>
data5
</td>
</tr>
</table>
<html:button property="submit" value="导出" onclick="gettitle(id)"></html:button>
<html:submit onclick="exp(id)" value="提交导出"></html:submit>
</html:form>
</body>
</html:html>
你可能要将你的二维数组组成一个字符串提交(加一个明显的分隔符),再在java中解析这个字符串。
像你那种情况,你可以考虑表格的数据来源。
一行一列的数组[["r1c1","r1c2","r2c1"......]]..郁闷啊。。~~~~~~