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();
    
    %>
    

  • 相关阅读:
    Day4 0708
    Day2 0706
    两道递推公式题的解题报告
    博客还需优化
    飞行路线Luogu4568
    堆优化Dijkstra(Luogu 4779)
    2019四等奖的清明节征文
    2019四等奖的叶圣陶初稿
    Luogu P1072 Hankson的趣味题
    Loj10022 埃及分数(迭代加深搜索IDDFS)
  • 原文地址:https://www.cnblogs.com/geovindu/p/3380947.html
Copyright © 2011-2022 走看看