用repeater实现报表导出到Excel没有网格线

ErLongTui 2010-12-07 05:37:13
请问我用你repeater实现的报表,我把这个报表导入Excel中,在Excel中没有显示网格线
有什么方法能让Excel显示出网格线
我真的真的是急用啊, 谢谢啊,我都想半天,我也是个刚接触报表的菜鸟
是自己手动 写代码吗,能告诉下该如何去写那
一下是我的导出方法(还是在网上找的)
//导出按钮事件
protected void btnOut_Click(object sender, EventArgs e)
{

ExportExcel(rpCallLog, "utd-8");
}
//导出方法
public static void ExportExcel(Repeater rp, string strFileName)
{

strFileName = System.Web.HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8);



System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Buffer = true;
System.Web.HttpContext.Current.Response.Charset = "gb2312";
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "online; filename=" + strFileName + ".xls");
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
System.Web.HttpContext.Current.Response.ContentType = "application/ms-excel";

System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("zh-CN", true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

rp.RenderControl(oHtmlTextWriter);

rp = null;
System.Web.HttpContext.Current.Response.Write(oStringWriter.ToString().Replace("<td", "<td STYLE='MSO-NUMBER-FORMAT:\\@'"));
System.Web.HttpContext.Current.Response.Buffer = false;
System.Web.HttpContext.Current.Response.End();
}
请各位帮绑忙啊,搞的天天加班弄这个.



...全文
583 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cao4010578 2013-07-24
  • 打赏
  • 举报
回复
你给 Table 设置border=1 就可以了
candy819 2013-07-05
  • 打赏
  • 举报
回复

这是导出的Excel样式

这是我的repeater嵌套repeater得到的前台页面

后台使用repeater中不是会插入table吗,设置table的boder="1",导出时,就会有分割线了。
后台代码

<asp:Repeater ID="rptTotals" runat="server" onitemdatabound="rptTotals_ItemDataBound" >
<HeaderTemplate>
<table width="98%" border="1" style="line-height:28px;vertical-align:middle;">
<tr style="background-color:#A6CBEF;">
<th width="5%">NO.</th>
<th width="8%">被调查人姓名</th>
<th width="7%">工号</th>
<th width="5%">部门</th>
<th width="5%">职等</th>
<th width="7%">调查人姓名</th>
<th width="8%">工号</th>
<th width="40%">题目</th>
<th width="5%">分数</th>
<th width="5%">总分数</th>
<th width="5%">同级平均分</th>
<th>日期</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label ID="NO" runat="server" Text='<%# Container.ItemIndex + 1%>'></asp:Label>
<asp:Label ID="lblID" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"ID")%>' Visible="false"></asp:Label>
</td>
<td><asp:Label ID="lblRespondents_Name" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Respondents_Name")%>'></asp:Label></td>
<td><asp:Label ID="lblRespondents_No" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"F_Respondents_No") %>'></asp:Label></td>
<td><asp:Label ID="lblRespondents_Depart" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Respondents_Dept") %>'></asp:Label></td>
<td><asp:Label ID="lblRespondents_Level" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Respondents_Level") %>'></asp:Label></td>
<td><asp:Label ID="lblInvestigators_Name" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Investigators_Name") %>'></asp:Label></td>
<td><asp:Label ID="lblInvestigators_No" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"F_Investigators_No") %>'></asp:Label></td>
<td colspan="2">
<table border="1" width="100%">
<asp:Repeater ID="rptEach" runat="server">
<ItemTemplate>
<tr>
<td width="90%" align="left"><asp:Label ID="lblTopic" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Topic_Detail") %>'></asp:Label></td>
<td width="10%"><asp:Label ID="lblScore" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Topic_Score") %>'></asp:Label></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</td>
<td><asp:Label ID="lblScore" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Total_Score") %>'></asp:Label></td>
<td>
<table border="0" width="100%">
<asp:Repeater ID="rptAvg" runat="server">
<ItemTemplate>
<tr>
<td width="100%" align="left">
<asp:Label ID="lblAverage" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Avg_Score") %>'></asp:Label>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</td>
<td><asp:Label ID="lblTime" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Insert_Date") %>'></asp:Label></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>


