上代码

  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;
            }

            )
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("模板数据项目没有配置", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            )
            {
                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;

            ; //几行几列
            ;

            ; //从几开开始
            ;
            bool printLen = false; //是否打印长度
            ; //列间隔
            ;

            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());

            ; //从A开始

            ; //从1行开始

            n += colStart; //从A B C 开始

            index += rowStart;

            int nl = n;  //临时变量存入列A\B\C

            //循环行数
            ; i < rows; i++)
            {

                nl = n;
                ; k < cols; k++)
                {
                    //遍历几个数 

                    ; 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 +  + colSpan;

                }

                index += rowSpan;
                index += rows_item;

            }

            workbook.SaveToFile(fileSavePath);

            worksheet.PageSetup.PaperSize = PaperSizeType.PaperA4;
            worksheet.PageSetup.PrintQuality = ;
            //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;
        }

  

 

Spire.XLS 在程序中直接打印excel的更多相关文章

  1. NPOI写Excel,Spire.XLS for.NET组件转换Excel为PDF

    首先要引用NPOI动态库和Microsoft.Office.Interop.excel.dll (Microsoft.Office.Interop.excel.dll  最好使用使用NuGet下载 , ...

  2. 【原创】.NET读写Excel工具Spire.Xls使用(5)重量级的Excel图表功能

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

  3. C# 中从程序中下载Excel模板

    方法一: #region 下载模板 /// <summary> /// 下载模板 /// </summary> /// <param name="sender& ...

  4. 使用SPIRE.XLS来创建Excel 工作簿

               使用SPIRE.XLS来创建Excel 工作簿     概要 最近在研究 .NET 控件,使用这些控件在程序中可以快速低成本实现功能. 在这一篇中我们使用的控件是Spire.XL ...

  5. 【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍

    在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装E ...

  6. .NET读写Excel工具Spire.Xls使用(1)入门介绍

    原文:[原创].NET读写Excel工具Spire.Xls使用(1)入门介绍 在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式 ...

  7. 【目录】C#操作Excel组件Spire.XLS系列文章目录

    本博客所有文章分类的总目录链接:http://www.cnblogs.com/asxinyu/p/4288836.html 1.C#操作Excel组件Spire.XLS文章目录 1.[原创].NET读 ...

  8. Spire.XLS for .NET 測评

         有一位朋友推荐了我 Spire.Office (官网:http://www.e-iceblue.com/) -- 基于.NET的办公软件库,说不错. 究竟怎样呢?仅仅有亲測一下才干知道了. ...

  9. c# winform打印excel(使用NPOI+Spire.xls+PrintDocument直接打印excel)

    前言 c#做winform程序要求生成并打印Excel报告,为了不安装Office相应组件,我选择了NPOI来生成Excel报告,用winform的PrintDocument控件来触发打印操作,而难点 ...

随机推荐

  1. RabbitMQ学习系列(四): 几种Exchange 模式

    上一篇,讲了RabbitMQ的具体用法,可以看看这篇文章:RabbitMQ学习系列(三): C# 如何使用 RabbitMQ.今天说些理论的东西,Exchange 的几种模式. AMQP协议中的核心思 ...

  2. shell脚本比较两个数大小

    #/bin/bash read -p "请输入第一个数:" a read -p "请输入第二个数:" b if [ $a -gt $b ] #判断第一个数是不是 ...

  3. 第四章 使用Docker镜像和仓库

    第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...

  4. Android手机开机自动启动

    package com.example.x_yp.system_camera; import android.content.BroadcastReceiver; import android.con ...

  5. php和java的一些比较

    现在市场上的电子商务软件基本上可归结为两大阵营,即PHP阵营和Java阵营.但对接触电子商务不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异.其实,PHP+ ...

  6. [九度OJ]1011.最大连续子序列

    原题链接:http://ac.jobdu.com/problem.php?pid=1011 题目描述:     给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ N ...

  7. 汤姆大叔的6道js题目

    汤姆大叔的6道javascript编程题题解 看汤姆大叔的博文,其中有篇(猛戳这里)的最后有6道编程题,于是我也试试,大家都可以先试试. 1.找出数字数组中最大的元素(使用Math.max函数) 1 ...

  8. Spark 资源调度及任务调度

    1.  资源分配 通过SparkSubmit进行提交应用后,首先会创建Client将应用程序(字节码文件.class)包装成Driver,并将其注册到Master.Master收到Client的注册请 ...

  9. CJOJ 2482 【POI2000】促销活动

    CJOJ 2482 [POI2000]促销活动(STL优先队列,大根堆,小根堆) Description 促销活动遵守以下规则: 一个消费者 -- 想参加促销活动的消费者,在账单下记下他自己所付的费用 ...

  10. js设置滚动条位置

    JS控制滚动条的位置: window.scrollTo(x,y); 竖向滚动条置顶(window.scrollTo(0,0); 竖向滚动条置底 window.scrollTo(0,document.b ...