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>\n"
    + "<head>\n"
    + "<meta http-equiv=\"Content-Type\" "
    + "content=\"text/html; charset=UTF-8\">\n"
    + "<style type=\"text/css\">\n"
    + "html, body, table {\n"
    + "    margin: 0;\n"
    + "    padding: 0;\n"
    + "    font-size: 11pt;\n"
    + "}\n"
    + "table, th, td { \n"
    + "    border: 0.1pt solid #D0D7E5;\n"
    + "    border-collapse: collapse;\n"
    + "    border-spacing: 0;\n"
    + "}\n"
    + "</style>\n"
    + "</head>\n"
    + "<body>\n"
    + "<table>\n"
    + "";
}

function getXlsEnd(){
    return ""
    + "</table>\n"
    + "</body>\n"
    + "</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("\n");
        // 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>\n");
        // 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 * \n"
    '+ ", B_Name \n"
    '+ ", B_EnglishName \n"
    + "FROM branch \n"
    + ";";
    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();

%>
时间: 2024-09-23 01:43:22

asp and javascript: sql server export data to csv and to xls的相关文章

利用ASP嵌套JS+SQL Server打造两级连动下拉框(二)

js|server|下拉 利用ASP嵌套JS+SQL Server打造两级连动下拉框(2) TwoLevel.asp<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="GENERATOR" content="Microsoft FrontPage 4.0"

利用ASP嵌套JS+SQL Server打造两级连动下拉框(一)

js|server|下拉 利用ASP嵌套JS+SQL Server打造两级连动下拉框(1)   随着网络技术的迅速发展,越来越多的电子商务网站也应运而生.而在构建一个功能强大的电子商务网站往往少不了提供网上注册功能给客户自行注册这个模块,为了尽可能方便客户填写信息,我们经常要用到下拉框供客户选择,特别是两级连动下拉框最为常用. 再说,本人今日发现CSDN论坛上也经常有网友提问这个问题,就是,需要一个两级连动下拉框,第一个显示省份名称,第二个显示相应的城市名.为了解答这个问题,我特别写这篇文章,希

在ASP中使用SQL Server和MSDE

server 作者系2月份微软社区之星Microsoft China Community Star 微软出品的SQL Server是Windows环境中常用的一种数据库服务器软件,也是ASP应用中经常用到的数据库之一.本文主要讲述SQL Server与ASP结合使用的一些技巧. 一.SQL Server的获取和安装 如果是商业应用,建议购买SQL Server的标准版或者企业版,价格2万多(比Windows还贵):如果是个人学习使用,或者财力有限,可以使用桌面版--MSDE.目前在.NET Fr

求助:asp.net访问sql server 无法创建数据库

问题描述 求助:asp.net访问sql server 无法创建数据库 OdeToFoodDb _db = new OdeToFoodDb(); public ActionResult Index() { var model = _db.Restaurant.ToList(); return View(model); } 错误提示:在数据库 'master' 中拒绝了 CREATE DATABASE 权限. network_service 和windows用户已设置为master数据库的owne

SQL SERVER 2005 Data目录产生大量trc文件

今天用服务器下载文件时,系统提示我硬盘分区空间不足了.点击查看硬盘分区是50GB,已经只剩下175MB了.而这个服务器应该没有什么大文件才对呀.     仔细查看,发现SQL Server 2005占用了差不多40GB的空间了,而SQL Server应该只运行了网站数据库才对,不可能那么大空间.再仔细查看,发现SQL Server的data目录占用了差不多38GB的空间,进入此目录下,发现了大量类似 audittrace20100102104348.trc的文件.     通过放狗搜索和群友的支

在asp中调用sql server的存储过程

在asp中调用sql server的存储过程可以加快程序运行速度,所以这些天在研究asp中利用sql server的存储过程,现总结如下,其中很多思想也是直接从chinaasp论坛中得出来,希望能给大家一些帮助.1.调用存储过程的一般方法先假设在sql server中有一存储过程dt_users:CREATE PROCEDURE [dbo].[dt_users] ASselect * from usersreturnGO第一种方法是不利用command对象,直接用recordset对象set r

ASP实现备份sql server数据

server|sql|备份|数据 建个bak文件夹啊,放数据! db.asp代码如下: <%dim conndim connstr'on error resume nextset conn=server.CreateObject("adodb.connection")connstr="Provider=SQLOLEDB;data source=192.168.2.1;UID=sa;Pwd=123;DataBase=test"conn.Open connstr

利用ASP嵌套JS+SQL Server打造两级连动下拉框

js|server|sql|下拉 随着网络技术的迅速发展,越来越多的电子商务网站也应运而生.而在构建一个功能强大的电子商务网站往往少不了提供网上注册功能给客户自行注册这个模块,为了尽可能方便客户填写信息,我们经常要用到下拉框供客户选择,特别是两级连动下拉框最为常用. 再说,本人今日发现CSDN论坛上也经常有网友提问这个问题,就是,需要一个两级连动下拉框,第一个显示省份名称,第二个显示相应的城市名.为了解答这个问题,我特别写这篇文章,希望能对需要这方面资料的网友有所帮助. 首先,我们先来设计数据库

ASP.NET2.0 SQL Server数据库连接详解_实用技巧

Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection. SqlConnection类的对象连接SQL Server数据库:OracleConnection 类的对象连接Oracle数据库: OleDbConnection类的对象连接支持OLE DB的数据库,如Access:而OdbcConnection类的对象连接任何支持ODBC的数据库.与数据库的所有通讯最终都是通过Connection对象来完