前台代码:




protected void Load_TotalScoreList()
{
StringBuilder sb_TSL = new StringBuilder("");
sb_TSL.Append("SELECT a.F_Respondents_No, b.USER_DspName as Respondents_Name, b.USER_CostCenter as Respondents_Dept, b.USER_Level as Respondents_Level, ");
sb_TSL.Append("a.F_Investigators_No,c.USER_DspName as Investigators_Name, c.USER_CostCenter as Investigators_Dept, c.USER_Postion as Investigators_Pos, ");
sb_TSL.Append("a.Total_Score,a.Insert_Date,a.ID FROM dbo.Respondents_TotalScore a ");
sb_TSL.Append("inner join dbo.Emp_Info b on a.F_Respondents_No=b.USER_HRID ");
sb_TSL.Append("inner join dbo.Emp_Info c on a.F_Investigators_No=c.USER_HRID ");
sb_TSL.Append(" order by a.Total_Score");
DataTable dtTS = db.dbGetDataTable("DBConnectionString", sb_TSL.ToString());
rptTotals.DataSource = dtTS;
rptTotals.DataBind();
}
protected void rptTotals_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rptEach = (Repeater)e.Item.FindControl("rptEach");
Label lblID = (Label)e.Item.FindControl("lblID");

StringBuilder sb_ESL = new StringBuilder("");
sb_ESL.Append("SELECT a.ID,a.Topic_Score,");
sb_ESL.Append("b.Topic_Detail FROM dbo.Respondents_EachScore a ");
sb_ESL.Append("left join dbo.Topic_Info b on a.F_Topic_ID=b.Topic_ID where a.Topic_Score<>'' and a.ID='"+lblID.Text.Trim ()+"' ");
DataTable dtES = db.dbGetDataTable("DBConnectionString", sb_ESL.ToString());
rptEach.DataSource = dtES;
rptEach.DataBind();


Repeater rptAvg = (Repeater)e.Item.FindControl("rptAvg");
Label lblLevel = (Label)e.Item.FindControl("lblRespondents_Level");
StringBuilder sb_Avg = new StringBuilder("");
sb_Avg.Append("select b.USER_Level, AVG (convert(int,Total_Score)) as Avg_Score ");
sb_Avg.Append("FROM dbo.Respondents_TotalScore a ");
sb_Avg.Append("inner join dbo.Emp_Info b on a.F_Respondents_No=b.USER_HRID ");
sb_Avg.Append("where b.USER_Level='" + lblLevel.Text.Trim() + "'");
sb_Avg.Append("group by b.USER_Level ");
DataTable dtAvg=db.dbGetDataTable("DBConnectionString",sb_Avg.ToString());
rptAvg.DataSource = dtAvg;
rptAvg.DataBind();
}
}
protected void lbtnExcel_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "utf-8";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("test", System.Text.Encoding.UTF8) + ".xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/ms-excel";
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.rptTotals.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}

cao4010578 2013-04-20
  • 打赏
  • 举报
回复
怎么去画网格线
ssq200302 2012-05-31
  • 打赏
  • 举报
回复
报表设计时,画上网格线
生成出来的就带网格线
ssxsfj 2012-05-22
  • 打赏
  • 举报
回复
导出后,在EXCEL中,设置显示网格线, 工具---选项---视 图----网格线
Valefish 2010-12-24
  • 打赏
  • 举报
回复
可以自己画出网格的,方法多种,建议去看看阿泰的报表帖.
wuyq11 2010-12-24
  • 打赏
  • 举报
回复
打开EXCEL模板,赋值到单元格,设置样式
夜归人 2010-12-24
  • 打赏
  • 举报
回复
干嘛要网格线呢?我导出excel文件时也没显示网格线啊,能导出就行了,干嘛追求那么完美呢?

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