asp指定列

时间:2015-10-06 09:37:30

标签: asp.net vb.net excel gridview

我想添加一个按钮,从ASP gridview导出excel。

  1. 将INV分组到“数据”表
  2. 将标题从INV更改为REF&将LN转换为“详细信息”表
  3. 在“详细信息”表单中添加一个列标题“FLAG”
  4. 添加第2行
  5. 谁可以帮我修改下面的代码?

            Protected Sub btnconvert_Click(sender As Object, e As EventArgs) Handles btnconvert.Click
                Dim strDateTime As String = Format(Now(), "yyyyMMdd-HHmmss")
                Response.ClearContent()
                Response.AddHeader("content-disposition", "attachment; filename=HRS-SO-" & strDateTime & ".xls")
                Response.ContentType = "application/excel"
                Dim sw As New System.IO.StringWriter()
                Dim htw As New HtmlTextWriter(sw)
                Response.Write(sw.ToString())
                Response.[End]()
           End sub
    
    Gridview1
    INV          LINE QTY
    ===============================================
    TESTINV001   001  200
    TESTINV001   002  200
    TESTINV002   001  1000
    
    "data"
    REF
    INV
    ===============================================
    TESTINV001
    TESTINV002
    
    "details"
    REF          LN   QTY  FLAG
    INV          LINE QTY  FLAG
    ===============================================
    TESTIN001    001  200  
    TESTIN001    002  200  
    TESTIN002    001  1000 
    
    <div>
        <table class="auto-style4" cellspacing="0" rules="all" border="1" id="GridView1" style="border-collapse:collapse;">
            <tbody><tr>
                <th scope="col">INV</th><th scope="col">LINE</th><th scope="col">QTY</th>
            </tr><tr>
                <td>TESTINV001</td><td>001</td><td>200</td>
            </tr><tr>
                <td>TESTINV001</td><td>002</td><td>200</td>
            </tr><tr>
                <td>tESTINV002</td><td>001</td><td>1000</td>
            </tr>
        </tbody></table>
    </div>
    
    var tablesToExcel = (function () {
        var uri = 'data:application/vnd.ms-excel;base64,'
        , tmplWorkbookXML = '<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">'
          + '<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Author>Axel Richter</Author><Created>{created}</Created></DocumentProperties>'
          + '<Styles>'
          + '<Style ss:ID="Currency"><NumberFormat ss:Format="Currency"></NumberFormat></Style>'
          + '<Style ss:ID="Date"><NumberFormat ss:Format="Medium Date"></NumberFormat></Style>'
          + '</Styles>'
          + '{worksheets}</Workbook>'
        , tmplWorksheetXML = '<Worksheet ss:Name="{nameWS}"><Table>{rows}</Table></Worksheet>'
        , tmplCellXML = '<Cell{attributeStyleID}{attributeFormula}><Data ss:Type="{nameType}">{data}</Data></Cell>'
        , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
        , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }
        return function (tables, wsnames, wbname, appname) {
            var ctx = "";
            var workbookXML = "";
            var worksheetsXML = "";
            var rowsXML = "";
    
            for (var i = 0; i < tables.length; i++) {
                if (!tables[i].nodeType) tables[i] = document.getElementById(tables[i]);
                for (var j = 0; j < tables[i].rows.length; j++) {
                    rowsXML += '<Row>'
                    for (var k = 0; k < tables[i].rows[j].cells.length; k++) {
                        var dataType = tables[i].rows[j].cells[k].getAttribute("data-type");
                        var dataStyle = tables[i].rows[j].cells[k].getAttribute("data-style");
                        var dataValue = tables[i].rows[j].cells[k].getAttribute("data-value");
                        dataValue = (dataValue) ? dataValue : tables[i].rows[j].cells[k].innerHTML;
                        var dataFormula = tables[i].rows[j].cells[k].getAttribute("data-formula");
                        dataFormula = (dataFormula) ? dataFormula : (appname == 'Calc' && dataType == 'DateTime') ? dataValue : null;
                        ctx = {
                            attributeStyleID: (dataStyle == 'Currency' || dataStyle == 'Date') ? ' ss:StyleID="' + dataStyle + '"' : ''
                               , nameType: (dataType == 'Number' || dataType == 'DateTime' || dataType == 'Boolean' || dataType == 'Error') ? dataType : 'String'
                               , data: (dataFormula) ? '' : dataValue
                               , attributeFormula: (dataFormula) ? ' ss:Formula="' + dataFormula + '"' : ''
                        };
                        rowsXML += format(tmplCellXML, ctx);
                    }
                    rowsXML += '</Row>'
                }
                ctx = { rows: rowsXML, nameWS: wsnames[i] || 'Sheet' + i };
                worksheetsXML += format(tmplWorksheetXML, ctx);
                rowsXML = "";
            }
    
            ctx = { created: (new Date()).getTime(), worksheets: worksheetsXML };
            workbookXML = format(tmplWorkbookXML, ctx);
    
            var link = document.createElement("A");
            link.href = uri + base64(workbookXML);
            link.download = wbname || 'Workbook.xls';
            link.target = '_blank';
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        }
    })();
    

0 个答案:

没有答案
相关问题