21.2.7 综合示例

news2025/3/18 11:00:02

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

【例 21.7【项目:code21-007】填充职员表并打印。

本例使用到的Excel文件为:职员信息登记表.xlsx,如下图所示:

图21-10 职员信息登记表

窗体设计如下图所示(注意:为了演示方便,已经填充了数据):

图21-11 窗体设计

在本例中还需要掌握的知识:

1、插入图片到指定位置

Worksheet.Shapes.AddPicture(Filename, LinkToFile, SaveWithDocument, Left, Top, Width, Height);

参数说明:

  1. Filename:必选,图片全路径。
  2. LinkToFile:必选,如果为True,则建立图片与其源文件之间的链接关系。否则,使图片成为其源文件的独立副本。通常设置为True。
  3. SaveWithDocument:必选,如果是True,则将图片与文档一起保存。否则,只链接到图片文件。通常设置为True。
  4. Left:必选,图片左上角相对于文档左上角的位置(以磅为单位)。
  5. Top:必选,图片左上角相对于文档顶部的位置(以磅为单位)。
  6. Width:必选,图片的宽度(以磅为单位)。
  7. Height:必选,图片的高度(以磅为单位)。

返回值:

  1. 一个代表新图片的Shape对象。

2、打印输出

Worksheet.PrintOutEx(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName, IgnorePrintAreas);

参数说明:

  1. From:可选,打印的开始页号。如果省略此参数,则从起始位置开始打印。
  2. To:可选,打印的终止页号。如果省略此参数,则打印至最后一页。
  3. Copies:可选,打印份数。如果省略此参数,则只打印一份。
  4. Preview:可选,如果为 True,将在打印前调用打印预览。如果为 False(或省略该参数),则立即打印。
  5. ActivePrinter:可选,设置活动打印机的名称,如果不设置,将使用默认打印机。
  6. PrintToFile:可选,如果为True,则打印到文件。如果没有指定 PrToFileName,将提示用户输入要使用的输出文件的文件名。
  7. Collate:可选,如果为True,则逐份打印多个副本。
  8. PrToFileName:可选,如果PrintToFile 设为True,则该参数指定要打印到的文件名。
  9. IgnorePrintAreas:可选,如果为True,则忽略打印区域并打印整个对象。

具体代码如下:

        //需要套用的模板文件

        string modelFile = "c:\\lessons\\职员信息登记表.xlsx";

        //输出Excel文件

        private void Button1_Click(object sender, EventArgs e)

        {

            //获得excel文件输出路径

            string modelfilePath = (new FileInfo(modelFile)).Directory.FullName;

            Microsoft.Office.Interop.Excel.Application xls = new Microsoft.Office.Interop.Excel.Application();

            Workbook Wbook = xls.Workbooks.Open(modelFile);

            Worksheet Wsheet;

            Wsheet = Wbook.Worksheets["sheet1"];

            //填充工作表各个单元格

            Wsheet.Cells[2, 2].value = txtXm.Text;

            Wsheet.Cells[2, 4].value = txtXb.Text;

            Wsheet.Cells[2, 6].value = txtMz.Text;

            Wsheet.Cells[2, 8].value = txtCsny.Text;

            Wsheet.Cells[3, 2].value = txtJkzk.Text;

            Wsheet.Cells[3, 4].value = txtSg.Text;

            Wsheet.Cells[3, 6].value = txtJg.Text;

            Wsheet.Cells[3, 8].value = txtHyzk.Text;

            Wsheet.Cells[4, 2].value = txtWhcd.Text;

            Wsheet.Cells[4, 4].value = txtByyx.Text;

            Wsheet.Cells[4, 7].value = txtSxzy.Text;

            Wsheet.Cells[5, 2].value = txtGzbm.Text;

            Wsheet.Cells[5, 4].value = txtZw.Text;

            Wsheet.Cells[5, 6].value = txtRzsj.Text;

            Wsheet.Cells[5, 8].value = txtZc.Text;

            Wsheet.Cells[6, 2].value = txtLxdz.Text;

            Wsheet.Cells[6, 5].value = txtLxdh.Text;

            Wsheet.Cells[7, 2].value = txtGrjl.Text;

            Wsheet.Cells[8, 2].value = txtQk.Text;

            Wsheet.Cells[9, 2].value = txtGrtc.Text;

            //插入图片

            int picWidth, picHeight;

            int picTop, picLeft;

            //图片高宽比单元格小4,注意由于是一个合并单元格,这里使用了MergeArea

            picWidth = (int)Wsheet.Range["I2"].MergeArea.Width - 4;

            picHeight = (int)Wsheet.Range["I2"].MergeArea.Height - 4;

            //图片左上角位置增加2

            picTop = (int)Wsheet.Range["I2"].Top + 2;

            picLeft = (int)Wsheet.Range["I2"].Left + 2;

            //插入图片

            Microsoft.Office.Interop.Excel.Shape picShape;

            //插入的图片位于Employee目录下,以职员名称命名

            picShape = Wsheet.Shapes.AddPicture(modelfilePath + "\\Employee\\" + txtXm.Text + ".jpg",

                 MsoTriState.msoTrue, MsoTriState.msoTrue, picLeft, picTop, picWidth, picHeight);

            //按照职员姓名保存文件

            Wbook.SaveAs(modelfilePath + "\\" + txtXm.Text + ".xlsx");   

            xls.Quit();

            MessageBox.Show("输出完成");

        }

        //打印

        private void Button2_Click(object sender, EventArgs e)

        {

            string modelfilePath = (new FileInfo(modelFile)).Directory.FullName;

            string xlsEmployeeFile = modelfilePath + "\\" + txtXm.Text + ".xlsx";

            string printFile = modelfilePath + "\\" + txtXm.Text + "1.oxps";

            Microsoft.Office.Interop.Excel.Application xls = new Microsoft.Office.Interop.Excel.Application();

            Workbook Wbook = xls.Workbooks.Open(xlsEmployeeFile);

            Worksheet Wsheet = Wbook.Worksheets[1];

            //可以使用PageSetup.Pages.Cpount获得总的页数,但是Excel要消耗时间和资源

            //这里由于只有一页,可以不考虑使用PageSetup.Pages.Cpount

            int pagecount = 1;   // Wsheet.PageSetup.Pages.Count

            //开始打印

            Wsheet.PrintOutEx(1, pagecount, 1, false, xls.ActivePrinter, true, true, printFile, true);

            xls.Quit();

            MessageBox.Show("打印完成");

        }

