C#模板打印功能-模板为WPS或Excel
//---WPS-----
using EtApp = ET;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Configuration;
//--Excel--------
using EtAppExcel = Microsoft.Office.Interop.Excel;
namespace LensMaterialPowerCenter.Dorm
{
public
partial class frmDormAllotRoomReportInfo : Office2007Form
{
//--------WPS------
string strProduct = string.Empty;
EtApp.Application objApp = null; //实例WPS Excel类
EtAppExcel.Application objAppExcel = null; //实例Office
Excel类
}
}
//打印两联模板
#region
private void btnTwoPrint_Click(object sender, EventArgs e)
{
try
{
if (dtStaff.Rows.Count == 0)
{
MessageBox.Show("请先选择打印数据记录,请确认!", "提示", MessageBoxButtons.OK,
MessageBoxIcon.Warning);
return;
}
OpenExcelTwoFile();
}
catch { }
}
public void OpenExcelTwoFile()
//打开Excel文件
{
try
{
System.Windows.Forms.OpenFileDialog sfd = new OpenFileDialog();
sfd.DefaultExt = "*.xls";
sfd.Filter = "Any File(*.xls)|*.xls|(*.et)|*.et";
if (sfd.ShowDialog() == DialogResult.OK)
{
//OperateTwo(sfd.FileName);
OperateTwo_Page(sfd.FileName); //---------mark by zl for 测试两联纸
2013-05-20----------
}
}
catch { }
}
private void OperateTwo(string pFileName)
{
try
{
//打开一个WPS Excel应用
objApp = new EtApp.Application();
objApp.DisplayAlerts = false;//DisplayAlerts 属性设置成
False,就不会出现这种警告。
objApp.Visible = false;
if (objApp == null)
{
throw new Exception("打开 WPS Excel应用时发生错误!");
}
EtApp.Workbooks wbs = objApp.Workbooks;
//打开一个现有的工作薄
EtApp._Workbook wb = wbs.Add(pFileName);
EtApp.Sheets shs = wb.Sheets;
//选择第一个Sheet页
EtApp._Worksheet sh = (EtApp._Worksheet)shs.get_Item(1);
string[] str = null;
int page = 0;
if (dtStaff.Rows.Count % 2 == 0)
{
page = dtStaff.Rows.Count / 2;
}
else
{
page = dtStaff.Rows.Count / 2 + 1;
}
for (int i = 0; i < page; i++)
{
sh.Cells[2, 1] = "";
sh.Cells[2, 2] = "";
sh.Cells[2, 3] = "";
//sh.Cells[2, 16] = DateTime.Now.Date;
sh.Cells[2, 4] = "";
sh.Cells[2, 5] = "";
sh.Cells[2, 6] = "";
sh.Cells[6, 1] = "";
sh.Cells[6, 2] = "";
sh.Cells[6, 3] = "";
//sh.Cells[2, 16] = DateTime.Now.Date;
sh.Cells[6, 4] = "";
sh.Cells[6, 5] = "";
sh.Cells[6, 6] = "";
for (int j = i * 2; j < (i * 2) + 2; j++)
{
if (j < dtStaff.Rows.Count)
{
str = new string[6];
str[0] = dtStaff.Rows[j][0].ToString().Trim();
//姓名
str[1] = "'" + dtStaff.Rows[j][1].ToString().Trim(); //身份证号
str[2] = dtStaff.Rows[j][2].ToString().Trim(); //性别
str[3] = dtStaff.Rows[j][3].ToString().Trim();
//宿舍区
str[4] = dtStaff.Rows[j][4].ToString().Trim(); //房号
str[5] = dtStaff.Rows[j][5].ToString().Trim(); //床号
switch ((j + 1) % 2)
{
case 1:
sh.Cells[2, 1] = str[0];
sh.Cells[2, 2] = str[1];
sh.Cells[2, 3] = str[2];
//sh.Cells[2, 16] = DateTime.Now.Date;
sh.Cells[2, 4] = str[3];
sh.Cells[2, 5] = str[4];
sh.Cells[2, 6] = str[5];
sh.Cells[3, 9] =
System.DateTime.Now.Date.ToString("yyyy年MM月dd日");
break;
case 0:
sh.Cells[7, 1] = str[0];
sh.Cells[7, 2] = str[1];
sh.Cells[7, 3] = str[2];
//sh.Cells[2, 16] = DateTime.Now.Date;
sh.Cells[7, 4] = str[3];
sh.Cells[7, 5] = str[4];
sh.Cells[7, 6] = str[5];
sh.Cells[8, 9] =
System.DateTime.Now.Date.ToString("yyyy年MM月dd日");
break;
}
}
}
objApp.Visible = true;
objApp.UserControl = true;
objApp.Visible = true;
objApp.UserControl = true;
///
///打印
///
//wb.PrintPreview(false);
sh.PrintPreview(false);
object oMissing = System.Reflection.Missing.Value;
wb.PrintOut(1, 1, oMissing, oMissing, oMissing, false, false,
oMissing, false, 1, 1, 12124, 12464,
false, ET.ETPaperTray.etPrinterAutomaticSheetFeed, false,
ET.ETPaperOrder.etPrinterOverThenDown);
}
wb.Close(false, null, null); //退出工作薄
objApp.Quit(); //退出wps
System.GC.Collect();
}
catch (Exception theException)
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat(errorMessage,
theException.Message);
errorMessage = String.Concat(errorMessage, " Line: ");
errorMessage = String.Concat(errorMessage,
theException.Source);
MessageBox.Show(errorMessage, "Error");
}
}
#region
private void OperateTwo_Page(string pFileName)
{
try
{
//打开一个Office Excel应用
objAppExcel = new EtAppExcel.Application();
objAppExcel.DisplayAlerts = false;//DisplayAlerts 属性设置成
False,就不会出现这种警告。
objAppExcel.Visible = false;
if (objAppExcel == null)
{
throw new Exception("打开 Office Excel应用时发生错误!");
}
EtAppExcel.Workbooks wbs = objAppExcel.Workbooks;
//打开一个现有的工作薄
EtAppExcel._Workbook wb = wbs.Add(pFileName);
EtAppExcel.Sheets shs = wb.Sheets;
//选择第一个Sheet页
EtAppExcel._Worksheet sh =
(EtAppExcel._Worksheet)shs.get_Item(1);
string[] str = null;
int page = 0;
if (dtStaff.Rows.Count % 2 == 0)
{
page = dtStaff.Rows.Count / 2;
}
else
{
page = dtStaff.Rows.Count / 2 + 1;
}
for (int i = 0; i < page; i++)
{
sh.Cells[2, 1] = "";
sh.Cells[2, 2] = "";
sh.Cells[2, 3] = "";
//sh.Cells[2, 16] = DateTime.Now.Date;
sh.Cells[2, 4] = "";
sh.Cells[2, 5] = "";
sh.Cells[2, 6] = "";
sh.Cells[6, 1] = "";
sh.Cells[6, 2] = "";
sh.Cells[6, 3] = "";
//sh.Cells[2, 16] = DateTime.Now.Date;
sh.Cells[6, 4] = "";
sh.Cells[6, 5] = "";
sh.Cells[6, 6] = "";
for (int j = i * 2; j < (i * 2) + 2; j++)
{
if (j < dtStaff.Rows.Count)
{
str = new string[6];
str[0] = dtStaff.Rows[j][0].ToString().Trim();
//姓名
str[1] = "'" + dtStaff.Rows[j][1].ToString().Trim(); //身份证号
str[2] = dtStaff.Rows[j][2].ToString().Trim(); //性别
str[3] = dtStaff.Rows[j][3].ToString().Trim();
//宿舍区
str[4] = dtStaff.Rows[j][4].ToString().Trim(); //房号
str[5] = dtStaff.Rows[j][5].ToString().Trim(); //床号
switch ((j + 1) % 2)
{
case 1:
sh.Cells[2, 1] = str[0];
sh.Cells[2, 2] = str[1];
sh.Cells[2, 3] = str[2];
//sh.Cells[2, 16] = DateTime.Now.Date;
sh.Cells[2, 4] = str[3];
sh.Cells[2, 5] = str[4];
sh.Cells[2, 6] = str[5];
sh.Cells[3, 9] =
System.DateTime.Now.Date.ToString("yyyy年MM月dd日");
break;
case 0:
sh.Cells[7, 1] = str[0];
sh.Cells[7, 2] = str[1];
sh.Cells[7, 3] = str[2];
//sh.Cells[2, 16] = DateTime.Now.Date;
sh.Cells[7, 4] = str[3];
sh.Cells[7, 5] = str[4];
sh.Cells[7, 6] = str[5];
sh.Cells[8, 9] =
System.DateTime.Now.Date.ToString("yyyy年MM月dd日");
break;
}
}
}
objAppExcel.Visible = true;
objAppExcel.UserControl = true;
objAppExcel.Visible = true;
objAppExcel.UserControl = true;
///
///打印
///
//wb.PrintPreview(false);
sh.PrintPreview(false);
object oMissing = System.Reflection.Missing.Value;
//wb.PrintOut(1, 1, oMissing, oMissing, oMissing, false, false,
oMissing, false, 1, 1, 12124, 12464,
// false,
ET.ETPaperTray.etPrinterAutomaticSheetFeed, false,
ET.ETPaperOrder.etPrinterOverThenDown);
wb._PrintOut(1, 1, oMissing, false, oMissing, oMissing,
oMissing);
}
wb.Close(false, null, null); //退出工作薄
objAppExcel.Quit(); //退出wps
System.GC.Collect();
}
catch (Exception theException)
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat(errorMessage,
theException.Message);
errorMessage = String.Concat(errorMessage, " Line: ");
errorMessage = String.Concat(errorMessage,
theException.Source);
MessageBox.Show(errorMessage, "Error");
}
}
#endregion
#endregion
C#模板打印功能-模板为WPS或Excel的更多相关文章
- vue-element-admin实现模板打印
一.简介 模板打印也叫”套打“,是业务系统和后台管理系统中的常用功能,B/S系统中实现”套打“比较繁琐,所以很多的B/S系统中的打印功能一直使用的是浏览器打印,很少实现模板打印.本篇将介绍在Vue E ...
- C#用 excel 作为模板打印
//打印操作,套打.打印.预览 enum PrintFlag { /// <summary> /// 套打,只打印没 ...
- 关于opencv模板匹配功能的项目测试记录
模板匹配功能介绍的很好的一篇博客:https://www.cnblogs.com/XJT2018/p/9934139.html 就如上述博客所言:“若原图像中的匹配目标发生旋转或大小变化,该算法无效. ...
- C#微信接口之推送模板消息功能示例
本文实例讲述了C#微信接口之推送模板消息功能.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2 ...
- C++模板常用功能讲解
前言 泛型编程是C++继面向对象编程之后的又一个重点,是为了编写与具体类型无关的代码.而模板是泛型编程的基础.模板简单来理解,可以看作是用宏来实现的,事实上确实有人用宏来实现了模板类似的功能.模板,也 ...
- 按照已有的模板打印小票<二> ——调用windows打印机打印 可设置字体样式
按照已有的模板打印小票<二> ——调用windows打印机打印 可设置字体样式 之前写过一篇文章<按照已有的模板输出一(如发票)>,是关于如何给已有的模板赋值.在项目的实践过程 ...
- Printing tools 自定义模板打印的实现
#ArcGIS for Server 自定义打印两种方法 友好阅读版本: http://gishub.info/2013/09/17/printingtools/ ## 前言使用web打印会遇到中文乱 ...
- ThinkPHP模板包含功能(转载)
对于一些有共同属性的页面(如页脚),可以单独制作成一个模板,再利用 ThinkPHP 提供的模板包含功能包含进来.这样,当要修改这些公共页面时,只需修改对应的模板即可而不必修改每一个页面.模板的包含使 ...
- count_if 功能模板
count_if 功能模板 template <class InputIterator, class UnaryPredicate> typename iterator_traits< ...
随机推荐
- Redis系统学习 五、管理
在最后一章里,我们将集中谈论Redis运行中的一些管理方面内容.这是一个不完整的Redis管理指南,我们将会回答一些基本的问题,初接触Redis的新用户可能会很感兴趣. 配置(Configuratio ...
- 最小堆实现优先队列:Python实现
最小堆实现优先队列:Python实现 堆是一种数据结构,因为Heapsort而被提出.除了堆排序,“堆”这种数据结构还可以用于优先队列的实现. 堆首先是一个完全二叉树:它除了最底层之外,树的每一层的都 ...
- echarts 某省下钻某市地图
因为最近工作需要,接触到了highcharts 与echarts ,对比了一下,目前公司系统用的是highcharts的图表插件,就不想再去用echarts的图标插件了,奈何highcharts地图对 ...
- HDU 2076 夹角有多大(题目已修改,注意读题)
Problem Description 时间过的好快,一个学期就这么的过去了,xhd在傻傻的看着表,出于对数据的渴望,突然他想知道这个表的时针和分针的夹角是多少.现在xhd知道的只有时间,请你帮他算出 ...
- linux下测试宽带速度
speedtest-cli是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行.它基于Speedtest.net的基础架构来测量网络的上/下行速率.安装sp ...
- samba安装与配置
1.安装软件包rpm -q samba samba-common samba-client cifs-utilsyum -y install samba samba-common samba-clie ...
- <span>什么意思
<span> 在CSS定义中属于一个行内元素,在行内定义一个区域,也就是一行内可以被 <span> 划分成好几个区域,从而实现某种特定效果. <span> 本身没有 ...
- Bootstrap实现弹出框和提示框效果代码
一.Bootstrap弹出框使用过JQuery UI应该知道,它里面有一个dialog的弹出框组件,功能也很丰富.与jQuery UI的dialog类似,Bootstrap里面也内置了弹出框组件.打开 ...
- 斯坦福机器学习视频笔记 Week1 Linear Regression and Gradient Descent
最近开始学习Coursera上的斯坦福机器学习视频,我是刚刚接触机器学习,对此比较感兴趣:准备将我的学习笔记写下来, 作为我每天学习的签到吧,也希望和各位朋友交流学习. 这一系列的博客,我会不定期的更 ...
- python-微博模拟登陆
微博的的模拟登陆是比较坑的,看了网上很多大神的帖子,自己又看了微博的登陆时的json数据:1.发现登陆时在输入账号时用chrome可以看到会有一个prelogin之类的网址,网址后面会有大串的随机数. ...