powershell

Windows超级工具PowerShell工具之初体验

使用过Linux系统的人都知道,其Shell功能十分强大,里面也有很多工具使用起来非常方便,常常使用文本命令就能够实现非常复杂的功能。相比之下Windows的CMD功能就十分简陋了,但是实际上Windows下面也有功能强大的脚本语言开发工具,叫做PowerShell,从名字就可以看出来,是一个强大的Shell。

Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能,也就是基于.Net Framework的,因此可以实现非常复杂的功能。

用脚本语言实现办公自动化,可以提高工作效率,以前采用过Python制作过自动生成Excel报表,然后通过邮件发送出去(python自动生成excel表格并调用outlook发送),第一次使用python感觉非常方便,很快就写出了程序,但是现在回想,python复杂的编码问题很让人头疼,耽误了不少时间来解决,尤其是处理汉字时。实际上,如果使用PowerShell一样方便,直接生成excel,以及调用outlook发送邮件也一样方便,而且不用像python那样安装软件以及相应的插件。

因引,此次尝试了使用PowerShell重新实现一遍从数据库中读取数据,然后生成excel报表:

  • 从Mysql数据库读取数据;
  • 生成excel报表;

一、从Mysql数据库读取数据

此部分内容参考地址:https://www.cnblogs.com/zhr1217/p/9686514.html

在使用Powershell操作MySQL之前,我们需要下载MySQL Connector/NET

https://dev.mysql.com/downloads/connector/net/

下载后得到msi,安装路径:C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.12\Assemblies\v4.5.2\MySql.Data.dll

我们通过System.Reflection中的Assembly Class来加载,操作程序集(MySql.Data.dll):

$mySQLDataDLL = “C:\mysql\MySql.Data.dll” #dll文件的绝对路径
[void][System.Reflection.Assembly]::LoadWithPartialName(“MySql.Data”)
[void][system.reflection.Assembly]::LoadFrom($mySQLDataDLL)

#连接MySQL
$Server = “xxx.xxx.xxx.xxx” #IP地址
$Database = “database name”
$user = “username”
$Password = “xxxxxxx”
$charset = “utf8”
$connectionString = “server=$Server;uid=$user;pwd=$Password;database=$Database;charset=$charset;SslMode=none”
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection($connectionString)
$connection.Open()

#执行MySQL
$insert = “INSERT INTO Tables Name (依据表结构) VALUES(xxxxxxxxx);”
$insertcommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$insertcommand.Connection = $connection
$insertcommand.CommandText = $insert
$insertcommand.executenonquery()

#关闭连接
$connection.Close()

二、生成excel报表

#创建excel对象
$excel = New-Object -ComObject Excel.Application
$excel.displayAlerts = $true
$excel.Visible = $true

#打开excel模板文件
$workbook=$excel.Workboks.open(“template.xlsx”)
$sheet = $excel.Worksheets.Item(“Sheet1″)

#写入数据
$sheet.Cells.Item(1,2)=”123456”
… …

#将excel另存为
$workbook.SaveAs(“data.xlsx”)

#退出,并释放进程
$excel.Quit()
$excel = $null
[GC]::Collect()



发表评论

电子邮件地址不会被公开。 必填项已用*标注