array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 导出HTML的Table到Excel中 - 爱码网

数据报表作为企事业单位上报和下达的重要信息载体,随着信息化建设的不断推进,在实际的工作中得到了前所未有的应用。因此,数据报表已经成为管理信息系统中重要的一项功能,并且,由于数据的多样性和统计信息的增加,数据报表的系统实现变得越来越复杂。
    Microsoft Excel 软件具有十分强大的制表、表格计算等功能,是普通人员常用的制表工具。因此Excel在众多企业中的应用十分广泛。当企业进行信息化建设时,必然需要将Excel的数据导入到信息化系统中去,或将数据导出到Excel中来。如果信息化系统采用C/S结构,导出数据到Excel还比较好说,采用B/S结构就不好说了,相关的资料非常的少。

    下面本文将介绍一种使用javascript将HTML的Table数据导出到Excel的方法。

    1. 用javascript操作Excel
    Excel是一个Com,因此我们在javascript中像其他的开发语言一样创建Excel对象,从而获得访问Excel的能力。
     var xls = new ActiveXObject( "Excel.Application" );
   上面这句话就创建了一个Excel的Application对象。
     var xlBook = xls.Workbooks.Add;
   上面这句话增加一个Excel的WorkBook。
     var xlsheet = xlBook.Worksheets(1);
   上面这句话获得WorkBook的Sheet1对象。
     通过xlsheet.Cells(X, Y)可以访问Sheet中的单元格对象,其中X, Y是单元格的坐标位置。
     Cell对象有很多属性和方法,这里我们将使用到Cell的Value属性,Border属性等。下面给出Cell对象三个常用的属性:
       Cell的Value属性是指表格中的字符串值。
       Cell的Interiro.color属性是指单元格的背景色,例如:
      xlsheet.Cells(CurX, CurY).Interior.color = 0x00FF66;
     
Cell的Borders.LineStyle属性是指单元格的边框样式,该属性是整型值,0表示没有边框,1表示Solid形变框,其他的数字则表示其他的边框类型,大家可以逐个试一下。例如:
      xlsheet.Cells(CurX, CurY).Borders.LineStyle = 1;
   同时Cell还有其它的属性,例如单元格格式等其他属性,有兴趣的朋友可以查找相关的资料。

    2. 用javascript获得Table的信息
    在javascript中我们可以通过定义Table的id,来访问Table的相关信息,Table具有以下一些对象:
     rows对象:行集对象,保存了TR的相关信息,其中用rows[RowIndex]即可访问对应的TR的信息,rows.length返回了Table中的TR的个数,也就是行的个数。
     cells对象:单元格对象,保存了TD的相关信息。cells对象存在于rows[RowIndex]对象中,访问时得通过具体的rows对象来访问,例如访问第一行的表格对象:rows[0].cells;cells.length返回了cells对象所属行中的TD的个数,cells[ColIndex]则对应具体的TD的信息。cells[ColIndex].outerHTML返回了TD的定义语句,cells[ColIndex].innerHTML返回了TD中的内容。例如TD的定义如下:
     <TD width=80>单元格定义</TD>
   则cells[ColIndex].outerHTML返回的结果是“<TD width=80>单元格定义</TD>”,cells[ColIndex].innerHTML返回的结果是“单元格定义”

    3. 用javascript遍历HTML中的Table
    了解了Table的属性以后,我们就可以用javascript来遍历Table的每一个单元格了,下面是遍历的程序,具体的例子代码请查看附录1
function AccessALLTable(objTab)
{
  for (var i = 0; i < objTab.rows.length; i++)
  
    for (var j = 0; j < objTab.rows[i].cells.length; j++)
    {
      s = objTab.rows[i].cells[j].outerHTML;
      alert("第" + i + "行,第" + j + "列:outerHTML为" + s);
     s = objTab.rows[i].cells[j].outerHTML;
     alert("第" + i + "行,第" + j + "列:innerHTML为" + s);
    }
  }
}


    4. 合并单元格
    在HTML的Table中,合并单元格是很简单的事情,只需要指定TD的colspan或者rowspan即可跨行或者跨列,而在Excel中,合并单元格需要先指定Range(范围),例如,合并从Cells(0, 0)到Cells(2, 2)的单元格,则在javascript中这样写就可以了:
      xls.Range(xls.Cells(0, 0), xls.Cells(2, 2)).MergeCells = true;
   
Range同时还是一个对象,我们可以声明一个变量来取出Range对象,并设置对象的相关属性,例如:
      var R = xls.Range(xls.Cells(0, 0), xls.Cells(2, 2));
      R.MergeCells = true;

    5. 导出HTML的Table到Excel中去
    有了上面的知识,我们就可以开始用javascript导出HTML的Table到Excel中去了。下面是导出的代码,具体的例子代码请查看附录1
function PrintTableToExcel(objTab)
{
  try 
  {
    var xls = new ActiveXObject( "Excel.Application" );
  }
  catch(e) 
  {
    alert( "要打印该表,您必须安装Excel电子表格软件,同时浏览器须使用“ActiveX 控件”,您的浏览器须允许执行控件。 请点击【帮助】了解浏览器设置方法!");
    return false;
  }
  xls.visible = true;
  var xlBook = xls.Workbooks.Add;
  var xlsheet = xlBook.Worksheets(1);
  var x = 1;
  var y = 1;
  for (var i = 0; i < objTab.rows.length; i++)
  {
    y = 1;
    for (var j = 0; j < objTab.rows[i].cells.length; j++)
    {
      xlsheet.Cells(x, y).Value = objTab.rows[i].cells[j].innerHTML;
     

相关文章: