JS 将Table内容导出到Excel(样式设计)
转载请注明来源:https://www.cnblogs.com/hookjc/
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();
}
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选项 → 安全 → 拉动安全级至(低)");
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;
}
来源:python脚本自动迁移
JS 将Table内容导出到Excel(样式设计)的更多相关文章
- 使用NPOI将TABLE内容导出到EXCEL
项目中需要将页面中的table内容导出到EXCEL,在用了几种方法后发现NPO是最快&最好的 需要应用 NPOI.dll 还有个Ionic.Zip.dll不知道有用没,没去研究,两个DLL都放 ...
- html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式
先上代码 <script type="text/javascript" language="javascript"> var idTmr; ...
- 纯JS 将table表格导出到excel
html <div > <button type="button" onclick="getXlsFromTbl('tableExcel','myDiv ...
- 使用js代码将html导出为Excel
js代码将html导出为Excel的方法: 直接上源码: <script type="text/javascript" language="javascript&q ...
- html5中 table数据导出到excel文件
JS代码: /** * table数据导出到excel * 形参 table : tableId ; * sheetName : 工作薄名 * fileName : 文件名 * linkId :隐藏的 ...
- jsp 页面内容导出到Excel中
日常使用网络资源时经常需要把网页中的内容下载到本地,并且导出到Excel中,现在介绍一种非常简单的方式实现网络资源的下载.只需要讲jsp的最上面加上一句话 <% response.reset() ...
- .Net数据集导出到Excel样式细节---------------摘自别人的
.Net数据集导出到Excel样式细节 本文的目的是总结一些在做Excel导出功能时需要注意的样式细节.使用环境是Asp.Net,数据集的形式是Html Table,Excel还是识别一些CSS代码的 ...
- 将页面上的内容导出到Excel
<asp:Button ID="lkbExport" runat="server" Name="Save" Text="导出 ...
- 【WPF】将DataGrid内容导出到Excel
引言 在做项目时要求将datagrid的内容导出到Excel,以前做winform项目时遇到过,就把代码搬过来用,但wpf和winform还是有些不同,就修改了一些东西,使其能实现这个功能. 本文是导 ...
随机推荐
- MySQL数据操作与查询笔记 • 【第7章 连接查询】
全部章节 >>>> 本章目录 7.1 内连接查询 7.1.1 交叉连接(笛卡尔积) 7.1.2 内连接查询概要 7.1.3 内连接案例 7.1.4 自然连接 7.2 多表连 ...
- 按需引入element-ui报错
按需引入element-ui报错 项目用的脚手架是 vue-cli 3 按照官方文档按需引入组件: https://element.eleme.cn/#/zh-CN/component/quickst ...
- GeoWave实践2:使用命令行将本地矢量数据注入hbase并发布至GeoServer
目录 步骤 补充 步骤 在GeoWave所在的节点打开两个会话窗口. 会话1 //运行GeoServer,默认端口8080 geowave gs run 会话2 //为GeoWave创建数据库Test ...
- Linux-saltstack-4 jinjia模板得基本使用
@ 目录 一.简介 二.jinja2语法 1.jinja2变量 1.1 配置文件中使用jinja变量 1.2在脚本中定义jinja变量 1.3在脚本中设置grains变量 例子1:单值 例子2:多值 ...
- STL(1)vector
STL(1) 1.vector vector是vector直译为"向量",一般说成"变长数组",也就是长度根据需要而自动改变的数组,有些题目需要开很多数组,往往 ...
- Python中单下划线与双下划线用法总结
看mentor的脚本时,遇到self._item.callspec.getparam('')语句,理解起来比较困难,找到一篇文章,记录的比较详细,特别记录一下,以备复习. 附链接地址:http://w ...
- STM32 EXTI(外部中断)
一.EXTI 简介 EXTI(External interrupt/event controller)-外部中断/事件控制器,管理了控制器的 20个中断/事件线.每个中断/事件线都对应有一个边沿检测器 ...
- 额外空间复杂度O(1) 的二叉树遍历 → Morris Traversal,你造吗?
开心一刻 一天,有个粉丝遇到感情方面的问题,找我出出主意 粉丝:我女朋友吧,就是先天有点病,听不到人说话,也说不了话,现在我家里人又给我介绍了一个,我该怎么办 我:这个问题很难去解释,我觉得一个人活着 ...
- Ubuntu16桌面版编译OpenCV4的java库和so库
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Ubuntu下使用VS Code创建Spring Boot工程
目的 我们将在Ubuntu桌面系统下,使用VS Code(Visual Studio Code)编辑器从零开始创建一个Spring Boot工程,并实现一个简单的RESTful风格接口.使用这套流程的 ...