求将嵌套Table导出为Excel或将嵌套的Table转换为普通的Table

JavaScript_R 2014-01-02 05:05:42
如:


<table>
<tr></td></td><tr>
<tr></td></td><tr>
<tr></td>
<table>
<tr></td></td><tr>
<tr></td></td><tr>
<tr></td></td><tr>
<tr></td></td><tr>
</table>
</td><tr>
<tr></td></td><tr>
</table>


直接导出或转换为
<table>
<tr></td></td><tr>
<tr></td></td><tr>
<tr></td></td></tr>
<tr></td></td></tr>
<tr></td></td></tr>
<tr></td></td></tr>
<tr></td></td><tr>
</table>

可以再加分
求大神关注!!!!!!!!!!!!!
...全文
412 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
合并你得想出规律来才行,要不无法合并 就如有4列,第一行只有3列,第一个td colspan=2 第二行有2列,第一个td colspan=3, 你说子表格的行要怎么个合并发,第一td设置colspan为2还是3 到实际应用的时候可能更加复杂。
JavaScript_R 2014-01-10
  • 打赏
  • 举报
回复
自己顶一个
JavaScript_R 2014-01-09
  • 打赏
  • 举报
回复
引用 10 楼 showbo 的回复:
<table id="tb">
<tr><td>1</td><td>1_2</td></tr>
<tr><td colspan="2">2</td></tr>
<tr><td colspan="2">
<table>
<tr><td>3_1</td></tr>
<tr><td>3_2</td></tr>
<tr><td>3_3</td></tr>
<tr><td>3_4</td></tr>
</table>
</td></tr>
<tr><td colspan="2">4</td></tr>
</table>
<script>
    function insertToTable(subTB, refTR) {
        tbody = refTR.parentNode;
        var l = subTB.rows.length;
        for (var i = 0; i <l; i--) {
            tbody.insertBefore(subTB.rows[0], refTR);
        }
        tbody.removeChild(refTR); //删除包含了table的行
    }
    var tb = document.getElementById('tb'), row, tbody, subTB
    for (var i = 0; i < tb.rows.length; i++) {
        row = tb.rows[i];
        
        subTB = row.getElementsByTagName('table');
        if (subTB.length > 0) { //此行包含table
            insertToTable(subTB[0], row);
        }
    }
</script>
列数不同合并没弄。。自己看下效果
你没有考虑合并单元格的部分; 外层的table是有合并单元格的;
JavaScript_R 2014-01-07
  • 打赏
  • 举报
回复
引用 5 楼 showbo 的回复:
你确认你的html结构就是那样的没有? 你这个合并是内嵌的table的行提取插入到最外层的表格去?那你内嵌的行列数和最外层的一样没有先?不一样显示就会很难看了
是将内嵌的table的行提取插入到最外层的表格去; 内嵌的行列数和最外层的行列数都是动态的;
  • 打赏
  • 举报
回复
你确认你的html结构就是那样的没有? 你这个合并是内嵌的table的行提取插入到最外层的表格去?那你内嵌的行列数和最外层的一样没有先?不一样显示就会很难看了
  • 打赏
  • 举报
回复
<table id="tb">
<tr><td>1</td><td>1_2</td></tr>
<tr><td colspan="2">2</td></tr>
<tr><td colspan="2">
<table>
<tr><td>3_1</td></tr>
<tr><td>3_2</td></tr>
<tr><td>3_3</td></tr>
<tr><td>3_4</td></tr>
</table>
</td></tr>
<tr><td colspan="2">4</td></tr>
</table>
<script>
function insertToTable(subTB, refTR) {
tbody = refTR.parentNode;
var l = subTB.rows.length;
for (var i = 0; i <l; i--) {
tbody.insertBefore(subTB.rows[0], refTR);
}
tbody.removeChild(refTR); //删除包含了table的行
}
var tb = document.getElementById('tb'), row, tbody, subTB
for (var i = 0; i < tb.rows.length; i++) {
row = tb.rows[i];

subTB = row.getElementsByTagName('table');
if (subTB.length > 0) { //此行包含table
insertToTable(subTB[0], row);
}
}
</script>


列数不同合并没弄。。自己看下效果
JavaScript_R 2014-01-07
  • 打赏
  • 举报
回复
引用 7 楼 danica7773 的回复:
這個恐怕得用遞歸把html掃一遍,將內層的table提取出來合到父table內,主要需要判斷占多行或多列的情況下,內外層table怎麼合并,還是有點麻煩的...
请问有具体的解决方案吗?谢谢了
引用 8 楼 showbo 的回复:
[quote=引用 6 楼 weilimicrver 的回复:] [quote=引用 5 楼 showbo 的回复:] 你确认你的html结构就是那样的没有? 你这个合并是内嵌的table的行提取插入到最外层的表格去?那你内嵌的行列数和最外层的一样没有先?不一样显示就会很难看了
是将内嵌的table的行提取插入到最外层的表格去; 内嵌的行列数和最外层的行列数都是动态的; [/quote] 动态就不好搞了。。如果内嵌的table有2个td,一个td又嵌入了一个table,那这个内嵌的表tr你怎么添加到外层表格。。结构太复杂你得自己想好怎么提取行才行。。[/quote] 只考虑两层的table,第二层的td里不会再嵌入table; 请问有什么好的方案吗?谢谢了
  • 打赏
  • 举报
回复
引用 6 楼 weilimicrver 的回复:
[quote=引用 5 楼 showbo 的回复:] 你确认你的html结构就是那样的没有? 你这个合并是内嵌的table的行提取插入到最外层的表格去?那你内嵌的行列数和最外层的一样没有先?不一样显示就会很难看了
是将内嵌的table的行提取插入到最外层的表格去; 内嵌的行列数和最外层的行列数都是动态的; [/quote] 动态就不好搞了。。如果内嵌的table有2个td,一个td又嵌入了一个table,那这个内嵌的表tr你怎么添加到外层表格。。结构太复杂你得自己想好怎么提取行才行。。
打字员 2014-01-07
  • 打赏
  • 举报
回复
這個恐怕得用遞歸把html掃一遍,將內層的table提取出來合到父table內,主要需要判斷占多行或多列的情況下,內外層table怎麼合并,還是有點麻煩的...
JavaScript_R 2014-01-06
  • 打赏
  • 举报
回复
自己顶一个
JavaScript_R 2014-01-03
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
将你的html代码内容发到动态页,动态页设置好响应头,直接输出接收到的html就能执行保存操作,直接客户端做不了,或者不兼容其他非ie浏览器
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename=\"xxx.xsl\"");
Response.Write(Request.Form["发送内容的表单键名称"]);
不能使用这个; 也不是要在客户端实现, 客户端只需要把嵌套的table解析为普通的table就可以了;
  • 打赏
  • 举报
回复
将你的html代码内容发到动态页,动态页设置好响应头,直接输出接收到的html就能执行保存操作,直接客户端做不了,或者不兼容其他非ie浏览器
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename=\"xxx.xsl\"");
Response.Write(Request.Form["发送内容的表单键名称"]);

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