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 == )
{
DevExpress.XtraEditors.XtraMessageBox.Show("模板数据项目没有配置", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
} if (lst_TbPrintSetItem.Where(m => string.IsNullOrEmpty(m.CFiledName)).Count() > )
{
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 = ; //几行几列
int cols = ; int rowStart = ; //从几开开始
int colStart = ;
bool printLen = false; //是否打印长度
int rowSpan = ; //列间隔
int colSpan = ; 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 = ; //从A开始 int index = ; //从1行开始 n += colStart; //从A B C 开始 index += rowStart; int nl = n; //临时变量存入列A\B\C //循环行数
for (int i = ; i < rows; i++)
{ nl = n;
for (int k = ; k < cols; k++)
{
//遍历几个数 for (int j = ; 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的更多相关文章
- NPOI写Excel,Spire.XLS for.NET组件转换Excel为PDF
首先要引用NPOI动态库和Microsoft.Office.Interop.excel.dll (Microsoft.Office.Interop.excel.dll 最好使用使用NuGet下载 , ...
- 【原创】.NET读写Excel工具Spire.Xls使用(5)重量级的Excel图表功能
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...
- C# 中从程序中下载Excel模板
方法一: #region 下载模板 /// <summary> /// 下载模板 /// </summary> /// <param name="sender& ...
- 使用SPIRE.XLS来创建Excel 工作簿
使用SPIRE.XLS来创建Excel 工作簿 概要 最近在研究 .NET 控件,使用这些控件在程序中可以快速低成本实现功能. 在这一篇中我们使用的控件是Spire.XL ...
- 【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍
在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装E ...
- .NET读写Excel工具Spire.Xls使用(1)入门介绍
原文:[原创].NET读写Excel工具Spire.Xls使用(1)入门介绍 在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式 ...
- 【目录】C#操作Excel组件Spire.XLS系列文章目录
本博客所有文章分类的总目录链接:http://www.cnblogs.com/asxinyu/p/4288836.html 1.C#操作Excel组件Spire.XLS文章目录 1.[原创].NET读 ...
- Spire.XLS for .NET 測评
有一位朋友推荐了我 Spire.Office (官网:http://www.e-iceblue.com/) -- 基于.NET的办公软件库,说不错. 究竟怎样呢?仅仅有亲測一下才干知道了. ...
- c# winform打印excel(使用NPOI+Spire.xls+PrintDocument直接打印excel)
前言 c#做winform程序要求生成并打印Excel报告,为了不安装Office相应组件,我选择了NPOI来生成Excel报告,用winform的PrintDocument控件来触发打印操作,而难点 ...
随机推荐
- oracle 12c 学习系列(1)–12c初体验
详见原文博客链接地址: oracle 12c 学习系列(1)–12c初体验
- java反射的运用场景
1.反射的好处是:可以在运行时确认对象以及方法. 2.下面举个简单的例子来说下反射的运用场景: 假如一款游戏有一个配置文件,配置文件里有个renderType设置了游戏启动时调用哪个RenderHan ...
- 【Zookeeper】源码之序列化
一.前言 在完成了前面的理论学习后,现在可以从源码角度来解析Zookeeper的细节,首先笔者想从序列化入手,因为在网络通信.数据存储中都用到了序列化,下面开始分析. 二.序列化 序列化主要在zook ...
- Python各种花式截图工具,截到你手软
前言: 最近,项目中遇到了一个关于实现通过给定URL,实现对网页屏幕进行截图的一个功能,前面代码中已经用python的第三方库实现了截图功能,但在上线以后出现了一些bug,所以就改bug的任务就落在了 ...
- 正经学C#_表达式与其运算符[算术运算符]:《c#入门经典》
表达式:正如字面意义,它是通过算术运算符来进行运算的数学公式.表达式的意义我们都是很明白的,大白话就是一个公式嘛.不是很难懂. 表达式不是一个单独的存在,必然有操作数或者操作符的.在c#中有操作符有很 ...
- 办理西蒙菲莎大学(本科)学历认证『微信171922772』SFU学位证成绩单使馆认证Simon Fraser University
办理西蒙菲莎大学(本科)学历认证『微信171922772』SFU学位证成绩单使馆认证Simon Fraser University Q.微信:171922772办理教育部国外学历学位认证海外大学毕业证 ...
- 伪 alter 弹窗 +弹窗统一
你应该有遇到这种情况:alert() 在手机上面显示的时候 反正是不好看 有的时候就只看到一个白色的框 看不到提示信息 反正很反人类 这时候我觉得 马上会有产品跟你说 这个要改掉. 然后我就遇 ...
- JMeter处理Cookie与Session
1.Cookie 添加方式:线程组-配置元件-HTTP Cookie 管理器,如下图: 2.Session 添加方式:线程组-前置处理器 -HTTP URL 重写修饰符,如下图: 有些tomcat的s ...
- Selenium也是一个用于Web应用程序测试的工具
Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Firefox.Mozilla Suite ...
- C# 显式创建线程 or 使用线程池线程--new Thread() or ThreadPool.QueueUserWorkItem()
在C#多线程编程中,关于是使用自己创建的线程(Thread)还是使用线程池(ThreadPool)线程,一直很困惑,知道看了Jeffrey Richter的相关介绍才明白,记录如下: 当满足一下任何条 ...