0

これは、ここやウェブ上の他の何千ものサイトで回答されていることを知っていますが、私が試したすべてのサイトが思い通りに機能しません. コードを実行しているページではなく、データテーブルのみをエクスポートしたいのですが、サードパーティの dll をダウンロードせずにこれを実行したいと考えています。私が試したすべてのコードは、実行元のページをエクスポートすることになります。これが私が使用している現在の反復です...

Private Sub ExporttoExcel(table As DataTable)
  Dim attachment As String = "attachment; filename=file.xls"
  Response.ClearContent()
  Response.AddHeader("content-disposition", attachment)
  Response.ContentType = "application/vnd.ms-excel"
  Dim tab As String = ""

  For Each dc As DataColumn In table.Columns
    Response.Write(tab + dc.ColumnName)
    tab = vbTab
  Next

  Response.Write(vbLf)

  Dim i As Integer
  For Each dr As DataRow In table.Rows
    tab = ""
    For i = 0 To table.Columns.Count - 1
      Response.Write(tab & dr(i).ToString())
      tab = vbTab
    Next
    Response.Write(vbLf)
  Next
  Response.End()
End Sub

これが機能しない理由、またはデータテーブルのみを Excel にエクスポートする方法を誰かが説明できますか?

4

3 に答える 3

2

私は通常これを行い、うまくいきました(dsはExcelにプッシュしたいデータを持つDataSetです):

            HttpResponse response = HttpContext.Current.Response;

        // first let's clean up the response.object
        response.Clear();
        response.Charset = "";

        string filename = "TEMP/ex1.xls";

        // set the response mime type for excel
        response.ContentType = "application/vnd.ms-excel";
        response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");

        // create a string writer
        using (StringWriter sw = new StringWriter())
        {
            using (HtmlTextWriter htw = new HtmlTextWriter(sw))
            {
                // instantiate a datagrid
                DataGrid dg = new DataGrid();
                dg.DataSource = ds.Tables[0];
                dg.DataBind();

                dg.RenderControl(htw);
                response.Write(sw.ToString());
                response.End();
            }
        }
于 2013-09-09T19:36:14.003 に答える
0

ある種のサード パーティの dll を使用せずにこれを行う唯一の方法は、csv ファイルを作成することです。

セミコロンで区切られた列、/n で区切られた行

于 2013-09-09T19:55:01.530 に答える