c#:如何在导出到excel时取消网格视图单元格的合并

本文关键字:网格 取消 视图 单元格 合并 excel | 更新日期: 2023-09-27 18:03:50

我有一个gridview,其中一列存储日期和时间在一起。我想把这个列分成两个,一个存储日期,另一个存储时间。有什么办法可以做到这一点吗?谢谢。

这是我用来导出gridview到excel的代码。

protected void exportBtn_Click(object sender, EventArgs e)
{
    loadGridViewContent();
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=report.xls");
    Response.Charset = "";
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.ContentType = "application/vnd.xls";
    Response.Write(@"<style> TD {mso-number-format:'@;}</style>");
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    HtmlForm frm = new HtmlForm();
    gvResult.Parent.Controls.Add(frm);
    frm.Controls.Add(gvResult);
    frm.RenderControl(htmlWrite);
    Response.Write(stringWrite.ToString());
    Response.End();
}

这是我目前拥有的。

   |----------------------|
   | 13-MAR-2013 14:24:05 |
   |----------------------|

这就是我想要完成的。

   |-------------|----------|
   | 13-MAR-2013 | 14:24:05 |
   |-------------|----------|

c#:如何在导出到excel时取消网格视图单元格的合并

尝试添加另外两列来保存Date和Time值,通过将这些列的visible属性设置为false来隐藏它们。

在您进入之前设置这两个列可见,隐藏DateTime列并呈现它。

隐藏列

gvResult.Columns[columnsIndex1].visible = false;

显示列

gvResult.Columns[columnsIndex2].visible = true;
gvResult.DataBind();

最后渲染。

gvResult.RenderControl(htmlWrite);

你可以这样做:

<asp:GridView runat="server" ID="gv" AutoGenerateColumns="false" >
    <Columns>
        <asp:BoundField DataField="YourDateTimeColumn" HeaderText="Date" DataFormatString="{0:MM/dd/yyyy}"/>
        <asp:BoundField DataField="YourDateTimeColumn" HeaderText="Time" DataFormatString="{0:hh:mm:tt}" />
    </Columns>
</asp:GridView>

为此您需要做一些返工。要导出到excel,您需要采取一个虚拟的网格视图,为日期和时间分配单独的列。您可以在这里找到有用的代码