求解,rdlc实现两个人的信息分为两页显示

helong0420 2017-03-14 03:59:54
如图所示,两条个人信息,在并排显示,想实现第一个人跟第二个人分开显示,这是显示问题,真正的报表内容比这个复杂。
我想实现功能是可以同时打印多个学生的成绩单,这时候就需要分开也显示,单个打印能做,但是同时显示多个就不知道怎么下手了,求给点思路
...全文
204 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
be_a_coolgirl 2019-08-28
  • 打赏
  • 举报
回复
请问楼组怎么解决的 就是rdlc按组分页这个问题
CaRrot_Love 2017-03-15
  • 打赏
  • 举报
回复
引用 2 楼 helong0420 的回复:
[quote=引用 1 楼 CaRrot_Love 的回复:]
不太理解分开的意思 如果是两个人之间分隔几个空行用于展示其他数据可以在输出打印时增加数据的列,如果是想把信息竖向并排可以获取数据数组后尝试循环重新生成一个竖向的数组进行打印

就是第一行是
ID name
2263 张帅
ID name
2264 张强
这种格式就是一行信息显示完之后,第二个人的换页[/quote]


没有使用过rdlc这个功能,只能给出excel文件导出的例子,没有仔细想有没有更优的方式


//打印方法
string[] Infos = new string[] { "ID", "Name" };//声明属性的数组
IList<UserInfo> uis = new List<UserInfo>();
uis.Add(new UserInfo { ID = "1", Name = "张三" });
uis.Add(new UserInfo { ID = "2", Name = "李四" });

DataTable dt = new DataTable("123");
dt.Columns.Add("编号", System.Type.GetType("System.String"));
dt.Columns.Add("姓名", System.Type.GetType("System.String"));

for (int i = 0; i < uis.Count; i++)
{
DataRow dr = dt.NewRow();//第一次声明学生属性名称的行
//此处赋值可以循环上边声明的属性数组,简略没有写
dr[0] = "ID";
dr[1] = "Name";
dt.Rows.Add(dr);
dr = dt.NewRow();//第二次声明学生内容的行
dr[0] = uis[i].ID;
dr[1] = uis[i].Name;
dt.Rows.Add(dr);
}


ExportExcel(dt, DateTime.Now.ToString("yyyy-MM-dd") + "学生信息");



/// <summary>
/// Excel导出数据
/// </summary>
/// <param name="data">数据源</param>
/// <param name="fileName">文件名</param>
public static void ExportExcel(DataTable data, string fileName)
{
try
{
if (data != null && data.Rows.Count > 0)
{
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";

HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.Charset = "Utf-8";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName + ".xls", System.Text.Encoding.UTF8));

StringBuilder sbHtml = new StringBuilder();
sbHtml.AppendLine("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
sbHtml.AppendLine("<table cellspacing=\"0\" cellpadding=\"5\" rules=\"all\" border=\"1\">");

//写出列名
sbHtml.AppendLine("<tr style=\"background-color: #FFE88C;font-weight: bold; white-space: nowrap;\">");

foreach (System.Data.DataColumn column in data.Columns)
{
sbHtml.AppendLine("<td>" + column.ColumnName + "</td>");
}
sbHtml.AppendLine("</tr>");

//写数据
foreach (System.Data.DataRow row in data.Rows)
{
sbHtml.Append("<tr>");

foreach (System.Data.DataColumn column in data.Columns)
{
sbHtml.Append("<td>").Append(row[column].ToString()).Append("</td>");
}
sbHtml.AppendLine("</tr>");
}
sbHtml.AppendLine("</table>");
HttpContext.Current.Response.Write(sbHtml.ToString());
HttpContext.Current.Response.End();
}
}
catch (Exception ex)
{
// Logger.WriteLog("-----------Excel导出数据异常-----------\r\n" + ex.ToString() + "\r\n");
}
}

//学生内容类
private class UserInfo
{
public string ID { get; set; }
public string Name { get; set; }
}



输出的excel文件效果
peng2739956 2017-03-15
  • 打赏
  • 举报
回复
什么叫做第二个人的换页,一个人的信息是一页?
helong0420 2017-03-14
  • 打赏
  • 举报
回复
引用 1 楼 CaRrot_Love 的回复:
不太理解分开的意思 如果是两个人之间分隔几个空行用于展示其他数据可以在输出打印时增加数据的列,如果是想把信息竖向并排可以获取数据数组后尝试循环重新生成一个竖向的数组进行打印
就是第一行是 ID name 2263 张帅 ID name 2264 张强 这种格式就是一行信息显示完之后,第二个人的换页
CaRrot_Love 2017-03-14
  • 打赏
  • 举报
回复
不太理解分开的意思 如果是两个人之间分隔几个空行用于展示其他数据可以在输出打印时增加数据的列,如果是想把信息竖向并排可以获取数据数组后尝试循环重新生成一个竖向的数组进行打印

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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