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控件来触发打印操作,而难点 ...
随机推荐
- 内存错误:CRT detected that the application wrote to memory after end of heap buffer
今天调试测试代码时,发现在用完了new出来的内存buf后,在执行delete时报错了,具体信息为: HEAP_CORRUPTION_DETECTED: after Normal block(#908) ...
- 学习OpenCV,看这些!
OpenCV简介: OpenCV 是一款功能强大的跨平台计算机视觉开源库,可以用于解决人机交互.物体检测.人脸识别等领域的问题.库本身是采用 C++ 编写的,但是同时也对 Python, Java, ...
- 算法笔记_014:合并排序(Java)
1 问题描述 给定一组数据,使用合并排序得到这组数据的非降序排列. 2 解决方案 2.1 合并排序原理简介 引用自百度百科: 合并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Div ...
- js导出execl兼容ie Chrome Firefox各种主流浏览器(js export execl)
第一种导出table布局的表格 <html> <head> <meta charset="utf-8"> <script type=&qu ...
- PostgreSQL 序列使用
数据库中主键的生成一般是通过序列来生成,PG的序列知识主要罗列如下: 如何找到序列的名称:用pgadmin打开当前所用数据库,在schemas->sequences下找到相关的序列,然后SELE ...
- Google Daydream 在中国的第一次演讲摘录
从 PC.手机到 VR/AR,计算机平台正在迁移,而在这个过程中,与用户使用体验息息相关的「人机交互方式」也将不可避免的发生变化.作为这几波浪潮的弄潮儿,Google 怎么看这种人机交互方式的演进? ...
- [转]numpy线性代数基础 - Python和MATLAB矩阵处理的不同
转自:http://blog.csdn.net/pipisorry/article/details/45563695 http://blog.csdn.net/pipisorry/article/de ...
- Minicom配置及使用详解
因为现在电脑基本不配备串行接口,所以,usb转串口成为硬件调试时的必然选择.目前知道的,PL2303的驱动是有的,在dev下的名称是ttyUSB*. minicom,tkterm都是linux下应用比 ...
- git的入门使用操作
Git html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,addres ...
- Python基础之列表
列表的内置方法 1.append() 描述:用于在列表末尾添加新的对象. 示例: msg_list=["aaaa","bbbbb","cccccc&q ...