2017-10-23 4 views
-1

WebサイトからグリッドビューをExcelドキュメントにエクスポートしようとしています。WebサイトのグリッドビューをVisual BasicでExcelにエクスポート

私はVisual Basicで作業する必要があります。これはC#の場合は煙が出ていると確信しているので、それはバマーです。

私はこのエラー私はGridViewのをエクスポートするために私のボタンのいくつかの異なるVBスクリプトを試してみました

ScriptResource.axd?.... Uncaught Error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. at Function.Error$create [as create] (ScriptResource.axd? at PageRequestManager$_createPageRequestManagerParserError [as _createPageRequestManagerParserError] (ScriptResource.axd.....

...同じ構文解析エラーのすべての結果を得続けます。

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    If Not IsPostBack Then 
     Me.BindGrid() 
    End If 
End Sub 

Private Sub BindGrid() 
    Dim strConnString As String = ConfigurationManager.ConnectionStrings("RData").ConnectionString 
    Using con As New SqlConnection(strConnString) 
     Using cmd As New SqlCommand("SELECT vWosearch.TypeofWorkOrder FROM vWOSearch") 
      Using sda As New SqlDataAdapter() 
       cmd.Connection = con 
       sda.SelectCommand = cmd 
       Using dt As New DataTable() 
        sda.Fill(dt) 
        wogridviewex.DataSource = dt 
        wogridviewex.DataBind() 
       End Using 
      End Using 
     End Using 
    End Using 
End Sub 

Public Sub Export_Click(ByVal sender As Object, ByVal e As System.EventArgs) 

     Response.Clear() 
     Response.Buffer = True 
     Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls") 
     Response.Charset = "" 
     Response.ContentType = "application/vnd.ms-excel" 
     Using sw As New StringWriter() 
      Dim hw As New HtmlTextWriter(sw) 
      wogridviewex.RenderControl(hw) 
      Response.Write(hw) 
      Response.Output.Write(hw.ToString()) 
      Response.Flush() 
      HttpContext.Current.ApplicationInstance.CompleteRequest() 
     End Using 


    End Sub 
    Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control) 
    End Sub 

そして、アイブ氏は、ASPXページからのGridViewは

<asp:UpdatePanel ID="outerupdatepanel" runat="server"> 
<ContentTemplate> 
<asp:Button ID="ExportWorkOrders" runat="server" Text="Export to Excel" onclick="Export_Click"/> 

     <asp:GridView ID="wogridviewex" runat="server" AllowPaging="False" DataSourceID="SD1"> 
      <Columns> 
       <asp:BoundField DataField="TypeofWorkOrder" HeaderText="Part Code" /> 
      </Columns> 
     </asp:GridView> 

    <asp:SqlDataSource ID="sd1" runat="server" ConnectionString='<%$ ConnectionStrings:here%>' 
     SelectCommand="blah enter my sql stuff"> 
</ContentTemplate> 
</asp:UpdatePanel> 

シンプルで、今私はEPPlusのAPIを使用して、まだ解析エラーを取得し、この1

Public Sub Export_Click(ByVal sender As Object, ByVal e As System.EventArgs) 

    wogridview.DataBind() 
    Response.Clear() 
    Response.Buffer = True 
    Response.AddHeader("Content-Disposition", "attachment; filename=MyExcelFileName.xls") 
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" 
    Dim writer As New System.IO.StringWriter() 
    Dim html As New System.Web.UI.HtmlTextWriter(writer) 
    wogridview.GridLines = GridLines.Both 
    wogridview.RenderControl(html) 
    Response.Write(writer) 
    Response.Flush() 
    HttpContext.Current.ApplicationInstance.CompleteRequest() 
    Response.End() 


End Sub 
Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control) 
End Sub 

を試してみました。 UpdatePanelは、解析エラーを取り除く:この発生したため

Protected Sub CreateXLSXFile(sender As Object, e As EventArgs) Handles btnGenerateXLSX.Click 
     GenerateXLSXFile(CreateDataTable()) 
    End Sub 

    Public Sub GenerateXLSXFile(tbl As DataTable) 

     Dim excelPackage = New ExcelPackage 

     Dim excelWorksheet = excelPackage.Workbook.Worksheets.Add("DemoPage") 

     excelWorksheet.Cells("A1").LoadFromDataTable(tbl, True) 

     Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" 
     Response.AddHeader("content-disposition", "attachment;  filename=ExcelDemo.xlsx") 
     Dim stream As MemoryStream = New MemoryStream(excelPackage.GetAsByteArray()) 

     Response.OutputStream.Write(stream.ToArray(), 0, stream.ToArray().Length) 

     Response.Flush() 

     Response.Close() 

    End Sub 

    Private Function CreateDataTable() As DataTable 

     Dim dataTable As New DataTable("DT") 
     'TODO: INSERT CONNECTION STRING  
     Dim DBConnection As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("Rdata").ConnectionString) 


     DBConnection.Open() 

     Dim sql As String = "SELECT * from vwosearch;" 
     Dim cmd As New SqlCommand(sql, DBConnection) 

     Dim adaptor = New SqlDataAdapter 

     adaptor.SelectCommand = cmd 
     adaptor.Fill(dataTable) 
     DBConnection.Close() 

     Return dataTable 


    End Function 
+0

たとえば、[EPPlus](http://stackoverflow.com/documentation/epplus/drafts/98280)のようなExcelファイルの作成に特化したライブラリの使用を開始します。あなたが今やっていることは、拡張子が.xlsのHTMLページを作成することだけです。 – VDWWD

+0

私はグリッドビューをとり、それをExcelに変えるために特別なライブラリが必要とは思わないでしょう。私はEPPplus用のnuegetをインストールしましたが、girdviewをエクセルにエクスポートするVBの例はありません。私はC#の例をたくさん見つけていますが、私はVBで動くものが必要です。 – JKB

+0

ユーザーがこのグリッドビューで行うことは、データを選択したデータセットにフィルタリングしてエクスポートすることです。ボスは、Excelのようにコピーして貼り付けることは望ましくありませんが、私はグリッドビューをエクスポートしないで動作する必要があります。私の頭は、グリッドビューをExcelにエクスポートしないように指示していますが、代わりにクエリの結果をExcelにエクスポートします。 – JKB

答えて

0

理由は、私が上に

<asp:UpdatePanel ID="outerupdatepanel" runat="server"> 
<ContentTemplate> 

を持っていたし、ASPを削除し、底に閉じていることです。上記の3つの方法はすべて、UpdatePanelsをaspxから削除する限り動作します。

関連する問題