页面上有报表的标题、已赋值的Label控件、datagrid控件,现在已经实现了datagrid控件内容导入Excel,用的是“datagrid.RenderControl(hw);”方法,现在想将标题和Label控件内容写入excel中,并且要写在datagrid上面的一行中,用Label.RenderControl(hw);可以实现插入内容,但总是在A1内,请问如何控制它的位置,如,有四个Label控件,想要分别插入A2、D2、G2、K2,另外,想将表格标题如“XXXX表”插入第一行,他应该合并多个列,请问如何实现?

解决方案 »

  1.   

    System.IO.StringWriter  tw = new System.IO.StringWriter() ;
                System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);            //设置导出的Excel文件中的字体属性
                hw.AddAttribute("style","FONT-FAMILY: 宋体;FONT-SIZE: 10pt");            //将DataGrid中的内容输入到hw对象中
                dataGrid.RenderControl(hw); 
    System.IO.StreamWriter sw = System.IO.File.CreateText(filePath);
                
                          //写入文件标题
                sw.WriteLine("<table><tr><td align='center' colspan='" + iColspan + "'><font face='宋体' size=12px><b>" 
                    + strTitle + "</b></font></td></tr>");
                
                //写入制表时间
                sw.WriteLine("<tr><td colspan='" + iColspan + "' align='right'><font face='宋体' size=10px>制表时间:"
                    + DateTime.Now.ToString("yyyy年MM月dd日") + "</font></td></tr></table>");
                sw.Write(tw.ToString());
                sw.Close();
      

  2.   

    说明:实际上这种方式导出的文件就是<table><tr><td>.....的形式,你用写字板打开导出的文件就明白了;
    至于标题需要和并多少行,统计一些DataGrid的可见的列数就可以