Javascript把数据导出到外部Excel文档


JavaScript #数据导出 #excel #函数2012-06-16 08:59

小弟封装成了一个函数,以下是代码:

function AutomateExcel() {
    try {
        // http://yige.org Start Excel and get Application object.
        var oXL;
        try {
            oXL = new ActiveXObject("Excel.Application");
        } catch(e) {
            alert("无法启动Excel!

如果您确信您的电脑中已经安装了Excel," + "那么请调整IE的安全级别。

具体操作:

" + "工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用");
            return false;
        }
        //Get a new workbook.
        var oWB = oXL.Workbooks.Add();
        var oSheet = oWB.ActiveSheet;
        var table = $("#GridView1")[0];

        var rows = table.rows;
        var columns = table.rows(0).cells;

        var codes = "";

        //设置标题
        var name = "第 <%= _CurrentPage %> 页";
        oXL.Caption = name;
        oSheet.Name = name;

        //设置表头
        oSheet.Cells(1, 1).Value = "申请单编号";
        oSheet.Cells(1, 2).Value = "出货金额";
        oSheet.Cells(1, 3).Value = "营销部门";
        oSheet.Cells(1, 4).Value = "业务人员";
        oSheet.Cells(1, 5).Value = "内部合同号";
        oSheet.Cells(1, 6).Value = "客户名称";
        oSheet.Cells(1, 7).Value = "币种";
        oSheet.Cells(1, 8).Value = "客户船期";
        oSheet.Cells(1, 9).Value = "国别";
        oSheet.Cells(1, 10).Value = "核销单号";
        oSheet.Cells(1, 11).Value = "发票号码";
        oSheet.Cells(1, 12).Value = "报关日期";

        //获取当前页申请单编号
        for (var i = 2; i <= rows.length; i++) {
            codes += "'" + rows(i - 1).cells(0).innerText + "',";
        }
        codes += "''";

        //获取数据并填充数据到EXCEL
        $.post("../Handlers/ShippingApplyHandler.ashx", {
            Action: "ExportData",
            ExportCondition: codes
        },
        function(views) {
            if (views != null) {
                var beginindex = 1;
                var endindex = 1;
                for (var i = 0; i < views.length; i++) {
                    endindex++;
                    oSheet.Cells(i + 2, 1).Value = views[i].SACode;
                    oSheet.Cells(i + 2, 2).Value = views[i].AmountSum;
                    oSheet.Cells(i + 2, 3).Value = views[i].Department;
                    oSheet.Cells(i + 2, 4).Value = views[i].SalesName;
                    oSheet.Cells(i + 2, 5).Value = views[i].ContractNo;
                    oSheet.Cells(i + 2, 6).Value = views[i].CustomerName;
                    oSheet.Cells(i + 2, 7).Value = views[i].CurrencyCode;
                    if (views[i].CustomerSchedule != null) {
                        oSheet.Cells(i + 2, 8).Value = ConvertToJSDate(views[i].CustomerSchedule).Format("yyyy-MM-dd");
                    }
                    oSheet.Cells(i + 2, 9).Value = views[i].Country;
                    oSheet.Cells(i + 2, 10).Value = views[i].VerificationNumber;
                    oSheet.Cells(i + 2, 11).Value = views[i].InvoiceNumber;
                    if (views[i].CustomsDate != null) {
                        oSheet.Cells(i + 2, 12).Value = ConvertToJSDate(views[i].CustomsDate).Format("yyyy-MM-dd");
                    }
                    if (i > 0 && views[i - 1].SACode == views[i].SACode) {
                        oSheet.Range(oSheet.Cells(beginindex, 1), oSheet.Cells(endindex, 1)).Merge();
                        oSheet.Range(oSheet.Cells(beginindex, 2), oSheet.Cells(endindex, 2)).Merge();
                        oSheet.Range(oSheet.Cells(beginindex, 3), oSheet.Cells(endindex, 3)).Merge();
                        oSheet.Range(oSheet.Cells(beginindex, 4), oSheet.Cells(endindex, 4)).Merge();
                        oSheet.Range(oSheet.Cells(beginindex, 5), oSheet.Cells(endindex, 5)).Merge();
                        oSheet.Range(oSheet.Cells(beginindex, 6), oSheet.Cells(endindex, 6)).Merge();
                        oSheet.Range(oSheet.Cells(beginindex, 7), oSheet.Cells(endindex, 7)).Merge();
                        oSheet.Range(oSheet.Cells(beginindex, 8), oSheet.Cells(endindex, 8)).Merge();
                        beginindex = endindex;
                    } else {
                        beginindex++;
                    }
                }
            }
        },
        "json");

        //设置自动列宽        
        oSheet.Columns.AutoFit();

        //设置excel为可见
        oXL.Visible = true;
        //将Excel交由用户控制
        oXL.UserControl = true;
        //禁止提示
        oXL.DisplayAlerts = false;

        //释放资源
        //oXL = null;
        //oWB = null;
        //oSheet = null;
    } catch(e) {}
}


相关文章

粤ICP备11097351号-1