视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
js导出到excel实例教程
2020-11-27 20:20:26 责编:小采
文档

转自:


<!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>


</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();
}


/*
* 功能: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;
}


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


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


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


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


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


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


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


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


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


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;


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;
}


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


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


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


//搜索需要转换的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;
}
}
}


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


//开始转换表格
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;
}


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


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;


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

下载本文
显示全文
专题