日期:2014-05-19  浏览次数:20522 次

非常急~成绩系统,现在到了最后的收尾阶段,但是碰到了毕业成绩打印的麻烦,高人们进来帮忙
http://www.ztswj.com/upload/cj.jpg
上面这个是成绩系统最后的毕业成绩打印格式,如果大家有更好的方案就麻烦给我参考一下。

成绩数据库字段大致是这样的

学号     姓名   课程   总评成绩   课程性质   学年   学期   专业   班级

最后毕业成绩要求的字段信息完全有的,记录是按照每一个课程一条信息来记录。
我已经想了很久了,但是终究不能实现如图片上的格式,高手门来帮帮忙,小弟在这里谢谢了。真的是很急,由于装学生档案的东西,所以必须规范,大家有没有以前的方案给小弟参考一下。或者我图片上设计这个格式,因该怎么来实现。
按照格式导出到EXCEL打印也可以,直接WEB打印也可以,快救命啊~~

------解决方案--------------------
Excel.Application xlApp = new Excel.Application();
if (xlApp == null)
{
MessageBox.Show( "无法创建Excel对象 ");
return;
}
Excel.Workbooks workbooks = xlApp.Workbooks;
Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
Excel.Range range;
//从数据库中读数据,以导入xls文件
DataSet ds = null;
cStudentTemp cstu = new cStudentTemp();
ds = cstu.getNoticeInfo();
this.dataGrid1.DataSource = ds.Tables[0];
long totalCount = ds.Tables[0].Rows.Count;
long rownum = 0;
if (totalCount <= 20) //只有一列
{
worksheet.Cells[3, 1] = "课程名称 ";
worksheet.Cells[3, 2] = "课程性质 ";
worksheet.Cells[3, 3] = "总评成绩 ";
}
//2列
...
//3列
...
//填数据
foreach (DataRow dr in ds.Tables[0].Rows)
{
if(rownum <= 20)//1列
{
worksheet.Cells[rownum + 4, 1] = dr[ "课程名称 "];
worksheet.Cells[rownum + 4, 2] = dr[ "课程性质 "];
worksheet.Cells[rownum + 4, 3] = dr[ "总评成绩 "];
}
if(rownum 〉20 && rownum <= 41 )//2列
{
worksheet.Cells[rownum - 17, 4] = dr[ "课程名称 "];
worksheet.Cells[rownum - 17, 5] = dr[ "课程性质 "];
worksheet.Cells[rownum - 17, 6] = dr[ "总评成绩 "];
}
if(rownum > 41)//3列
{
worksheet.Cells[rownum - 38, 7] = dr[ "课程名称 "];
worksheet.Cells[rownum - 38, 8] = dr[ "课程性质 "];
worksheet.Cells[rownum - 38, 9] = dr[ "总评成绩 "];
}
rownum = rownum + 1;
}
...