当按下“输出”按钮,将输出对应职员信息并保存为职员名字的xlsx文件。

当按下“打印”按钮,将输出的xlsx文件使用默认打印机进行打印,由于笔者计算机没有连接真实打印机,使用默认的“Microsoft XPS Document Writer”打印到文件,如果使用真实打印机,请修改PrintOutEx方法的参数,使之符合打印。

生成的xlsx文件效果如下:

图21-12 保存的Excel文件中的数据

打印的效果如下:

图21-13 打印生成的文件

本例中更适合从数据库中读取数据填入Excel中并打印,读取数据库填充数据,请参看第21.2.2节。还可以将输出数据与打印相结合,省略文件保存的步骤。

 

学习更多vb.net知识,请参看vb.net 教程 目录

学习更多C#知识,请参看C#教程 目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2295284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【大模型】DeepSeek与chatGPT的区别以及自身的优势

目录 一、前言二、核心技术对比2.1 模型架构设计2.1.1 ChatGPT的Transformer架构2.1.2 DeepSeek的混合架构 2.2 训练数据体系2.2.1 ChatGPT的数据特征2.2.2 DeepSeek的数据策略 三、应用场景对比3.1 通用场景表现3.1.1 ChatGPT的强项领域3.2.2 DeepSeek的专项突破 3.3 响应效率…

burpsuite抓取html登陆和上传数据包

一、burpsuite抓取html登陆数据包 1、先写一个html格式的登陆页面 <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><title>这是标签</title></head> <body> <hr><!-- 登陆表单 …

Linux 安装 Ollama

1、下载地址 Download Ollama on Linux 2、有网络直接执行 curl -fsSL https://ollama.com/install.sh | sh 命令 3、下载慢的解决方法 1、curl -fsSL https://ollama.com/install.sh -o ollama_install.sh 2、sed -i s|https://ollama.com/download/ollama-linux|https://…

使用Ollama本地部署deepseek

1、下载安装Ollama 前往下载页面 https://ollama.com/download下载好安装包&#xff0c;如同安装软件一样&#xff0c;直接安装即可 win中默认为C盘&#xff0c;如果需要修改到其他盘&#xff0c;查找具体教程 运行list命令&#xff0c;检查是否安装成功 2、修改模型下载的…

如何在RTACAR中配置IP多播(IP Multicast)

一、什么是IP多播 IP多播&#xff08;IP Multicast&#xff09;是一种允许数据包从单一源地址发送到多个目标地址的技术&#xff0c;是一种高效的数据传输方式。 多播地址是专门用于多播通信的IP地址&#xff0c;范围从 224.0.0.0到239.255.255.255 与单播IP地址不同&#x…

2025年最新版武书连SCD期刊(中国科学引文数据库)来源期刊已更新,可下载PDF版!需要的作者进来了解~

2025年最新版武书连SCD期刊&#xff08;中国科学引文数据库&#xff09;来源期刊已更新&#xff01; 官网是不提供免费查询的。小编给大家两个路径&#xff0c;无需下载PDF&#xff0c;随时随地都能查25版SCD目录。 路径一&#xff1a;中州期刊联盟官网&#xff0c;25版SCD目…

