首页 > web前端 > js教程 > 正文

js 导出到excel实例教程

零下一度
发布: 2017-06-25 09:12:52
原创
1483人浏览过

转自:

<br/>
登录后复制

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>保存到Excel</title>
</head>
<body>
<input type="button" value="保存到Excel" onclick="JavaScript:saveAsExcel('tableId')" />
<table id="tableId">
<thead>
<tr>
<th>序列</th>
<th>名字</th>
<th>年龄</th>
<th>性别</th>
</tr>
</thead>
<tbody>
<tr>
<td>01</td>
<td>张三</td>
<td>18</td>
<td>女</td>
</tr>
<tr>
<td>02</td>
<td>李四</td>
<td>20</td>
<td>女</td>
</tr>
<tr>
<td>03</td>
<td>王五</td>
<td>22</td>
<td>男</td>
</tr>
<tr>
<td>04</td>
<td>张飞</td>
<td>100</td>
<td>男</td>
</tr>

<br/>
登录后复制

</tbody>
</table>
</body>
<script type="text/javascript">
/*
* 默认转换实现函数,如果需要其他功能,需自行扩展
* 参数:
* tableID : HTML中Table对象id属性值
* 详细用法参见以下 TableToExcel 对象定义
*/
function saveAsExcel(tableID) {
   var tb = new TableToExcel(tableID);
   tb.setFontStyle("Courier New");
   tb.setFontSize(10);
   tb.setTableBorder(2);
   tb.setColumnWidth(7);
   tb.isLineWrap(true);
   tb.getExcelFile();
}

<br/>
登录后复制

/*
* 功能:HTML中Table对象转换为Excel通用对象.
* 参数:tableID HTML中Table对象的ID属性值
* 说明:
* 能适应复杂的HTML中Table对象的自动转换,能够自动根据行列扩展信息
* 合并Excel中的单元格,客户端需要安装有Excel
* 详细的属性、方法引用说明参见:Excel的Microsoft Excel Visual Basic参考
* 示范:
* var tb = new TableToExcel('demoTable');
* tb.setFontStyle("Courier New");
* tb.setFontSize(10); //推荐取值10
* tb.setFontColor(6); //一般情况不用设置
* tb.setBackGround(4); //一般情况不用设置
* tb.setTableBorder(2); //推荐取值2
* tb.setColumnWidth(10); //推荐取值10
* tb.isLineWrap(false);
* tb.isAutoFit(true);
*
* tb.getExcelFile();
* 如果设置了单元格自适应,则设置单元格宽度无效
* 版本:1.0
* BUG提交:QQ:18234348 或者
*/
function TableToExcel(tableID) {
   this.tableBorder = -1; //边框类型,-1没有边框 可取1/2/3/4
   this.backGround = 0; //背景颜色:白色 可取调色板中的颜色编号 1/2/3/4....
   this.fontColor = 1; //字体颜色:黑色
   this.fontSize = 10; //字体大小
   this.fontStyle = "宋体"; //字体类型
   this.rowHeight = -1; //行高
   this.columnWidth = -1; //列宽
   this.lineWrap = true; //是否自动换行
   this.textAlign = -4108; //内容对齐方式 默认为居中
   this.autoFit = false; //是否自适应宽度
   this.tableID = tableID;
}

<br/>
登录后复制

TableToExcel.prototype.setTableBorder = function (excelBorder) {
   this.tableBorder = excelBorder;
};

<br/>
登录后复制

TableToExcel.prototype.setBackGround = function (excelColor) {
   this.backGround = excelColor;
};

<br/>
登录后复制

TableToExcel.prototype.setFontColor = function (excelColor) {
   this.fontColor = excelColor;
};

<br/>
登录后复制

TableToExcel.prototype.setFontSize = function (excelFontSize) {
   this.fontSize = excelFontSize;
};

<br/>
登录后复制

TableToExcel.prototype.setFontStyle = function (excelFont) {
   this.fontStyle = excelFont;
};

<br/>
登录后复制

TableToExcel.prototype.setRowHeight = function (excelRowHeight) {
   this.rowHeight = excelRowHeight;
};

<br/>
登录后复制

TableToExcel.prototype.setColumnWidth = function (excelColumnWidth) {
   this.columnWidth = excelColumnWidth;
};

<br/>
登录后复制

TableToExcel.prototype.isLineWrap = function (lineWrap) {
   if (lineWrap == false || lineWrap == true) {
       this.lineWrap = lineWrap;
   }
};

<br/>
登录后复制

TableToExcel.prototype.setTextAlign = function (textAlign) {
   this.textAlign = textAlign;
};

<br/>
登录后复制

