`
lancijk
  • 浏览: 390187 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JS 导入导出 EXcel

    博客分类:
  • JS
阅读更多

 

1:先看页面中的处理

<input type="button" name="Submit" id="ww" class="button_sc" value="导 出" onclick="saveAsExcel('datas')" disabled/>

 

2:页头中的处理

<script language='javascript' src='js/exportExcel.js'></script>

 

3: body部分

  

<table id="datas" width="98%" border="0" cellpadding="0" cellspacing="1" bgcolor="#A7CCE7">
......<!-- 代码部分-->
</table>

 4:JS文件部分exportExcel.js

/* 
* 默认转换实现函数,如果需要其他功能,需自行扩展
* 参数:
* 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 或者 http://jeva.bokee.com
*/
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;
};

 

 

分享到:
评论
1 楼 zenmshuo 2016-09-12  
这个也是调用Excel IO实现的吗?之前都是通过SpreadJS调用Excel IO实现的Excel导入导出。

相关推荐

    JS导入导出Excel 兼容IE、Firefox、Chrome等浏览器

    "JS导入导出Excel 兼容IE、Firefox、Chrome等浏览器"这一技术主题,聚焦于如何使用JavaScript(JS)在各种浏览器环境下处理Excel文件,包括古老的Internet Explorer(IE)、Firefox以及Chrome。下面我们将深入探讨这...

    使用js导入导出excel数据

    在JavaScript(JS)中,导入和导出Excel数据是一项常见的任务,特别是在Web应用程序中处理用户数据时。本文将深入探讨如何使用JavaScript实现这一功能,并基于提供的"待导入的数据.xlsx"文件进行实例讲解。 首先,...

    xlsx.full.min.js-导入导出excel获取数据demo.zip

    标题 "xlsx.full.min.js-导入导出excel获取数据demo.zip" 提到的核心知识点是使用 "xlsx.full.min.js" 库来实现Excel文件的导入、导出以及数据获取功能。这个库是一个压缩包,其中包含了演示这些功能的代码示例。...

    纯前端:luckysheet在线编辑Excel导出,Excel文件导入

    《纯前端实现:Luckysheet在线编辑Excel及文件导入导出详解》 在现代Web应用中,处理Excel数据已经成为一种常见的需求,特别是在数据分析、报表制作等领域。本文将深入探讨一个纯前端解决方案——Luckysheet,它...

    vue导入导出excel文件

    在这个场景中,提到的"vue导入导出excel文件"很可能是通过JavaScript库来完成的,因为标签中提到了"js"。 JavaScript库如`xlsx`或`file-saver`可以帮助我们实现Excel文件的处理。`xlsx`库用于读取、创建和修改Excel...

    SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip

    总的来说,这个项目展示了如何在Java环境中,结合Spring Boot的便利性,利用MyBatis进行数据库操作,借助Apache POI处理Excel文件,以及Thymeleaf生成动态页面,实现数据的导入导出功能。这是一个综合性的Java Web...

    JS导出导入Excel文件插件,简单易用

    总之,通过`xlsx`库或其他类似的JS插件,我们可以轻松实现JavaScript环境中的Excel文件导入和导出功能。理解这些库的工作原理和API,结合实际项目需求,能够帮助你构建高效、健壮的数据处理系统。

    js中导入导出Excel的源码

    在JavaScript(JS)中,处理Excel文件的导入...总结,通过JavaScript处理Excel的导入导出涉及文件读取、数据转换、格式化以及与服务器的交互等多个环节。理解并熟练掌握这些知识点对于构建功能丰富的Web应用至关重要。

    execl导入导出

    "Excel导入导出"这一主题涵盖了如何将数据从外部源导入到Excel工作表,以及如何将Excel数据导出到其他格式或系统中。以下是对这个主题的详细阐述: **一、Excel数据导入** 1. **CSV导入**:CSV(逗号分隔值)是一...

    轻松解决datagrid-export.js的导出excel数字变科学计数法的问题

    有个项目需要用到jquery 的easyui和导出excel,发现官方下载的datagrid-export.js有几处bug,例如导出的excel格式,长数字会默认按科学计数法显示或没了零开头的数字,不符合所见即所得要求。 首先说明前提条件,...

    excel导入导出,包括纯前端解析,后端解析导入导出方式

    在IT行业中,Excel导入导出是一项常见的数据处理任务,尤其在数据分析、报表生成以及用户交互等场景中。这里我们将深入探讨“excel导入导出”的两种主要实现方式:纯前端解析和后端解析,以及如何在前后端之间进行...

    ssh 导入导出excel+百度富文本编辑器+highcharts

    标题中的“ssh 导入导出excel”涉及到SSH框架中处理Excel数据的能力。在实际项目中,我们经常需要从Excel文件中读取数据或者将数据导出到Excel文件,以便于数据交换和报表生成。在SSH框架下,可以使用Apache POI库来...

    spreadjs_导出 Excel 显示复选框而不是布尔值-demo.zip

    2. **demo.html**:这是示例的主HTML文件,其中包含了SpreadJS组件的初始化代码,以及可能的交互逻辑,用于展示如何实现导出Excel时复选框的转换。 3. **gc.spread.sheets.all.14.1.1.min.js**:这是SpreadJS的核心...

    layui数据表格导出Excel插件

    layui数据表格导出Excel插件是一款为layui框架设计的实用工具,它允许用户方便地将layui数据表格中的数据导出到Excel文件中。layui是一款轻量级的前端UI框架,以其简洁、优雅的代码风格和丰富的组件库深受开发者喜爱...

    JS数据导出Excel案例代码

    总的来说,JS数据导出Excel涉及了JavaScript的数据处理、文件格式转换和浏览器API的使用,对于Web开发者来说是一项实用技能。通过理解这些知识点,你可以创建用户友好的功能,使他们能够方便地导出和管理数据。

    Node.js-Javascript解析导入导出Excel文件小示例

    这个示例项目"Node.js-Javascript解析导入导出Excel文件小示例"提供了在Web和Node.js环境中操作Excel文件的基础代码。 首先,我们需要安装`js-xlsx`库。在命令行中,运行以下命令: ```bash npm install xlsx ``` ...

    HTML用JS导出Excel的五种方法.javascript导出excel的5种方法

    导出Excel文件时,需要创建一个工作表对象,然后加入到工作簿中,最后将其转换为二进制数据并下载。 ```javascript // 安装js-xlsx npm install xlsx import * as XLSX from 'xlsx'; function exportToExcel(data...

    js excel导入导出

    ### JavaScript 实现 Excel 的导入与导出 在日常开发工作中,数据处理是非常常见的需求之一,尤其是在需要将数据从网页导出到 Excel 或者从 Excel 导入到网页时。本篇文章将详细介绍如何使用 JavaScript 来实现 ...

    js操作table导出excel

    总结,JavaScript操作HTML表格导出Excel主要涉及以下几个步骤: 1. 引入`FileSaver.js`库。 2. 创建HTML表格并填充数据。 3. 使用JavaScript获取表格数据并转换为CSV格式。 4. 创建Blob对象,并使用`saveAs`方法保存...

    Excel表的导入导出

    "Excel表的导入导出"这个主题涉及到如何将Excel数据与其他应用程序或系统进行交互,包括读取Excel数据到程序中处理,以及将处理后的数据写回Excel文件。以下是关于这个主题的详细知识点: 1. **数据导入**: - **...

Global site tag (gtag.js) - Google Analytics