存储异常导致的Oracle重大生产故障

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…

基于Java的远程视频会议系统(源码+系统+论文)

第一章 概述 1.1 本课题的研究背景 随着人们对视频和音频信息的需求愈来愈强烈&#xff0c;追求远距离的视音频的同步交互成为新的时尚。近些年来&#xff0c;依托计算机技术、通信技术和网络条件的发展&#xff0c;集音频、视频、图像、文字、数据为一体的多媒体信息&#xff…

C++ Primer 成员访问运算符

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

使用云效解决docker官方镜像拉取不到的问题

目录 前言原文地址测试jenkins构建结果:后续使用说明 前言 最近经常出现docker镜像进行拉取不了&#xff0c;流水线挂掉的问题&#xff0c;看到一个解决方案: 《借助阿里个人版镜像仓库云效实现全免费同步docker官方镜像到国内》 原文地址 https://developer.aliyun.com/artic…

【DeepSeek】DeepSeek小模型蒸馏与本地部署深度解析DeepSeek小模型蒸馏与本地部署深度解析

一、引言与背景 在人工智能领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;如DeepSeek以其卓越的自然语言理解和生成能力&#xff0c;推动了众多应用场景的发展。然而&#xff0c;大型模型的高昂计算和存储成本&#xff0c;以及潜在的数据隐私风险&#xff0c;限制了…

3D图形学与可视化大屏:什么是几何着色器,有什么功能和应用。

一、几何着色器的定义 在 3D 图形学和可视化大屏中&#xff0c;几何着色器是一种可编程的图形处理单元&#xff08;GPU&#xff09;着色器阶段。它位于顶点着色器和片段着色器之间&#xff0c;主要负责处理由顶点着色器输出的几何图形数据。 几何着色器以图元&#xff08;如点…

Python:凯撒密码

题目内容&#xff1a; 凯撒密码是古罗马恺撒大帝用来对军事情报进行加密的算法&#xff0c;它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列该字符后面第三个字符&#xff0c;对应关系如下&#xff1a; 原文&#xff1a;A B C D E F G H I J K L M N O P Q R …

第八届大数据与应用统计国际学术研讨会(ISBDAS 2025)

重要信息 官网&#xff1a;www.is-bdas.org 时间&#xff1a;2025年2月28-3月2日 地点&#xff1a;中国 广州 主办单位&#xff1a;广东省高等教育学会人工智能与高等教育研究分会 协办单位&#xff1a;北京师范大学人工智能与未来网络研究院、人工智能与大数据科研基地 …

吴恩达深度学习——卷积神经网络的特殊应用

内容来自https://www.bilibili.com/video/BV1FT4y1E74V&#xff0c;仅为本人学习使用。 文章目录 人脸识别相关定义Similarity函数使用Siamese网络实现函数d使用Triplet损失学习参数 神经风格迁移深度卷积网络可视化神经风格迁移的代价函数内容损失函数风格损失函数 人脸识别 …

寒假2.7

题解 web&#xff1a;[HCTF 2018]WarmUp 打开是张表情包 看一下源代码 访问source.php&#xff0c;得到完整代码 代码审计 <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.p…

无限使用Cursor

原理&#xff1a;运行程序获得15天的免费试用期&#xff0c;重新运行程序重置试用期&#xff0c;实现无限使用。免费的pro账号&#xff0c;一个月有250的高级模型提问次数。 前提&#xff1a;已安装cursor cursor-vip工具&#xff1a;https://cursor.jeter.eu.org?p95d60efe…

unity碰撞的监测和监听

1.创建一个地面 2.去资源商店下载一个火焰素材 3.把procedural fire导入到自己的项目包管理器中 4.给magic fire 0 挂在碰撞组件Rigidbody , Sphere Collider 5.创建脚本test 并挂在magic fire 0 脚本代码 using System.Collections; using System.Collections.Generic; usi…

企业FTP替代升级,实现传输大文件提升100倍!

随着信息技术的飞速发展&#xff0c;网络安全环境也变得越来越复杂。在这种背景下&#xff0c;传统的FTP&#xff08;文件传输协议&#xff09;已经很难满足现代企业对文件传输的需求了。FTP虽然用起来简单&#xff0c;但它的局限性和安全漏洞让它在面对高效、安全的数据交换时…

python基础入门:3.3序列通用操作

Python序列操作终极指南&#xff1a;解锁数据处理的核心技能 # 快速导航 sequence_types ["列表", "元组", "字符串", "字节序列"]一、核心操作三位一体 1. 索引与切片体系 # 通用索引规则 data ["A", "B", &…