windows powershell实现excel的一些操作的代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows powershell实现excel的一些操作的代码相关的知识,希望对你有一定的参考价值。

现在有一张excel的表格,有很多列,输入:某一个列的列名,输出:根据这个列的不同内容所分出的很多张excel表格。例子:表格内容是学生信息,有姓名、学院、性别,学号这四个信息,根据输入的学院,把原表格分成不同学院的几张表。想要用powershell来实现,怎么实现,求大神帮忙

参考技术A Excel自带的函数就解决吧 用不着Powershell追问

是这样的,用excel当然能实现这个功能.但是如果针对比较大的几十MB的文件,用手去做比较麻烦,而且重复性的劳动,如果能写出一个脚本,每次双击一下鼠标就能解决会舒服很多.

参考技术B 表示有点困难。。 参考技术C 大量数据用函数确实不现实,VBA如何?一个快捷键调用宏就解决?有意请注明实际的表格格式及相关信息,我再写。追问

恩对最近发现ps确实不太好搞就尝试用宏。但是代码不熟悉,我现在的思路是:用一个双层的循环,第二个循环是针对第三列的值进行判断。初始定义一个Zhh并赋值为range("C2"),初始化一个R1=2。循环开始,往下找到值不等于Zhh的range,结束本层循环。获得行数R2。然后进行Rows(“R1,R2”).select,并且R1=R2,进行下面的操作。操作完毕之后继续循环,直到判断range("CX")的值为空,结束。请帮我实现前面提到的过程。

追答

'右击当前表标签,把下列代码贴到VBE窗口,按F5运行,会自动插入工作表,把C列不同的值分开。

Sub tt()
Dim r%, SttR%, stpR%, SttS$
[c2].CurrentRegion.Sort key1:=[c1], order1:=xlAscending, header:=xlYes
With ActiveSheet
SttR = 2: SttS = .[c2] '起始行2,起始筛选值c2
For r = 2 To .[c65536].End(3).Row
If .Cells(r + 1, 3).Value SttS Then
Worksheets.Add after:=Sheets(Worksheets.Count)
Sheets(Worksheets.Count).Name = SttS
Intersect(.UsedRange, .Rows(SttR & ":" & r)).Copy Worksheets(SttS).Range("a2")
SttR = r + 1
SttS = Cells(r + 1, 3).Value
End If
Next r
End With
End Sub

追问

恩,这段代码我用了,确实可以,但是只能循环第一遍,在生成第二个sheet的时候报错了.另外,
Worksheets.Add after:=Sheets(Worksheets.Count)Sheets(Worksheets.Count).Name = SttS
Intersect(.UsedRange, .Rows(SttR & ":" & r)).Copy Worksheets(SttS).Range("a2")
这三句话的意思是不是:根据遍历出来的行数进行sheet的生成,把名字改为stts,并且插入数据?我想问一下,如果想在新生成的表上第一行插入原来表的第一行怎么做?

追答

能走完第一遍循环,应该是程序没大问题。数据如何? 我写后测试无误,能正确分出三个表。

关于写入第一行标题,建议用一个数组写入,如
Worksheets(SttS).[a1:c1]=array("A","B","C")

追问

走完一个循环是指分出来第一张表,在分第二张表的时候报错了,"运行错误1004"。如果要分得话,应该能分出可能有二十几张表,调试的时候我看stts的值是空的,怎么可能。难道stts=cells(r+1,3).value没有赋值成功么。sttr的值是正确的,是第一张表的最后一个+1,134。

追答

样本邮件 chiefzjh@163.com, 速度

本回答被提问者采纳
参考技术D 在前

记录一举一动:PowerShell几行代码实现定期屏幕截屏

目录

监控电脑屏幕?

实现思路

1、通过windows脚本,一定时间间隔进行屏幕抓拍

2、脚本通过powershell语言实现

3、powershell为windows系统自带语言,可以无缝嵌入运行

4、所有抓拍的屏幕照片,按照时间排序,可以实现比较完整的用户操作监控。

PowerShell简介

如何使用PowerShell

监控屏幕脚本实现

 推荐阅读

【资源推荐】

渗透测试专用系统

渗透测试相关工具

CSDN官方学习推荐 ↓ ↓ ↓


监控电脑屏幕?

如何实现对电脑屏幕及其操作的监控?

