C#:如何在导出到excel时取消合并gridview单元格

时间:2013-03-13 05:58:02

标签: c# asp.net gridview export-to-excel

我有一个gridview,其中一列将日期和时间存储在一起。 我想将该列拆分为两个,一个存储日期,另一个存储时间。 有没有办法实现这个目标? 感谢。

这是我用来将gridview导出为ex​​cel的代码。

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 |
   |-------------|----------|

3 个答案:

答案 0 :(得分:0)

  

这是你可以做到的:

<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>

答案 1 :(得分:0)

为此你需要做一些返工。要导出到Excel,您需要使用虚拟gridview为其分配日期和时间的单独列。您会找到有用的代码Here

答案 2 :(得分:0)

尝试添加另外两列来保存日期和时间值,通过在这些列上将visible属性设置为false来隐藏它们。

在您将租用设置为可见之前

并隐藏DateTime列并对其进行渲染。

隐藏列

gvResult.Columns[columnsIndex1].visible = false;

显示列

gvResult.Columns[columnsIndex2].visible = true;

gvResult.DataBind();

最终呈现它。

gvResult.RenderControl(htmlWrite);