将gridview数据导出到doc文件时添加标题

时间:2012-07-16 21:48:42

标签: c# asp.net database htmltextwriter stringwriter

我有一些Sql Server数据库,我使用这种方法返回数据:

protected DataTable GetProductsData()
{
            if (ddTipRaport.SelectedItem.Text == "Toate Cerintele")
            { DataTable dt = new DataTable();
                System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(
             "Data Source=BOGDAN-PC\\BOGDAN;Initial Catalog=ePlanning;Integrated Security=SSPI;Connect Timeout=10;TrustServerCertificate=True ");
                System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand();
                comm.CommandText = "Select PS.titlu_cerinta as 'Categorie Cerinta', P.id_subcerinta as 'ID',p.titlu_subcerinta as 'Titlu Cerinta',p.data_crearii as 'Data Crearii',p.autor as 'Autor',p.revizuita as'Revizuita',p.revizuitor as'Revizuitor',p.prioritate as 'Prioritate(Importanta)',p.acoperire as 'Stare Acoperire' from subCerinteProiect P inner join cerinteProiect PS on P.id_cerinta=PS.id_cerinta where PS.id_proiect = " + (Request.QueryString["proiect"]).ToString() + " order by PS.id_cerinta desc";
                comm.Connection = con;
                con.Open();
                SqlDataAdapter da = new SqlDataAdapter(comm);

                da.Fill(dt);
                con.Close();
                return dt;
            }

然后我用这种方法将它写在一个文档中:

  protected void ExportDataTableToWord()
  {
            Response.ClearContent();
            Response.ClearHeaders();
            Response.Buffer = true;
            Response.Charset = "";
            Response.ContentType = "application/vnd.ms-word";
            Response.AddHeader("content-disposition", "attachment;filename=Raport_"+ DateTime.Now.ToShortDateString()+"_"+DateTime.Now.ToShortTimeString()+".doc");

            StringWriter sWriter = new StringWriter();

            HtmlTextWriter hWriter = new HtmlTextWriter(sWriter);

            GridView GridView1 = new GridView();
            GridView1.RowStyle.HorizontalAlign = HorizontalAlign.Center;
            GridView1.DataSource = GetProductsData();
            GridView1.DataBind();
            GridView1.RenderControl(hWriter);

            Response.Write(sWriter.ToString());

            Response.End();
 }

我的问题是,如何在导出的gridview上方添加标题,谢谢!

2 个答案:

答案 0 :(得分:2)

您要查找的属性称为标题http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.caption.aspx

E.g。

GridView1.Caption = "StackOverFlow Grid...";

答案 1 :(得分:0)

我使用它并且它有效,试试看它是否是你想要的

    string datestyle = @"<style>.date { mso-number-format:'Short Date'; }</style>";
    foreach (GridViewRow oItem in gvEdit.Rows)
        oItem.Cells[4].Attributes.Add("class", "date");
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment; filename=SupplierList.xls");
    Response.ContentType = "application/vnd.xls";
    System.IO.StringWriter WriteItem = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlText = new HtmlTextWriter(WriteItem);
    Response.Write(datestyle);
    gvEdit.RenderControl(htmlText);
    Response.Write(WriteItem.ToString());
    Response.End();

我留下了帮助我的链接

http://forums.asp.net/t/1666667.aspx

http://shawpnendu.blogspot.com/2009/03/export-gridview-data-to-excelword-text.html