对于屏幕的监控,一般都是针对windows操作系统

因为对于大部分Linux系统,都是无桌面状态,没有监控界面的必要。

提供一种监控靶机屏幕的解决方案及具体实现方法。

实现思路


1、通过windows脚本,一定时间间隔进行屏幕抓拍

2、脚本通过powershell语言实现

3、powershell为windows系统自带语言,可以无缝嵌入运行

4、所有抓拍的屏幕照片,按照时间排序,可以实现比较完整的用户操作监控。

实现效果如下gif:

PowerShell简介

如果是从知名度和用户的使用量来谈的话,PowerShell相较当下流行的一些面向对象的语言

来说应该是逊色太多太多了,但是,作为一款系统内置的脚本语言,和Linux里的Shell一样,

说其强大当然是不容置喙的。

WindowsPowerShell是一种命令行外壳程序和脚本环境,是运行在windows机器上实现系统

和应用程序管理自动化的命令行脚本环境,使命令行用户和脚本编写者可以利用.NET

Framework的强大功能。你可以把它看成是命令行提示符cmd.exe的扩充,不对,

应当是颠覆。powershell需要.NET环境的支持,同时支持.NET对象。

微软之所以将Powershell定位为Power,并不是夸大其词,因为它完全支持对象。

其可读性,易用性,可以位居当前所有shell之首。

如何使用PowerShell

  1)Win键+R,输入cmd,然后cmd会话框里再输入powershell

  2)Win键+R,输入powershell,即来到其会话框

  3)或是直接找到Windows PowerShell程序双击或是管理员打开

监控屏幕脚本实现

1、执行截屏的函数

#Define helper function that generates and saves screenshot
Function Get-Screenshot 
   $ScreenBounds = [Windows.Forms.SystemInformation]::VirtualScreen
   $ScreenshotObject = New-Object Drawing.Bitmap $ScreenBounds.Width, $ScreenBounds.Height
   $DrawingGraphics = [Drawing.Graphics]::FromImage($ScreenshotObject)
   $DrawingGraphics.CopyFromScreen( $ScreenBounds.Location, [Drawing.Point]::Empty, $ScreenBounds.Size)
   $DrawingGraphics.Dispose()
   $ScreenshotObject.Save($FilePath)
   $ScreenshotObject.Dispose()
 

2、将截屏图片按时间命令并按路径存储

Try 
        #load required assembly
        Add-Type -Assembly System.Windows.Forms            
        Do 
            #get the current time and build the filename from it
            $Time = (Get-Date)
            [String] $FileName = "$($Time.Month)"
            $FileName += '-'
            $FileName += "$($Time.Day)" 
            $FileName += '-'
            $FileName += "$($Time.Year)"
            $FileName += '-'
            $FileName += "$($Time.Hour)"
            $FileName += '-'
            $FileName += "$($Time.Minute)"
            $FileName += '-'
            $FileName += "$($Time.Second)"
            $FileName += '.png'
            #use join-path to add path to filename
            [String] $FilePath = (Join-Path $Path $FileName)
            #run screenshot function
            Get-Screenshot
            Write-Verbose "Saved screenshot to $FilePath. Sleeping for $Interval seconds"
            Start-Sleep -Seconds $Interval
        
        #note that this will run once regardless if the specified time as passed
        While ((Get-Date -Format HH:mm) -lt $EndTime)
    

3、脚本执行方法

#执行命令Get-TimedScreenshot#path:指定存储路径#Interval:截屏时间间隔,单位 秒#EndTime:脚本停止时间,如果不设置,会一直执行
PS C:\\> Get-TimedScreenshot -Path C:\\监控截屏 -Interval 1 -EndTime 19:00

推荐阅读

【资源推荐】

python实战

【pygame开发实战开发30例 完整源码】

【pygame游戏开发专栏,获取完整源码+教程】

以上是关于windows powershell实现excel的一些操作的代码的主要内容,如果未能解决你的问题,请参考以下文章

Powershell 比较 CSV文件

powershell 在powershell中将Exchange 2007公用文件夹静态设置为excel和excel电子表格

Excel RefreshAll 使用 powershell 脚本和凭据

PowerShell 查询 Excel记录

Office Web Apps 2013 修改Excel在线查看文件大小限制

通过 Powershell 插入 Excel 公式不起作用