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 | |-------------|----------|
尝试添加另外两列来保存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,您需要采取一个虚拟的网格视图,为日期和时间分配单独的列。您可以在这里找到有用的代码