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

  • 相关阅读:
    win7 64位系统,vs2010下配置OpenGL开发环境
    OpenCV stereo matching 代码 matlab实现视差显示
    Cocos2d-x 3.x游戏开发之旅
    芯片验证漫游指南
    名师讲坛:PHP开发实战权威指南
    Python带我起飞:入门、进阶、商业实战
    新编Excel会计与财务管理应用大全(2016实战精华版)
    CorelDRAW X7中文版完全自学宝典
    HTML5 canvas开发详解(第2版)
    中文版3ds Max 2014--VRay效果图制作实用教程
  • 原文地址:https://www.cnblogs.com/geovindu/p/3380947.html
Copyright © 2020-2023  润新知