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控件来触发打印操作,而难点 ...
随机推荐
- 巧用final
1.final可以修饰函数的参数,以防止函数内部随意篡改不允许修改的参数. 2.在函数内部,把函数的局部变量声明为final类型,可以检查在函数内部它们是否的确只被赋值一次.
- Linux中的task,process, thread 简介
本文的主要目的是介绍在Linux内核中,task,process, thread这3个名字之间的区别和联系.并且和WINDOWS中的相应观念进行比较.如果你已经很清楚了,那么就不用往下看了. LINU ...
- AngularCSS--关于angularjs动态加载css文件的方法(仅供参考)
AngularCSS CSS on-demand for AngularJS Optimize the presentation layer of your single-page apps by d ...
- centos6.4、6.5、7.0环境下载及安装
centos6.4.6.5.7.0下载地址: http://www.cnblogs.com/zhwl/p/3657958.html或 http://www.linuxdown.net/CentOS/2 ...
- Python反射函数
python里面跟getattr相关的有hasattr,setattr,delattr ,那么我们通过下面的例子,来详细的说说他们的用法. class Xiaorui: def __init__(s ...
- Ubuntu中Qt+opencv图像显示
先抛出一个疑问,知道的希望留言解答下 (创建Application->Qt Console Application,代码与下面2.3一样,运行有时会显示图片,但大多数不显示,为什么?) 1.打开 ...
- 【C#】面试题整理
1.C#中类是否支持多继承?请说明原因.答:不支持,需要用接口来实现多继承 2.我们都知道一个类可以有多个构造函数,并且C#会在我们创建类的时候默认的提供一个无参的构造函数,当我实现了另外一个有参数的 ...
- jvm的垃圾回收几种理解
1.引用计数器回收 给每个对象设置一个计数器,当该对象被引用时,计数器加1,当有其他变量不再引用该对象时,计数器减1.直到计数器数值为0,回收器视为他是‘垃圾’,可以被回收,当该对象被回收时,其他引用 ...
- 用CSS实现文本框尖角
经常看到这样的尖角,以前不懂,以为都是用图片做出来的,后来惊奇的发现,原来很多都是用CSS做出来的,既美观又节省资源,真是两全其美啊! 那么,用CSS怎么实现这种效果呢?首先,来写一个简单的代码: & ...
- c#的as关键字
类型a as 类型b ,把类型a强制变为类型b