0

以下は、グリッドビュー データを Excel にエクスポートするために使用している方法です。ユーザーから、ワークシート タブに名前を付けることができるかどうか尋ねられました。何か案は?前もって感謝します!

Private Sub btnExportToExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExportToExcel.Click        
    Dim form As New HtmlForm
    Dim strAttachment As String
    Dim stw As StringWriter
    Dim htextw As HtmlTextWriter

        stw = New StringWriter
        strAttachment = "attachment; filename=" & strAppName & ".xls"
        HttpContext.Current.Response.ClearContent()
        HttpContext.Current.Response.AddHeader("content-disposition", strAttachment)
        HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"
        htextw = New HtmlTextWriter(stw)
        form.Controls.Add(CType(Session("gridViewControl"), Control))
        Me.Controls.Add(form)
        form.RenderControl(htextw)
        Response.Write("<b>" & txtTitle.Text & "</b><br />")
        Response.Write(stw.ToString())            
        Response.Flush()
        Response.Close()
        HttpContext.Current.ApplicationInstance.CompleteRequest()

End Sub
4

3 に答える 3

1

出力が実際にはHTMLテーブルを含むHTMLであるため、これは不可能です。これは、Excelが行と列に喜んで「解析」/変換します(これがテーブルであるため)。実際には「ネイティブ」Excelファイルを作成しているわけではありません。

ネイティブの.Netを使用してExcelXMLを使用することで(すべてのクライアントがExcelを使用していると仮定して)より多くのオプションを使用できます( LINQ to XML、その用語に怖がらないでください)。ExcelXMLのサポートはOffice2003に戻ると思います(おそらくOffice XP / 2002ですが、間違っている可能性があります)。

これはC#またはVB.netで行うことができますが、VB.netではVB.NetのXMLリテラルのため、ほとんど簡単です。インスピレーションについては、Beth MassiによるこのMSDNビデオを参照してください(魔法は5:00頃に始まりますが、ビデオ全体は毎分価値があります)。

于 2012-04-25T15:14:17.273 に答える
0

いいえ、この方法を使用してそれを行う方法はありません。これを行うには、 Gemboxのような特殊なライブラリを使用する必要があります。

于 2012-04-25T14:55:56.267 に答える
0

html ではできませんが、xml (SpreadsheetML) ではできます。ここの回答に投稿したサンプルを見てください:
ASP.NET で Excel ファイルを生成する

于 2012-04-25T18:55:07.203 に答える