Spire.XLS 在程序中直接打印excel

摘要:
string.IsNullOrEmpty){工作簿.OpenPassword=item_TbPrintSet.CPwd;}工作簿.LoadFromFile;worksheet=工作簿.Worksheets.Where.FirstOrDefault();如果{DevExpress.XtraEditors.XtraMessageBox.Show;return;}//删除其他数据列表lstsheet=newList();工作簿.工作表.All(m=˃{if(m.Name!=item_TbPrintSet.CSheetName){lstsheet.Add;}returntrue;});lstsheet.All;如果{DevExpress.XtraEditors。XtraMessageBox.Show;return;}如果{DevExpress.XtraEditors。Xtra MessageBox.Sow;return;}如果{DefExpress.Xtraditors。XttraMessageBox.SShow;return;{if(DevExpress.XtraEditors。XtraMessageBox.Show(string.Format)(“是否要打印模板{0},副本数{1}?

上代码

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

  

 

免责声明:文章转载自《Spire.XLS 在程序中直接打印excel》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇智能客户端(SmartClient)转 Python 时间戳操作,获取整点凌晨时间戳下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jni中关于dll的装载问题[转]

   通常我们在写大型项目时,也就是集成的项目时,单独用JAVA语言去完成所有的事情往往效果不佳,也不能很好的完成,例如:我们要去调硬件,获取电脑的运行状况等等(如果用JAVA语言实现时,往往耗时),基于此,我们就要寻求一种很好的解决方案,那就是利用别的语言的长处了,如:C++(它在对底层的调用和硬件方面确实够强悍)。如果我们能用C++实现对硬件的所有操作...

Java开发中的23种设计模式详解(转)

设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如...

数据加密之RijndaelManaged加密

1 #region RijndaelManaged加密 2 /// <summary> 3 /// 加密数据 4 /// </summary> 5 /// <param name="Text">要加密的内容</param>...

Delphi2007升级到Delphi 2010总结

这两天把一个使用Delphi2007成功升级到了Delphi2010。升级途中很艰辛,总结了 以下经验与大家分享。另外,D7使用的第三方组件,由于官方没有发布For Delphi2010的更新,修改的第三 方组件列表见文章尾部。1,PChar因为Delphi不支持无类型指针的算术运算,很多程序员使用 PChar来代替Pointer,即使指针指向目标并不是P...

在Android里完美实现基站和WIFI定位

来自:http://www.cnblogs.com/coffeegg/archive/2011/10/01/2197129.html 众所周知的,在OPhone和大部分国产的Android定制机里不支持最简单实用的基站和WIFI定位,只能使用速度慢而耗电的GPS定位,但OPhone和华为/中兴生产的一些Android定制机却占据了一定的市场,因此导致了...

CKEditor上传图片—配置CKFinder

在网站开发中,如果有发布类似新闻的图文混排需求时,CKEditor不失为一个很好的选择,下载地址如下: http://ckeditor.com/download 它的前身是FCKEditor,随着它的更新,上传图片的功能被分离出去了,现在如果需要实现上传图片,要么自己写代码,还有一种方法是使用CKFinder,下载地址如下: http://ckfinder...