zoukankan      html  css  js  c++  java
  • Spire.XLS 在程序中直接打印excel

    上代码

      if (tbPrintSetBindingSource.Current == null) return;
    
                var item_TbPrintSet = tbPrintSetBindingSource.Current as RMES.IBatisEntity.TbPrintSet;
    
                fileTempPath = Path.Combine(Environment.CurrentDirectory, item_TbPrintSet.CWorkName);
    
                if (!File.Exists(fileTempPath))
                {
                    DevExpress.XtraEditors.XtraMessageBox.Show(string.Format("模板{0}文件不存在", item_TbPrintSet.CWorkName), "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
    
                workbook = new Workbook();
                if (!string.IsNullOrEmpty(item_TbPrintSet.CPwd.Trim()))
                {
                    workbook.OpenPassword = item_TbPrintSet.CPwd;
                }
    
                workbook.LoadFromFile(fileTempPath);
    
                worksheet = workbook.Worksheets.Where(m => m.Name == item_TbPrintSet.CSheetName).FirstOrDefault();
    
                if (worksheet == null)
                {
                    DevExpress.XtraEditors.XtraMessageBox.Show(string.Format("模板文件中Sheet{0}不存在", item_TbPrintSet.CSheetName), "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                //移除其它数据
    
                List<Spire.Xls.Core.IWorksheet> lstsheet = new List<Spire.Xls.Core.IWorksheet>();
                workbook.Worksheets.All(m => { if (m.Name != item_TbPrintSet.CSheetName) { lstsheet.Add(m); } return true; });
    
    
                lstsheet.All(m => { m.Remove(); return true; });
               
    
    
                if (lst_TbPrintSetItem == null)
                {
    
                    DevExpress.XtraEditors.XtraMessageBox.Show("模板数据项目没有配置", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
    
                if (lst_TbPrintSetItem.Count == 0)
                {
                    DevExpress.XtraEditors.XtraMessageBox.Show("模板数据项目没有配置", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
    
                if (lst_TbPrintSetItem.Where(m => string.IsNullOrEmpty(m.CFiledName)).Count() > 0)
                {
                    DevExpress.XtraEditors.XtraMessageBox.Show("模板数据映射中有映射列为空数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
    
                if (DevExpress.XtraEditors.XtraMessageBox.Show(string.Format("是否打印模板{0},打印份数{1}?", item_TbPrintSet.CSheetName,txtPrintNum.Text.Trim()), "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No) return;
    
                //设置值
    
                int rows_item = lst_TbPrintSetItem.Count;
    
    
                int rows = 0; //几行几列
                int cols = 0;
    
                int rowStart = 0; //从几开开始
                int colStart = 0;
                bool printLen = false; //是否打印长度
                int rowSpan = 0; //列间隔
                int colSpan = 0;
    
                string lenChar = string.Empty;//规格分隔符
    
    
                rows = Convert.ToInt32(item_TbPrintSet.CRow);
                cols = Convert.ToInt32(item_TbPrintSet.CCol);
    
                printLen = item_TbPrintSet.CLen == "Y" ? true : false;
    
                rowStart = Convert.ToInt32(item_TbPrintSet.CRowStart);
    
                colStart = Convert.ToInt32(item_TbPrintSet.CColStart);
    
                rowSpan = Convert.ToInt32(item_TbPrintSet.CRowSpan);
    
                colSpan = Convert.ToInt32(item_TbPrintSet.CColSpan);
    
                lenChar = string.Format("{0}", item_TbPrintSet.CLenChar.Trim());
    
                int n = 65; //从A开始
    
                int index = 1; //从1行开始
    
                n += colStart; //从A B C 开始
    
                index += rowStart;
    
    
                int nl = n;  //临时变量存入列ABC
    
                //循环行数
                for (int i = 0; i < rows; i++)
                {
    
                    nl = n;
                    for (int k = 0; k < cols; k++)
                    {
                        //遍历几个数 
    
                        for (int j = 0; j < rows_item; j++)
                        {
                            string range = string.Format("{0}{1}", ASIToCharacter(nl), index + j);
    
                            //Console.WriteLine(range);
                            worksheet.Range[range].Text = getTextEdit(lst_TbPrintSetItem[j].CFiledName, printLen, lenChar);
    
                        }
                        nl = nl + 1 + colSpan;
    
    
                    }
    
                    index += rowSpan;
                    index += rows_item;
    
                }
    
                workbook.SaveToFile(fileSavePath);
    
                worksheet.PageSetup.PaperSize = PaperSizeType.PaperA4;
                worksheet.PageSetup.PrintQuality = 2;
                //sheet.PageSetup.PrintArea = "A7:T8";
                //sheet.PageSetup.PrintTitleRows = "$1:$1";
                //worksheet.PageSetup.FitToPagesWide = 1;
                //worksheet.PageSetup.FitToPagesTall = 1;
                //worksheet.PageSetup.Orientation = PageOrientationType.Portrait;
                worksheet.PageSetup.PaperSize = (PaperSizeType)Enum.Parse(typeof(PaperSizeType), comPaperSize.Text);
    
    
                //PrintDialog dialog = new PrintDialog();
                //dialog.AllowPrintToFile = true;
                //dialog.AllowCurrentPage = true;
                //dialog.AllowSomePages = true;
                //dialog.AllowSelection = true;
                //dialog.UseEXDialog = true;
                //dialog.PrinterSettings.Duplex = Duplex.Simplex;
                //dialog.PrinterSettings.FromPage = 0;
                //dialog.PrinterSettings.ToPage = 8;
                //dialog.PrinterSettings.PrintRange = PrintRange.SomePages;
                //workbook.PrintDialog = dialog;
                PrintDocument pd = workbook.PrintDocument;
    
                pd.PrinterSettings.Copies = Convert.ToInt16(txtPrintNum.Text.Trim());
                //for (int num = 0; num < Convert.ToInt32(txtPrintNum.Text.Trim());num++ )
                //{
                    pd.Print();
                //}


     /// <summary>
            /// 字母转阿斯特码
            /// </summary>
            /// <param name="c"></param>
            /// <returns></returns>
            private int CharacterToASCI(string c)
            {
                byte[] array = new byte[1];   //定义一组数组array
                array = System.Text.Encoding.ASCII.GetBytes(c); //string转换的字母
                int asciicode = (short)(array[0]);
    
                return asciicode;
            }
    
            private string ASIToCharacter(int a)
            {
                string c = string.Empty;
                byte[] array = new byte[1];
                array[0] = (byte)(Convert.ToInt32(a)); //ASCII码强制转换二进制
                c = Convert.ToString(System.Text.Encoding.ASCII.GetString(array));
    
                return c;
            }
    
    
    

      

     
  • 相关阅读:
    测试的对自己的要求要高,你自己对测试质量的要求太低了,测试这里放松一下,问题就会放大几倍!!!!测试是最后的质量防线了
    第二阶段:Linux和Bash脚本课程---第五讲:Bash脚本编写
    第二阶段:Linux和Bash脚本课程---第四讲:Bash编程语法
    第二阶段:Linux和Bash脚本课程---第三讲:Linux三剑客与管道使用
    第二阶段:Linux和Bash脚本课程---第二讲:Linux常用命令 (文件/网络/性能)
    selenium 设置cookie,Proxy代理
    request + beautifulsoup + openpyxl + 使用
    给cc爬取一下百度的榜单
    mac电脑-python虚拟环境的维护
    记录一次现网问题定位-5月12号
  • 原文地址:https://www.cnblogs.com/Chareree/p/6000089.html
Copyright © 2011-2022 走看看