zoukankan      html  css  js  c++  java
  • asp and javascript: sql server export data to csv and to xls

    <%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
    <%
    //塗聚文
    //20131021
    
    function getData(connectionString, sql){
        var result = null;
        var adStateOpen = 1;
        var connection = new ActiveXObject("ADODB.CONNECTION");
        try{
            connection.Open(connectionString);
        } catch(e1){
            return null;
        }
        if (connection.State !== adStateOpen) {
            return null;
        }
        try{
            var recordset = connection.Execute(sql);
        } catch(e2){
            return null;
        }
        if (!recordset.EOF) {
            result = recordset.GetRows().toArray();
            recordset.Close();
        }
        recordset = null;
        connection.Close();
        connection = null;
        return result;
    }
    
    
    function writeCsvHttpHeaders(filename){
        Response.ContentType = "text/csv";
        Response.Charset = "utf-8";
        Response.AddHeader("Content-Disposition", 
                "attachment; filename="+filename+".csv");
    }
    
    function writeXlsHttpHeaders(filename){
        Response.ContentType = "application/vnd.ms-excel";
        Response.Charset = "utf-8";
        Response.AddHeader("Content-Disposition", 
                "attachment; filename="+filename+".xls");
    }
    
    function getXlsStart(){
        return ""
        + "<html>
    "
        + "<head>
    "
        + "<meta http-equiv="Content-Type" "
        + "content="text/html; charset=UTF-8">
    "
        + "<style type="text/css">
    "
        + "html, body, table {
    "
        + "    margin: 0;
    "
        + "    padding: 0;
    "
        + "    font-size: 11pt;
    "
        + "}
    "
        + "table, th, td { 
    "
        + "    border: 0.1pt solid #D0D7E5;
    "
        + "    border-collapse: collapse;
    "
        + "    border-spacing: 0;
    "
        + "}
    "
        + "</style>
    "
        + "</head>
    "
        + "<body>
    "
        + "<table>
    "
        + "";
    }
    
    function getXlsEnd(){
        return ""
        + "</table>
    "
        + "</body>
    "
        + "</html>"
        + "";
    }
    
    function csvEscape(val){
        if (typeof val === "number") {
            return val.toString(10).replace(".", ",");
        } else if (typeof val === "string") {
            if (val.indexOf(""") !== -1) {
                return """+val.replace(/"/g, """")+""";
            } else if (val.indexOf(";") !== -1) {
                return """+val+""";
            } else {
                return val;
            }
        } else if (val === null) {
            return "#NULL#";
        } else if (val === undefined) {
            return "#UNDEFINED#";
        } else {
            return "#ERROR#";
        }
    }
    
    function writeCsv(filename, data, columnCount){
        writeCsvHttpHeaders(filename);
        // utf-8 BOM (very important for special characters)
        Response.Write("uFEFF");
        for (var i=0, il=data.length; i<il; i+=columnCount) {
            for (var j=0; j<columnCount; j++) {
                Response.Write(csvEscape(data[i+j]));
                if (j !== columnCount-1) {
                    Response.Write(";");
                }
            }
            Response.Write("
    ");
            // prevent Response Buffering Limit Exceeded
            if (i % 1000 === 0) {
                Response.Flush();
            }
        }
    }
    
    function xlsEscape(val){
        if (typeof val === "number") {
            return val.toString(10).replace(".", ",");
        } else if (typeof val === "string") {
            return Server.HTMLEncode(val);
        } else if (val === null)  {
            return "#NULL#";
        } else if (val === undefined)  {
            return "#UNDEFINED#";
        } else {
            return "#ERROR#";
        }
    }
    
    function writeXls(filename, data, columnCount){
        writeXlsHttpHeaders(filename);
        Response.Write(getXlsStart());
        for (var i=0, il=data.length; i<il; i+=columnCount) {
            Response.Write("<tr>");
            for (var j=0; j<columnCount; j++) {
                Response.Write("<td>");
                Response.Write(xlsEscape(data[i+j]));
                Response.Write("</td>");
            }
            Response.Write("</tr>
    ");
            // prevent Response Buffering Limit Exceeded
            if (i % 1000 === 0) {
                Response.Flush();
            }
        }
        Response.Write(getXlsEnd());
    }
    
    function main(){
        var filetype ="Excel" ' Request.QueryString("filetype")();
        var connectionString = "Provider=SQLOLEDB.1;"
        + "Data Source=188.68.218.86;"
        + "User ID=sa;"
        + "Password=2011intranet;"
        + "Initial Catalog=intranet";
        var sql = ""
        + "SELECT * 
    "
        '+ ", B_Name 
    "
        '+ ", B_EnglishName 
    "
        + "FROM branch 
    "
        + ";";
        var filename = "filename";
        var columnCount = 3;
        
        var data = getData(connectionString, sql);
        if (data !== null) {
            Response.Clear();
            if (filetype == "csv") {
                writeCsv(filename, data, columnCount);
            } else {
                writeXls(filename, data, columnCount);
            }
        } else {
            Response.Write("Error, no data found");
        }
        Response.End();
    }
    
    main();
    
    %>
    

  • 相关阅读:
    SAP C4C OBN(Object Based Navigation)不能工作的原因分析
    使用SAP C4C自定义BO association创建动态下拉列表
    如何使用SAP HANA Studio的PlanViz分析CDS view性能问题
    如何使用jMeter测试SAP OData服务并发访问时的性能
    OData服务在SAP CRM,Cloud for Customer和S/4HANA上的实现比较
    SAP UI5和Vue的数据双向绑定实现原理比较
    在SAP WebClient UI里显示倒数计时的UI
    【年度重磅】2020华为云社区年度技术精选合集,700页+免费下载!
    面试必问:如何实现Redis分布式锁
    聊聊架构模式的变迁:从分层架构到微服务架构
  • 原文地址:https://www.cnblogs.com/geovindu/p/3380947.html
Copyright © 2011-2022 走看看