导出Excel并设置样式

有时我们需要在datagrid里进行一些操作,比如多层表头,比如隐藏相同的列等等,很多朋友喜欢用OWC或其它方法来导出excel,其实还可以直接由datagrid导出为excel格式。

ExpandedBlockStart.gif ContractedBlock.gif 导出Excel #region 导出Excel
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 方法编号:07
InBlock.gif        
/// 方法名称:ExportToExcel
InBlock.gif        
/// 内容摘要:将DataGrid导出为Excel文件,结构与DataGrid相同;引用此方法,须传入page对象
InBlock.gif        
/// 算法思路:将DataGrid render并以Excel的格式输出给客户端;
InBlock.gif        
///          须取消分页并重新执行绑定后调用此方法
ExpandedSubBlockEnd.gif        
/// </summary>

InBlock.gif        public void ExportToExcel(DataGrid m_grid,System.Web.UI.Page _page)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            _page.Response.Clear(); 
//清除缓冲区流中的所有内容输出
InBlock.gif
            _page.Response.Buffer = true
InBlock.gif            _page.Response.Charset
= "GB2312";    //设置输出流的http字符集            
InBlock.gif           
InBlock.gif            
//生成文件名
InBlock.gif
            StringBuilder m_strName = new StringBuilder();
InBlock.gif            m_strName.Append(DateTime.Now.Year.ToString()).Append(DateTime.Now.Month.ToString())
InBlock.gif                .Append(DateTime.Now.Day.ToString()).Append(DateTime.Now.Hour.ToString())
InBlock.gif                .Append(DateTime.Now.Minute.ToString()).Append(DateTime.Now.Second.ToString());
InBlock.gif
InBlock.gif            _page.Response.AppendHeader(
"Content-Disposition","attachment;filename=ExportData" + m_strName.ToString() + ".xls"); 
InBlock.gif
InBlock.gif            _page.Response.ContentEncoding
=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
InBlock.gif            
InBlock.gif            
//设置输出文件类型为excel文件
InBlock.gif
            _page.Response.ContentType = "application/ms-excel";
InBlock.gif           
InBlock.gif            
//关闭保存视图状态
InBlock.gif
            _page.EnableViewState = false;  
InBlock.gif  
InBlock.gif            System.Globalization.CultureInfo m_CI 
= new System.Globalization.CultureInfo("ZH-CN",true);//区域设置
InBlock.gif
            System.IO.StringWriter m_stringWriter = new System.IO.StringWriter(m_CI); 
InBlock.gif            System.Web.UI.HtmlTextWriter m_htmlTextWriter 
= new System.Web.UI.HtmlTextWriter(m_stringWriter);
InBlock.gif            
InBlock.gif            
//将m_grid中的内容输出到m_htmlTextWriter
InBlock.gif
            m_grid.RenderControl(m_htmlTextWriter); 
InBlock.gif
InBlock.gif            _page.Response.Write(m_stringWriter.ToString());
InBlock.gif
InBlock.gif            
//将当前所有缓冲的输出发送到客户端,并停止该页执行
InBlock.gif
            _page.Response.End();
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 方法编号:08
InBlock.gif        
/// 方法名称:ExportToExcel
InBlock.gif        
/// 内容摘要:将DataGrid导出为Excel文件,结构与DataGrid相同;引用此方法,须传入page对象
InBlock.gif        
/// 算法思路:将DataGrid render并以Excel的格式输出给客户端;
InBlock.gif        
///          须取消分页并重新执行绑定后调用此方法
ExpandedSubBlockEnd.gif        
/// </summary>

InBlock.gif        public void ExportToExcel(DataGrid m_grid)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
this.ExportToExcel(m_grid,this.m_page);
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 方法编号:09
InBlock.gif        
/// 方法名称:SetExcelStyle
InBlock.gif        
/// 内容摘要:设置DataGrid导出为EXCEL时的样式
ExpandedSubBlockEnd.gif        
/// </summary>

InBlock.gif        public DataGrid SetExcelStyle(DataGrid m_grid)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//给DataGrid增加样式
InBlock.gif
            Table m_tb = (Table)m_grid.Controls[0];
InBlock.gif
InBlock.gif            m_grid.Style.Add(
"font-size","9pt");
InBlock.gif            m_grid.Style.Add(
"font-family","Courier New");
InBlock.gif            m_grid.Style.Add(
"heigth","25px");
InBlock.gif            m_grid.HeaderStyle.Height   
= Unit.Pixel(25);
InBlock.gif
InBlock.gif            m_grid.GridLines            
= GridLines.Both;
InBlock.gif            m_tb.BorderStyle            
= BorderStyle.Solid;
InBlock.gif            m_tb.BorderColor            
= Color.FromKnownColor(KnownColor.Black);
InBlock.gif            m_grid.ItemStyle.BackColor  
= Color.FromKnownColor(KnownColor.White);
InBlock.gif            m_grid.FooterStyle.BackColor
= Color.FromKnownColor(KnownColor.Beige);
InBlock.gif            m_grid.HeaderStyle.BackColor
= Color.FromKnownColor(KnownColor.Beige);
InBlock.gif            m_grid.AlternatingItemStyle.BackColor 
= Color.FromKnownColor(KnownColor.White);
InBlock.gif
InBlock.gif            
return m_grid;
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif        
#endregion
 导出Excel

如果datagrid里有linkbutton等服务端控件,则需要手动进行转换为文字,如:
None.gif // 将DataGrid里的Linkbutton替换为label对象
None.gif
foreach  (DataGridItem _item  in  m_outGrid.Items)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif      LinkButton _lb 
= (LinkButton)_item.Cells[0].Controls[0];
InBlock.gif      _item.Cells[
0].Text = _lb.Text;
ExpandedBlockEnd.gif}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值