C#用 excel 作为模板打印
//打印操作,套打、打印、预览
enum PrintFlag
{
/// <summary>
/// 套打,只打印没有印刷的部分
/// </summary>
CasePrint,
/// <summary>
/// 打印全部
/// </summary>
PrintAll,
/// <summary>
/// 预览全部
/// </summary>
PreviewAll
}
//套打、打印、预览三个按钮关联些委托实例
private void Print_Click(object sender, System.EventArgs e)
{
Button btn = (Button)sender;
switch(btn.Tag.ToString())
{
case "套打":
Print(PrintFlag.CasePrint);
break;
case "打印":
Print(PrintFlag.PrintAll);
break;
case "预览":
Print(PrintFlag.PreviewAll);
break;
}
}
private void Print(PrintFlag p_printFlag)
{
//制作步骤:
/* 1、用Excel作出与要打印的样式一样的电子表格存为模板;
* 技巧:最好把第一行与第一列作为空行,以利于调整边距(虽然Excel、打印机可调整页边距), 尽量的在需要调整的地方多空几行与几列,以利于调整套打对准
*
* 2、如同本程序一样,将Excel作为套打的模板,直接将要打印的数据写入;
*
* 3、打印,根据实际的效果调整Excel模板行高列宽及空出的行列, 直到能够准确的套上。将模板拷贝一份,清除模板上的文字与网格线,做成套打的模板。
*/
#region 套打、打印预览
//用Excel打印,步骤为:打开、写数据、打印预览、关闭
GoldPrinter.ExcelExpert.ExcelBase excel = new GoldPrinter.ExcelExpert.ExcelBase();
string strFileName = "invoice.xlt"; //模板文件名
if (p_printFlag == PrintFlag.CasePrint)
{
strFileName = "invoiceCase.xlt"; //套打模板文件名
}
string strExcelTemplateFile = System.IO.Path.GetFullPath(@"../../ExcelTemplate/" + strFileName);
excel.Open(strExcelTemplateFile); //用模板文件
excel.Visible = false; //建议:如果excel不可见且在编程情况下写数据特别是大量数据时
excel.ScreenUpdating = false; //设置此开关能大大提高效率。写完后如要可见,再设置此属性为真刷新屏幕。
excel.Caption = "税 务 机 关 代 开 统 一 发 票(国 税)"; //"MIS金质打印通 通打天下报表";
//在模板中写入要打印的数据
//***发票抬头***
//年月日
excel.SetCellText(7,"B",txtYear.Text + "年" + txtMonth.Text + "月" + txtDay.Text + "日" );
//付款方名称
excel.SetCellText(8,"D",txtPayer.Text);
//收款方名称
excel.SetCellText(9,"D",txtCollecter.Text);
//及地址、电话
excel.SetCellText(11,"D",txtCollecterAddTel.Text);
// 代开普通发票 申 请 表 号 码
excel.SetCellText(8,"J",txtInvoiceApplicationNo.Text);
//收款方识别号或 证 件 号 码
excel.SetCellText(9,"J",txtCollecterID.Text);
//***品名及金额、备注***
//B14到B23是品名 F14到F23为金额
excel.SetCellText("B14",txtP1.Text);
excel.SetCellText("F14",txtJ1.Text);
excel.SetCellText("B15",txtP2.Text);
excel.SetCellText("F15",txtJ2.Text);
excel.SetCellText("B16",txtP3.Text);
excel.SetCellText("F16",txtJ3.Text);
excel.SetCellText("B17",txtP4.Text);
excel.SetCellText("F17",txtJ4.Text);
excel.SetCellText("B18",txtP5.Text);
excel.SetCellText("F18",txtJ5.Text);
excel.SetCellText("B19",txtP6.Text);
excel.SetCellText("F19",txtJ6.Text);
excel.SetCellText("B20",txtP7.Text);
excel.SetCellText("F20",txtJ7.Text);
excel.SetCellText("B21",txtP8.Text);
excel.SetCellText("F21",txtJ8.Text);
excel.SetCellText("B22",txtP9.Text);
excel.SetCellText("F22",txtJ9.Text);
excel.SetCellText("B23",txtP10.Text);
excel.SetCellText("F23",txtJ10.Text);
//备注
//excel.SetCellText(14,"I",txtMemo.Imag.);
//***发票总金额***
//合计人民币 (大写)
excel.SetCellText(24,"D",txtTotalUpper.Text);
//合计人民币 (小写)
excel.SetCellText(24,"K",txtTotalLower.Text);
//税额 (大写)
excel.SetCellText(25,"D",txtTaxUpper.Text);
//税额 (小写)
excel.SetCellText(25,"L",txtTaxLower.Text);
//***发票尾***
//税控码
excel.SetCellText(26,"C",txtTaxControlCode.Text);
//开票人:
excel.SetCellText(26,"H",txtWriter.Text);
//刷新Excel屏幕
excel.ScreenUpdating = true;
if (p_printFlag == PrintFlag.CasePrint || p_printFlag == PrintFlag.PrintAll)
{
excel.Print(); //打印
}
else
{
excel.PrintPreview(); //预览
}
excel.Close(); //关闭并释放
#endregion
}
private void frmInvoice_Load(object sender, System.EventArgs e)
{
//初始当日日期
System.DateTime dt = System.DateTime.Now;
SetToday(dt);
}
private void btnExit_Click(object sender, System.EventArgs e)
{
this.Close();
}
//回车
private void frmInvoice_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
SendKeys.Send("{TAB}");
}
}
//金额小写转人民币大写
private void txtTotalLower_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
SetUpperMoney();
}
//重新总计
private void txtJX_TextChanged(object sender, System.EventArgs e)
{
double dblMoney = 0;
dblMoney += GetInputMoney(txtJ1.Text);
dblMoney += GetInputMoney(txtJ2.Text);
dblMoney += GetInputMoney(txtJ3.Text);
dblMoney += GetInputMoney(txtJ4.Text);
dblMoney += GetInputMoney(txtJ5.Text);
dblMoney += GetInputMoney(txtJ6.Text);
dblMoney += GetInputMoney(txtJ7.Text);
dblMoney += GetInputMoney(txtJ8.Text);
dblMoney += GetInputMoney(txtJ9.Text);
dblMoney += GetInputMoney(txtJ10.Text);
txtTotalLower.Text = dblMoney.ToString();
SetUpperMoney();
}
//改变税率重算
private void cboTaxRate_TextChanged(object sender, System.EventArgs e)
{
SetUpperMoney();
}
private void btnRefDate_Click(object sender, System.EventArgs e)
{
cldSelect.Visible = true;
cldSelect.SetDate(new DateTime(int.Parse(txtYear.Text),int.Parse(txtMonth.Text),int.Parse(txtDay.Text)));
cldSelect.Focus();
}
private void cldSelect_DateSelected(object sender, System.Windows.Forms.DateRangeEventArgs e)
{
SetToday(e.End);
cldSelect.Visible = false;
}
//大写合计人民币、税额
private void SetUpperMoney()
{
try
{
// string strUpper = GoldPrinter.ExcelExpert.ChineseNum.GetUpperMoney(Double.Parse(txtTotalLower.Text));
// //合计人民币
// txtTotalUpper.Text = strUpper;
//
// strUpper
=
GoldPrinter.ExcelExpert.ChineseNum.GetUpperMoney(Double.Parse(txtTotalLower.Text)
* Double.Parse(cboTaxRate.Text) / 100);
// //税额 = 合计人民币 * 税率
// txtTaxUpper.Text = strUpper;
}
catch{}
}
private double GetInputMoney(string p_text)
{
double dblReturn = 0;
try
{
dblReturn = double.Parse(p_text);
}
catch{}
return dblReturn;
}
private void SetToday(System.DateTime dt)
{
txtYear.Text = dt.Year.ToString();
txtMonth.Text = GetLengthTwoDate(dt.Month.ToString());
txtDay.Text = GetLengthTwoDate(dt.Day.ToString());
}
private string GetLengthTwoDate(string p_MonthOrDay)
{
string strReturn = p_MonthOrDay;
if (strReturn.Length == 1)
{
strReturn = "0" + strReturn;
}
return strReturn;
}
}//End Class
}//End Namespace
C#用 excel 作为模板打印的更多相关文章
- js以excel为模板的打印
使用excel为模板打印的好处是格式容易调整,这种方法要求客户端系统配置高度统一,譬如excel安装版本一致,存在服务器上的excel模板必须与客户端excel版本一致,而且不能用其他版本的excel ...
- Python开发-实现Excel套打打印
一.目的 目前本人就职与甲方的工作,由于公司的ERP比较烂无法完美的设计套打,就想着自己用Python开发一个套打工具. 二.开发过程 刚开始我打算用Html的方式生成打印的文档,但是有两个无法解决的 ...
- C# 设置Excel打印选项及打印excel文档
C# 设置Excel打印选项及打印excel文档 打印Excel文档是一个很常见的操作,但有时候我们会碰到各种不同的打印需求,例如只打印一个Excel工作表的其中一部分,或打印时每页都有表头,或把工作 ...
- java动态生成带下拉框的Excel导入模板
在实际开发中,由于业务需要,常常需要进行Excel导入导出操作.以前做一些简单的导入时,先准备一个模板,再进行导入,单有十几. 二十几个导入模板时,往往要做十几.二十几个模板.而且,当在模板中需要有下 ...
- C# 对Excel文档打印时的页面设置
1.对打印页面的朝向,页宽,页高进行设置 参考源码[1] using Excel = Microsoft.Office.Interop.Excel; Excel.Application tmpExce ...
- 删除Excel中的打印预览留下的打印线
Excel 工作表打印后,会留有几条虚线打印线.如下图所示: 不少同学反映,他们尝试了很多操作却仍然无法消除.难道除了重新打开就没有别的办法了? 可以这样做: 在 Excel 2010 中,单 ...
- JXLS导出Excel(模板导出)
1.导包 在pom.xml中加入依赖如下: <dependency> <groupId>org.jxls</groupId> <artifactId>j ...
- 按照已有的模板打印小票<二> ——调用windows打印机打印 可设置字体样式
按照已有的模板打印小票<二> ——调用windows打印机打印 可设置字体样式 之前写过一篇文章<按照已有的模板输出一(如发票)>,是关于如何给已有的模板赋值.在项目的实践过程 ...
- 项目产品化——Excel数据库模板化导入(java)
Excel导入可能是代码开发中比較常见的功能,一个项目假设有多个地方须要excel导入数据库.那么开发的工作量也将比較大,项目产品化过程中,将这么一个类似的功能进行封装合并也是必要的.封装好的代码仅仅 ...
随机推荐
- SpringMVC,Spring,Hibernate,Mybatis架构开发搭建之SpringMVC部分
SpringMVC,Spring,Hibernate,Mybatis架构开发搭建之SpringMVC部分 辞职待业青年就是有很多时间来写博客,以前在传统行业技术强度相对不大,不处理大数据,也不弄高并发 ...
- .Net用户使用期限的设置、限制通用小组件
.Net用户使用期限的设置.限制通用小组件 最近比较项目组的同事都比较烦,不断的穿梭在不同的项目之间,一个人同时要兼顾多个项目的维护修改.甚至刚放下这个客户的电话,另一个客户的电话就进来了.究其原因, ...
- MingQQ v1.0高仿版开源了,使用WebQQ协议实现了QQ客户端基本的聊天功能...
MingQQ v1.0高仿版开源了,使用WebQQ协议实现了QQ客户端基本的聊天功能... MingQQ目前支持的功能如下:1.支持普通方式登录.验证码方式登录.注销.保持在线.改变在线状态.2.支持 ...
- OpenGL屏幕二维坐标转化成三维模型坐标
我们把OpenGL里模型的三维坐标往二维坐标的转化称为投影,则屏幕上的二维坐标往三维坐标转化则可以称为反投影,下面我们来介绍一下反投影的方法. 主要是gluUnProject函数的使用,下面是代码: ...
- linux c编程获得当前进程的进程名和执行路径
如何得到当前进程的进程名和执行路径.写了个程序分享一下. [sam@hzhsan test]$ more test_processname.cpp #include <limits.h> ...
- TFS Services 集成Docker
随着Docker的爆发,越来越多软件研发团体开始享用和受益于Docker系统体系带来的巨大好处.Docker的使用,除了减少软硬件成本的立竿见影效果,更是对软件生命周期过程开发.测试.生成部署和运维整 ...
- Android 权限管理
从 Android 6.0(API 级别 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予.此方法可以简化应用安装过程,因为用户在安装或更新应用时不需要授予权限.它还让用户可以对应 ...
- EntityFramework Core Raw Query再叙注意事项
前言 最近一直比较忙没有太多时间去更新博客,接下来会一直持续发表相关内容博客,上一篇我们讲到了EF Core中的原始查询,这节我们再来叙述一下原始查询,本文是基于在项目当中用到时发现的问题. 话题 我 ...
- [bzoj2957][楼房重建] (线段树)
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...
- Unity Get Thread Content Failed
最近在使用Unity做项目时,发现总是莫名的出现“Get Thread Content Failed”的消息弹出,然后Unity就卡死了,这样反反复复,后来查到是因为一些杀毒软件在阻止Unity,尝试 ...