javascript 导excle table表中有跨行和跨列的

原创 2007年09月25日 10:20:00

 <script type="text/javascript">
 function AutostatExcel(fromrow) {
 
  var oXL = new ActiveXObject("Excel.Application"); //创建应该对象
     var oWB = oXL.Workbooks.Add();//新建一个Excel工作簿
     var oSheet = oWB.ActiveSheet;//指定要写入内容的工作表为活动工作表
     var table = document.getElementById("statdata");注意这里是table的名字或是ID
     var rows = table.rows.length;
     var colSumCols = table.rows(0).cells.length;
     var beginCol = 0;
     var cols = colSumCols;
     var rowSpans=1;  //行合并
     var colSpans=1;  //列合并
     //寻找列数,考虑到第一行可能存在合并
     for (var i=0; i<colSumCols;i++) {
         var tmpcolspan = table.rows(0).cells(i).colSpan;
         if ( tmpcolspan>1 ) {
             cols += tmpcolspan-1;
         }
     }
     //定义2维容器数据,1:行;2:列;值(0 可以填充,1 已被填充)
     var container=new Array(rows);
     for (var i=0;i<rows;i++) {
         container[i]=new Array(cols);
         for (j=0;j<cols;j++) {
             container[i][j]=0;
         }
     }
     //将所有单元置为文本,避免非数字列被自动变成科学计数法和丢失前缀的0
     oSheet.Range(oSheet.Cells(fromrow+1,1), oSheet.Cells(fromrow+rows,cols)).NumberFormat = "@";
     oXL.Visible = true;
     // Add table headers going cell by cell.
     for (i=0;i<rows;i++){
         for (j=0;j<cols;j++){
             //寻找开始列
             for (k=j;k<cols;k++){
                 if (container[i][k]==0) {
                     beginCol=k;
                     k=cols; //退出循环
                 }
             }
             //赋值
             oSheet.Cells(i+1+fromrow,beginCol+1).value = table.rows(i).cells(j).innerText;
             colSpans = table.rows(i).cells(j).colSpan;
             if (colSpans>1) {
                 //合并
                 oSheet.Range(oSheet.Cells(i+1+fromrow,beginCol+1), oSheet.Cells(i+1+fromrow,beginCol+colSpans)).Merge();
             }
             //将当前table位置填写到对应的容器中
             for (k=0; k<colSpans;k++) {
                 container[i][beginCol+k]= 1;
             }
             rowSpans = table.rows(i).cells(j).rowSpan;
             if (rowSpans>1) { //行合并
                 oSheet.Range(oSheet.Cells(i+1+fromrow,beginCol+1), oSheet.Cells(i+rowSpans+fromrow,beginCol+colSpans)).Merge();
                 //将当前table位置填写到对应的容器中
                 for (k=1; k<rowSpans;k++) {  //由于第0行已经被colSpans对应的代码填充了,故这里从第1行开始
                     for (l=0;l<colSpans;l++) {
                         container[i+k][beginCol+l]=1;
                     }
                 }
             }
             //如果开始列+合并列已经等于列数了,故不需要再循环html table
             if (beginCol+colSpans>=cols) j=cols;
         }
     }
     //字符大小为9
     oSheet.Range(oSheet.Cells(fromrow+1,1), oSheet.Cells(fromrow+rows,cols)).Font.Size=9;
     //自动调整列宽
     oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(fromrow+rows,cols)).Columns.AutoFit();
     //自动调整行高
     oSheet.Range(oSheet.Cells(fromrow+1,1), oSheet.Cells(fromrow+rows,cols)).Rows.AutoFit();
     //划边框
     oSheet.Range(oSheet.Cells(fromrow+1,1), oSheet.Cells(fromrow+rows,cols)).Borders.LineStyle = 1;
     return rows;
 }

</script>

java实现导出Excel(跨行,跨列)

最终效果:。 第一步: 传参,后期可根据自己需要进行调整。我这里需要的是  quarter 代表季度 dptid 部门编号 根据接受过来的参数进行文档命名。 UserInfo userIn...

POI框架导出EXCEL的简单列子(跨行跨列)合并单元格

public static void main(String[] args) throws IOException { try{ HSSFWorkb...

java初学者--html系列教程--表格的使用(三)-跨行与跨列

效果图如下:     QQ截图20140603143659.png (8.66 KB, 下载次数: 0) 下载附件  保存到相册 Table标签的使用 7 分钟...

01、C#开发WPS(金山办公软件)——初体验

目前(2015),新版本的WPS的开发文档已经使用V9版本。笔者也是最近开始学习用C#开发WPS,这里的开发不是针对插件,而是用代码操作WPS。下面跟随我一起开始进行开发吧。     一、开发环境  ...

导出excel功能,较通用的一种实现

作用:通过jxl包生成excel文件。示例请看main方法  特点:  1、通过java的反射特性,将jxl生成excel的逻辑,和业务数据解耦。在LinkedHashMap参数中定义每一列的...

java 解析Excel 与常用的xml解析方法

1,DOM 解析 XML 文件格式如下:    <?xml version="1.0" encoding="GB2312"?>    <RESULT>       <VALUE>      ...

table跨行(rowspan)跨列(colspan)

class="tree dataTable no-footer" showAddBtn="true"> style="background: #DBDBDB"> ...

浅谈如何实现table所有td(可跨行跨列)的值存进二维数组

var rows = 0, cols = 0, nums = 0; var trs = document.getElementsByTagName("tr"); var row = document....

html中实现table跨行跨列

原创作品,请勿转载,谢谢合作啦~          今天在公司做个打印需求时,被table难住了,网上给的跨行跨列没有能解决我的问题的,于是乎想给基础较差的同行说道说道。          普通的...

html中的table跨行跨列用法

跨行:colspan    合并单元格 跨列:rowspan   合并行 1.跨2列 111 ...
  • lu_0216
  • lu_0216
  • 2016年12月02日 16:44
  • 2839
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript 导excle table表中有跨行和跨列的
举报原因:
原因补充:

(最多只允许输入30个字)