ASPxSpreadsheet在线打印关键问题解决-设置打印区域和清除以往打印缓存
   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;
            }

渝公网安备 50011902000225号

渝ICP备18008233号-1