0

Excelファイルを作成するには、次の方法があります。

Private Sub ExportToExcel()

    Dim dv As DataView = CType(SqlDataSourceExel.Select(DataSourceSelectArguments.Empty), DataView)

    Dim dt As DataTable = dv.ToTable()

    Dim query = From r In dt.AsEnumerable()
               Select New With {
                   .callid = r.Field(Of Decimal)("callid"),
                   .Problem = r.Field(Of String)("Problem"),
                   .Details = r.Field(Of String)("Details"),
                   .Entered_Date = r.Field(Of DateTime)("Entered_Date"),
                   .Name = r.Field(Of String)("Name"),
                   .comments = ""
                   }

    Dim sb As StringBuilder = New StringBuilder()
    Dim fileName As String = "list.xls"

    'sb.Append("Call Id \t Problem \t Details \t Entered_Date & \t Logged by \t Comments")

    For Each row In query
        sb.Append(row.callid & "\t" & row.Problem & "\t" & row.Details & "\t" & row.Entered_Date & "\t" & row.Name & "\t" & row.comments & "\n")

    Next

    HttpContext.Current.Response.Clear()
    HttpContext.Current.Response.ContentType = "Application/x-msexcel"
    HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + fileName)
    HttpContext.Current.Response.Write(sb.ToString())
    HttpContext.Current.Response.End()

End Sub

コードを実行すると、次のエラーが発生します。どうすれば修正できますか?

Microsoft JScript ランタイム エラー: Sys.WebForms.PageRequestManagerParserErrorException: サーバーから受信したメッセージを解析できませんでした。

4

1 に答える 1

0

以下のコードを使用できます。

DataTable DtReqDetails = (DataTable)ViewState["DtReqDetails"];
        if (DtReqDetails != null)
        {
            string attachment = "attachment; filename=History.xls";
            Response.ClearContent();
            Response.AddHeader("content-disposition", attachment);
            Response.ContentType = "application/vnd.ms-excel";
            string tab = "";
            foreach (DataColumn dc in DtReqDetails.Columns)
            {
                Response.Write(tab + dc.ColumnName);
                tab = "\t";
            }
            Response.Write("\n");
            int i;
            foreach (DataRow dr in DtReqDetails.Rows)
            {
                tab = "";
                for (i = 0; i < DtReqDetails.Columns.Count; i++)
                {
                    Response.Write(tab + dr[i].ToString());
                    tab = "\t";
                }
                Response.Write("\n");
            }
            Response.End();
        }
于 2012-12-12T07:22:52.477 に答える