vb.net excel操作:填充人事档案表并打印

节选自:《Visual Basic.Net 循序渐进》


如果使用word开发相关表格和打印,请参看我的另外一篇教程:vb.net word操作:填充职员表并打印

【例 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:必选,图片的高度(以磅为单位)。
  8. 返回值:一个代表新图片的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,则忽略打印区域并打印整个对象。

具体代码如下:(说明:教材中配套代码附上了详细说明,这里简化了):

    '需要套用的模板文件
    Dim modelFile As String = "d:\lessons\职员信息登记表.xlsx"
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim modelfilePath As String = (New IO.FileInfo(modelFile)).Directory.FullName

        Dim xls As New Excel.Application
        Dim Wbook As Excel.Workbook = xls.Workbooks.Open(modelFile)
        Dim Wsheet As Excel.Worksheet
        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

        Dim picWidth, picHeight As Integer
        Dim picTop, picLeft As Integer
        picWidth = Wsheet.Range("I2").MergeArea.Width - 4
        picHeight = Wsheet.Range("I2").MergeArea.Height - 4
        picTop = Wsheet.Range("I2").Top + 2
        picLeft = Wsheet.Range("I2").Left + 2
        Dim picShape As Excel.Shape
        picShape = Wsheet.Shapes.AddPicture(modelfilePath & "\Employee\" & txtXm.Text & ".jpg",
                                            True, True, picLeft, picTop, picWidth, picHeight)
        Wbook.SaveAs(modelfilePath & "\" & txtXm.Text & ".xlsx")
        xls.Quit()
        MessageBox.Show("输出完成")
    End Sub


    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim modelfilePath As String = (New IO.FileInfo(modelFile)).Directory.FullName
        Dim xlsEmployeeFile As String = modelfilePath & "\" & txtXm.Text & ".xlsx"
        Dim printFile As String = modelfilePath & "\" & txtXm.Text & "1.oxps"

        Dim xls As New Excel.Application
        Dim Wbook As Excel.Workbook = xls.Workbooks.Open(xlsEmployeeFile)
        Dim Wsheet As Excel.Worksheet
        Wsheet = Wbook.Worksheets(1)
        Dim pagecount As Integer = 1 ' Wsheet.PageSetup.Pages.Count
        Wsheet.PrintOutEx(1, pagecount, 1, False, xls.ActivePrinter, True, True, printFile, True)
        xls.Quit()
        MessageBox.Show("打印完成")
    End Sub



 

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

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

生成的xlsx文件效果如下:

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

打印的效果如下:

图21-13 打印生成的文件

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



Visual Basic.Net 循序渐进》的下载地址:
链接:https://pan.baidu.com/s/1IfaLvlklx-nT4KK4VKZuIw 
提取码:ip5n

目前教程提供了学习章节共计569节,提供了示例502个,并在不断扩充中。
这是博主自己总结了多年VB开发经验后,结合实际开发编著的教程。
《Visual Basic.Net 循序渐进》前言
《Visual Basic.Net 循序渐进》详细目录
 

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供的参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值