try
{
//在线打印,也可以调用excel模板,但是模板的行列宽度,可能不能完全适配真实打印的宽度,因此还需要不断微调excel模板行列宽度
// this.ASPxSpreadsheet_dcdy_kszy.Document.Worksheets[0].ClearPrintRange();
//this.ASPxSpreadsheet_dcdy_kszy.Document.Worksheets[0].ClearFormats()
ASPxButton btn = sender as ASPxButton;
if (btn != null)
{
btn.Enabled = false;//避免考生因为等待再次单击
}
//测试
// this.ASPxButton_dy_kszy.Text = "导出测试";没有问题dev与asp.net控件融合并兼容
Zy_user dq_xs = Session["stjBEF985E"] as Zy_user;
DataTable dt = new DataTable();//建立数据表结构
int nd = DateTime.Now.Year - 1;
//mb/高考志愿参考高校专业.xlsx
//打开模板
this.ASPxSpreadsheet_dcdy_kszy.Document.Worksheets[0].ClearPrintRange();
string mbwj = Server.MapPath("mb/高考志愿参考高校专业_在线打印.xlsx");
this.ASPxSpreadsheet_dcdy_kszy.Open(mbwj);
Worksheet worksheet_jskc, worksheet_kcjs;//教师课程,课程节数
worksheet_jskc = this.ASPxSpreadsheet_dcdy_kszy.Document.Worksheets[0];//教师课程 this.ASPxSpreadsheet1.Document:工作簿
//this.ASPxSpreadsheet_dcdy_kszy.Document.Unit = DevExpress.Office.DocumentUnit.Point;//磅
//this.ASPxSpreadsheet1.Document.Worksheets.Add();//动态添加工作表
this.ASPxSpreadsheet_dcdy_kszy.Document.Unit = DevExpress.Office.DocumentUnit.Point;//磅
// worksheet_jskc.ActiveView.Orientation = PageOrientation.Landscape;//当前工作表横向 默认纵向
/*
//worksheet_jskc.ActiveView.Margins.Left = 140f; //打印左页边距
worksheet_jskc.ActiveView.Margins.Left = 1.0f ; //要考虑到最多显示9个科目的情形,否则无法完整打印(当然导出的excel,还可以设置页边距,水平居中和垂直居中)
worksheet_jskc.ActiveView.Margins.Right = 1.0f;
worksheet_jskc.ActiveView.Margins.Top = 1.0f;
worksheet_jskc.ActiveView.Margins.Bottom = 1.0f;
worksheet_jskc.ActiveView.PaperKind = System.Drawing.Printing.PaperKind.A4;//纸张种类
//选择导出的科目,统计选择的科目数,动态合并单元格
// worksheet_jskc.DefaultColumnWidthInCharacters = 3.33f;//设置每列列宽,一些特殊列;第2列,第3列宽度为4.56,第一列1.89
//行高为最适合的行高
worksheet_jskc.Columns[0].WidthInCharacters = 8.38f;
worksheet_jskc.Columns[1].WidthInCharacters = 3.75f;
worksheet_jskc.Columns[2].WidthInCharacters = 18.13f;
worksheet_jskc.Columns[3].WidthInCharacters = 4.25f;
worksheet_jskc.Columns[4].WidthInCharacters = 63.13f;
worksheet_jskc.Columns[5].WidthInCharacters = 4.25f;
worksheet_jskc.Columns[6].WidthInCharacters = 3.63f;
worksheet_jskc.Columns[7].WidthInCharacters = 13.0f;
worksheet_jskc.Columns[8].WidthInCharacters = 10.25f;
worksheet_jskc.Columns[9].WidthInCharacters = 3.75f;
worksheet_jskc.Columns[10].WidthInCharacters = 4.0f;
//20250227修改中....
*/
worksheet_jskc.Range["A1:K1"].Merge();//合并单元格
worksheet_jskc.Cells[0, 0].Value = nd.ToString() + "年" + dq_xs.Xm + "高考志愿参考高校专业一览表";
/*
worksheet_jskc.Cells[0, 0].RowHeight = 20;
worksheet_jskc.Cells[0, 0].Font.Size = 12;
worksheet_jskc.Cells[0, 0].Alignment.Vertical = SpreadsheetVerticalAlignment.Center;
worksheet_jskc.Cells[0, 0].Alignment.Horizontal = SpreadsheetHorizontalAlignment.Center;
*/
//标题行
// worksheet_jskc.Rows[1].RowHeight =24; worksheet_jskc.Rows[1].Alignment.WrapText = true;//本行:第二行所有单元格自动换,数据列表头 //建立表头,先获取最低分划线
worksheet_jskc.Cells[1, 0].Value = "批次";
worksheet_jskc.Cells[1, 1].Value = "高校代码";
worksheet_jskc.Cells[1, 2].Value = "高校名称";
worksheet_jskc.Cells[1, 3].Value = "专业代码";
worksheet_jskc.Cells[1, 4].Value = "专业名称";
worksheet_jskc.Cells[1, 5].Value = "去年分数";
worksheet_jskc.Cells[1, 6].Value = "评估";
worksheet_jskc.Cells[1, 7].Value = "高校级别";
worksheet_jskc.Cells[1, 8].Value = "所在省市";
worksheet_jskc.Cells[1, 9].Value = "性质";
worksheet_jskc.Cells[1, 10].Value = "学费";
//先清除1000行,进行初始化
//这样不行,反而增加了许多空白行,打印很多页;但是设置打印区域就没有问题,清除可能上一个考生的数据
for(int m = 1; m <500; m++)
{
for (int j = 0; j < 11; j++)
{
worksheet_jskc.Cells[1 + m, j].Value = "";
}
}
//逐行添加数据
var cx_dygxzy = from aa in sjklj.zy_wdzy
where aa.xsid == dq_xs.ID && aa.nd == nd
orderby aa.pc, aa.sxh
select aa;
int hs = 0;//增加的行数
foreach (var kk in cx_dygxzy)//每个数据行--2024-10-11处理中。。。
{
hs++;
for (int j = 0; j < 11; j++)//排除总分等级,年级排名 班级排名(这是最后两列)
{
//文本对齐
// worksheet_jskc.Cells[1 + hs, j].Alignment.Vertical = SpreadsheetVerticalAlignment.Center;
// worksheet_jskc.Cells[1 + hs, j].Alignment.Horizontal = SpreadsheetHorizontalAlignment.Left;
if (j == 0)
{
worksheet_jskc.Cells[1 + hs, j].Value = kk.pc;
}
else if (j == 1)
{
worksheet_jskc.Cells[1 + hs, j].Value = kk.dm;
}
else if (j == 2)
{
worksheet_jskc.Cells[1 + hs, j].Value = kk.xxmc;
}
else if (j == 3)
{
worksheet_jskc.Cells[1 + hs, j].Value = kk.zydm;
}
else if (j == 4)
{
worksheet_jskc.Cells[1 + hs, j].Value = kk.zymc;
}
else if (j == 5)
{
if (kk.lqfs == -1 || kk.lqfs == 0)
{
worksheet_jskc.Cells[1 + hs, j].Value = "";
}
else
{
worksheet_jskc.Cells[1 + hs, j].Value = kk.lqfs;
}
}
else if (j == 6)
{
worksheet_jskc.Cells[1 + hs, j].Value = kk.pj;
}
else if (j == 7)
{
worksheet_jskc.Cells[1 + hs, j].Value = kk.jb;
}
else if (j == 8)
{
worksheet_jskc.Cells[1 + hs, j].Value = kk.ss;
}
else if (j == 9)
{
worksheet_jskc.Cells[1 + hs, j].Value = kk.xxxz;
}
else if (j == 10)
{
worksheet_jskc.Cells[1 + hs, j].Value = kk.xf;
}
}
worksheet_jskc.Rows[1 + hs].Alignment.WrapText = true;//没有设置高度,而且自动换行,则自适应。
worksheet_jskc.Rows[1 + hs].AutoFitRows();//每次初始化,重新设置自动行高
double hqhg = worksheet_jskc.Rows[1 + hs].RowHeight;//获取自适应行高
worksheet_jskc.Rows[1 + hs].RowHeight = hqhg + 4;//增加行高,让该行内容不与表格线平齐(当有多行时)
//可能由于缓存原因等,下次打印其他考生志愿,行高会继续累积。
}
// this.ASPxSpreadsheet1.WorkDirectory = @"E:\张仁平";
//获取物理路径:文件名
//划线等
CellRange range = worksheet_jskc.Range["A2:K" + (hs + 2).ToString()];
range.Borders.SetAllBorders(Color.Black, BorderLineStyle.Thin);
range.Font.Size =8;
//每行每列水平和垂直居中
range.Alignment.Vertical = SpreadsheetVerticalAlignment.Center;
range.Alignment.Horizontal = SpreadsheetHorizontalAlignment.Left;
for (int j = 0; j < 11; j++)
{
//文本对齐:表头文本居中
worksheet_jskc.Cells[1, j].Alignment.Vertical = SpreadsheetVerticalAlignment.Center;
worksheet_jskc.Cells[1, j].Alignment.Horizontal = SpreadsheetHorizontalAlignment.Center;
}
// string wjm = DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + dq_xs.Xm + "-高考志愿参考高校专业.xlsx";
//测试 2025-02-28
// this.ASPxLabel_dydc_ts.Text = "建立了表头:" + nd.ToString() + "年" + dq_xs.Xm + "高考志愿参考高校专业一览表";
// this.ASPxLabel_tytsxx.Text ="导出文件名称:"+wjm;
// this.ASPxPopupControl_tytsxx.ShowOnPageLoad = true;
// return;
//2025-02-27代码修改中
// worksheet_jskc.Workbook.SaveDocument(Server.MapPath(@"UploadFile\") + wjm);//如果该文件存在,则覆盖,但不能处于打开状态;文件夹必须存在,否则出错且没有提示
// ASPxHyperLink_xz_wj.NavigateUrl = "~/UploadFile/" + wjm;
// ASPxHyperLink_xz_wj.Text = dq_xs.Xm + "-高考志愿参考高校专业,单击此处下载";//管理员id+年级名称+要年月日时分秒+6位随机数+文件名,避免重复,避免与其他学校的重复
//Server.MapPath(@"xlupload\")
// worksheet_jskc.Workbook.Worksheets[0].Print();//在线打印,没有预览//采用try -catch没有链接打印机则catch捕获并提示
// this.ASPxSpreadsheet1.Visible = true;
//具体看Spreadsheet教程中的api
//关闭数据库
// // sjklj.Database.Connection.Close();
// worksheet_jskc.PrintOptions= "A1:D10";
// worksheet_jskc.Print();//不能选择打印机,不能进行页面设置等,直接打印,可能打印失败
worksheet_jskc.SetPrintRange(worksheet_jskc.Range["A1:K" + (hs + 2).ToString()]);
this.ASPxSpreadsheet_dcdy_kszy.Visible = true;//可视化,可以在线进行打印设置,选择打印机,单双面。
if (btn != null)
{
btn.ForeColor = Color.Blue;
btn.BackColor = Color.Wheat;
btn.Enabled = true;
}
// this.ASPxLabel_tytsxx.Text = "打印中......";
// this.ASPxPopupControl_tytsxx.ShowOnPageLoad = true;
}
catch
{
this.ASPxLabel_tytsxx.Text ="打印失败,可能打印机没有开机或其它问题";
this.ASPxPopupControl_tytsxx.ShowOnPageLoad = true;
}
|