`
JavaSam
  • 浏览: 951757 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript操作Excel

 
阅读更多
/* 
* 默认转换实现函数,如果需要其他功能,需自行扩展
* 参数:
* 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;
};

 

 

0
0
分享到:
评论
1 楼 amberlike 2014-07-21  
这还是交给后台来做吧.....非常讨厌IE...

相关推荐

    javascript操作EXCEL

    JavaScript 操作 Excel JavaScript 操作 Excel 是指使用 JavaScript 语言来操作和控制 Excel 应用程序。通过使用 ActiveXObject 对象,可以在客户端操作 Excel 文件,而不需要访问服务器端。 在使用 JavaScript ...

    JavaScript操作Excel_Demo.zip

    在这个“JavaScript操作Excel_Demo.zip”压缩包中,包含了一个名为“xlsx.full.min.js”的插件,它是XLSX库的一个版本,用于读取和写入CSV、XLS、XLSX等多种格式的电子表格文件。这个库基于JSON,使得在JavaScript...

    javascript操作excel生成报表示例_.docx

    【JavaScript操作Excel生成报表】 在IT领域,有时候我们需要在网页端生成报表并导出为Excel格式,以便用户能够方便地下载和分析数据。JavaScript是一种常用的客户端脚本语言,虽然它通常用于网页交互,但通过特定的...

    封装好的一套javascript操作Excel的javabean

    实现javascript操作Excel进行报表输出的javabean接口类,通过调用bean的方法快速生成客户端的javascript来操作Excel,实现读取Excel模板,添加记录,打印设置,打印预览,自动保存文件等功能,本人多年的web开发经验...

    javascript 操作Word和Excel的实现代码

    虽然题目和描述中没有具体提及Excel文档的操作,但我们可以基于Word文档操作的基础之上,介绍如何使用JavaScript操作Excel文档。 ##### 1. 创建Excel对象 创建Excel对象的方式与创建Word对象类似,都是通过`...

    javascript excel操作

    ### JavaScript 操作 Excel 的知识点详解 #### 一、概述 ...综上所述,通过JavaScript操作Excel是一个实用的功能,但需要注意兼容性和安全性问题。开发者应该根据实际情况选择合适的技术栈来实现这一需求。

    js操作excel

    ### JavaScript操作Excel知识点详解 #### 一、简介 在日常工作中,经常需要处理Excel文档,尤其是在Web应用中,用户可能需要导出数据到Excel文件。虽然有多种方式可以实现这一功能,但使用JavaScript来直接操作...

    Js操作Excel常用方法.pdf

    在介绍JavaScript操作Excel的常用方法之前,首先要明确一点,这些操作通常是借助COM自动化技术(如ActiveX对象)来实现的,因为这涉及到直接与Excel应用程序的接口交互。然而,需要注意的是,这种做法主要适用于...

    javascript 操作Word和Excel的实现代码.docx

    虽然题目中没有具体提到如何使用JavaScript操作Excel文档,但在实际应用中,通常可以通过Microsoft Office提供的OLE自动化或者第三方库如`SheetJS`来实现。这里提供一个简单的示例,展示如何使用`SheetJS`库将JSON...

    Javascript 读取Excel实例

    - **js-xlsx**:这是xlsx库的旧名,功能与xlsx相同,提供读取、写入和操作Excel文件的能力。 - ** SheetJS**:xlsx库的GitHub仓库名为SheetJS,它提供了多种语言的接口,包括JavaScript。 4. **读取流程** - ...

    js操作excel.rar

    在IT行业中,JavaScript(简称JS)是一种广泛使用的前端编程语言,它主要负责...了解这些知识点后,开发人员可以根据实际需求,结合提供的HTML文件学习和实践JavaScript操作Excel的技巧,从而实现高效的数据导出功能。

    javascript+vba实现打印excel功能

    本文将深入探讨如何使用JavaScript和VBA(Visual Basic for Applications)来实现Excel的批量打印功能,从而避免手动逐个打印工作表的繁琐操作。 JavaScript是一种广泛使用的脚本语言,通常应用于网页前端交互,但...

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

    对于Microsoft Edge和IE浏览器,可以利用`OfficeJS`库直接操作Excel在线版。这需要用户有Office 365订阅,并在支持的浏览器中运行。 ```javascript // 引入OfficeJS库 import * as Office from 'office-js'; ...

    asp.net 中用excel 实现报表设计

    // 使用JavaScript操作Excel function createExcel() { var excel = new ActiveXObject("Excel.Application"); var workbook = excel.Workbooks.Add(); var worksheet = workbook.Worksheets[1]; // 填充数据 ...

    table导出excel(JS法-所见即所得)

    知识点2: 使用JavaScript操作Excel 在获取了Excel应用程序对象后,我们可以使用JavaScript来操作Excel。例如,在本例中,我们使用了`oXL.Workbooks.Add()`来添加一个新的工作簿,`oWB.ActiveSheet`来获取活动工作表...

    JavaScript仿Excel表格演示

    JavaScript仿Excel表格演示提供了一种高效且灵活的方法,让用户在浏览器环境中享受到类似于Microsoft Excel的操作体验。这种技术主要依赖于HTML5的新特性,如数据绑定、事件处理以及Web存储等,以实现动态表格的功能...

Global site tag (gtag.js) - Google Analytics