TableToExcel.prototype.isAutoFit = function (autoFit) {
   if (autoFit == true || autoFit == false)
       this.autoFit = autoFit;
}
//文件转换主函数
TableToExcel.prototype.getExcelFile = function () {
   var jXls, myWorkbook, myWorksheet, myHTMLTableCell, myExcelCell, myExcelCell2;
   var myCellColSpan, myCellRowSpan;

初阶PHP Apache MySQL网站设计
初阶PHP Apache MySQL网站设计

初阶PHP Apache MySQL网站设计来自作者多年学习、应用和讲授PHP的经验与体会,是专为学习PHP+MySQL数据库编程人员编与的入门教材。在最后二章设计了2个贴近实际应用的典型案例:留言本系统和论坛系统,每个案例先介绍开发思路、步骤,再给出全部源代码,使所学内容与实际应用紧密结合,特别是论坛系统将全书的案例串讲起来,力求使读者学到最贴近应用前沿的知识和技能。

初阶PHP Apache MySQL网站设计 377
查看详情 初阶PHP Apache MySQL网站设计
<br/>
登录后复制

try {
       jXls = new ActiveXObject('Excel.Application');
   }
   catch (e) {
       alert("无法启动Excel!\n\n" + e.message +
"\n\n如果您确信您的电脑中已经安装了Excel," +
"那么请调整IE的安全级别。\n\n具体操作:\n\n" +
"工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用");
       return false;
   }

<br/>
登录后复制

jXls.Visible = true;
   myWorkbook = jXls.Workbooks.Add();
   jXls.DisplayAlerts = false;
   myWorkbook.Worksheets(3).Delete();
   myWorkbook.Worksheets(2).Delete();
   jXls.DisplayAlerts = true;
   myWorksheet = myWorkbook.ActiveSheet;

<br/>
登录后复制

var readRow = 0, readCol = 0;
   var totalRow = 0, totalCol = 0;
   var tabNum = 0;

<br/>
登录后复制

//设置行高、列宽
   if (this.columnWidth != -1)
       myWorksheet.Columns.ColumnWidth = this.columnWidth;
   else
       myWorksheet.Columns.ColumnWidth = 7;
   if (this.rowHeight != -1)
       myWorksheet.Rows.RowHeight = this.rowHeight;

<br/>
登录后复制

//搜索需要转换的Table对象,获取对应行、列数
   var obj = document.all.tags("table");
   for (x = 0; x < obj.length; x++) {
       if (obj[x].id == this.tableID) {
           tabNum = x;
           totalRow = obj[x].rows.length;
           for (i = 0; i < obj[x].rows[0].cells.length; i++) {
               myHTMLTableCell = obj[x].rows(0).cells(i);
               myCellColSpan = myHTMLTableCell.colSpan;
               totalCol = totalCol + myCellColSpan;
           }
       }
   }

<br/>
登录后复制

//开始构件模拟表格
   var excelTable = new Array();
   for (i = 0; i <= totalRow; i++) {
       excelTable[i] = new Array();
       for (t = 0; t <= totalCol; t++) {
           excelTable[i][t] = false;
       }
   }

<br/>
登录后复制

//开始转换表格
   for (z = 0; z < obj[tabNum].rows.length; z++) {
       readRow = z + 1;
       readCol = 0;
       for (c = 0; c < obj[tabNum].rows(z).cells.length; c++) {
           myHTMLTableCell = obj[tabNum].rows(z).cells(c);
           myCellColSpan = myHTMLTableCell.colSpan;
           myCellRowSpan = myHTMLTableCell.rowSpan;
           for (y = 1; y <= totalCol; y++) {
               if (excelTable[readRow][y] == false) {
                   readCol = y;
                   break;
               }
           }
           if (myCellColSpan * myCellRowSpan > 1) {
               myExcelCell = myWorksheet.Cells(readRow, readCol);
               myExcelCell2 = myWorksheet.Cells(readRow + myCellRowSpan - 1, readCol + myCellColSpan - 1);
               myWorksheet.Range(myExcelCell, myExcelCell2).Merge();
               myExcelCell.HorizontalAlignment = this.textAlign;
               myExcelCell.Font.Size = this.fontSize;
               myExcelCell.Font.Name = this.fontStyle;
               myExcelCell.wrapText = this.lineWrap;
               myExcelCell.Interior.ColorIndex = this.backGround;
               myExcelCell.Font.ColorIndex = this.fontColor;
               if (this.tableBorder != -1) {
                   myWorksheet.Range(myExcelCell, myExcelCell2).Borders(1).Weight = this.tableBorder;
                   myWorksheet.Range(myExcelCell, myExcelCell2).Borders(2).Weight = this.tableBorder;
                   myWorksheet.Range(myExcelCell, myExcelCell2).Borders(3).Weight = this.tableBorder;
                   myWorksheet.Range(myExcelCell, myExcelCell2).Borders(4).Weight = this.tableBorder;
               }

<br/>
登录后复制

myExcelCell.Value = myHTMLTableCell.innerText;
               for (row = readRow; row <= myCellRowSpan + readRow - 1; row++) {
                   for (col = readCol; col <= myCellColSpan + readCol - 1; col++) {
                       excelTable[row][col] = true;
                   }
               }

<br/>
登录后复制

readCol = readCol + myCellColSpan;
           } else {
               myExcelCell = myWorksheet.Cells(readRow, readCol);
               myExcelCell.Value = myHTMLTableCell.innerText;
               myExcelCell.HorizontalAlignment = this.textAlign;
               myExcelCell.Font.Size = this.fontSize;
               myExcelCell.Font.Name = this.fontStyle;
               myExcelCell.wrapText = this.lineWrap;
               myExcelCell.Interior.ColorIndex = this.backGround;
               myExcelCell.Font.ColorIndex = this.fontColor;
               if (this.tableBorder != -1) {
                   myExcelCell.Borders(1).Weight = this.tableBorder;
                   myExcelCell.Borders(2).Weight = this.tableBorder;
                   myExcelCell.Borders(3).Weight = this.tableBorder;
                   myExcelCell.Borders(4).Weight = this.tableBorder;
               }
               excelTable[readRow][readCol] = true;
               readCol = readCol + 1;
           }
       }
   }
   if (this.autoFit == true)
       myWorksheet.Columns.AutoFit;

<br/>
登录后复制

jXls.UserControl = true;
   jXls = null;
   myWorkbook = null;
   myWorksheet = null;
};
</script>
</html>

 

以上就是js 导出到excel实例教程的详细内容,更多请关注php中文网其它相关文章!

相关标签:
WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号