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

      

     
  • 相关阅读:
    解决Xcode8打印了nw_socket_handle_socket_event Event mask
    调用系统框架使用设备系统语言的设置,相册相机设置为中文
    ios开发 之 设置多种文字颜色/背景色/文字下划线/行间距 NSString
    IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法
    UITableView设置cell的separator 分割线
    iOS用户点击推送消息进入应用后自动跳转到对应的ViewController
    随感
    JS获取当前网页大小以及屏幕分辨率等
    js将秒转换为 分:秒 函数
    css实现强制不换行/自动换行/强制换行
  • 原文地址:https://www.cnblogs.com/Chareree/p/6000089.html
Copyright © 2011-2022 走看看