亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > PowerShell > 正文

PowerShell操作Excel、CSV詳細介紹

2020-10-29 20:59:34
字體:
供稿:網(wǎng)友

Powershell針對Excel的一些簡單操作

  稍微高級點的語言都會涉及到對COM對象的操作,作為微軟自己進化的腳本語言,powershell有這個功能一點不稀奇,首先它使用 .NET Framework 提供的強大類庫,很多特性和C#相似;其次,雖然作為腳本但它面向?qū)ο蟆J褂胮owershell來管理WMI和COM更簡單。

  用微軟官方的話概括powershell就是:

  Windows PowerShell™ 是一種基于任務(wù)的命令行 shell 和腳本語言,專門用于管理系統(tǒng)。 Windows PowerShell™ 構(gòu)建于 .NET Framework 之上,能夠幫助 IT 專業(yè)人員和高級用戶控制和自動管理 Windows 操作系統(tǒng)以及在 Windows 上運行的應(yīng)用程序。

   內(nèi)置 Windows PowerShell 命令(稱為 cmdlet)可用于通過命令行管理企業(yè)中的計算機。使用 Windows PowerShell™ Provider,您可以像訪問文件系統(tǒng)那樣輕松地訪問數(shù)據(jù)存儲,如注冊表和證書存儲。 此外,Windows PowerShell™ 還具有一個功能豐富的表達式分析程序和一種經(jīng)過充分開發(fā)的腳本語言。

  下面介紹powershell對excel的簡單操作。

  首先,我執(zhí)行一條命令來獲取系統(tǒng)當前正在運行的所有進程:

Get-Process cmdlet顯示當前本地進程運行狀態(tài),包括處于打開狀態(tài)的句柄數(shù)量、各種內(nèi)存占用視圖以及 CPU 使用率的快照。powershell和Linux shell一個很大的不同點就是大小寫不敏感,無論是系統(tǒng)函數(shù)還是命令。這點可以減少犯錯的概率。

  您可能疑惑為什么講這個?對于系統(tǒng)管理員來說,冗長的數(shù)據(jù)背后隱藏著大量細節(jié),get-process是獲取本地進程運行情況,當然加上-computername參數(shù)后可以訪問遠程計算機,但目前這個對于網(wǎng)絡(luò)管理員來說猶如海市蜃樓,所以不得不使用windows WMI和 Win32_Process WMI 類來監(jiān)視遠程系統(tǒng)并以實用方式顯示信息。如果認為 Get-Process 的輸出內(nèi)容非常豐富,請再仔細看看 Win32_Process 的輸出:

 很明顯,這個輸出很詳細,但是可讀性不強,管理員需要的是易于閱讀的內(nèi)存占用量報告??梢赞D(zhuǎn)用Excel實現(xiàn)自動操作。

 自動化 Excel 有多難?實際上非常簡單,因為 Microsoft 已創(chuàng)建了專門用于處理 Excel 的自動化模型。程序 ID 是 Excel.Application,它是一個 COM 對象。創(chuàng)建 Excel.Application 對象的實例時,Excel 會默認啟動并運行,只是您看不見它。但是,可使用 visible 屬性讓 Excel 顯示出來。

以下代碼顯示了如何創(chuàng)建 Excel.Application 對象、查詢 visible 屬性的狀態(tài),然后將 visible 屬性設(shè)為 true:

復(fù)制代碼 代碼如下:

PS > $excel = New-Object -ComObject Excel.Application   ==>創(chuàng)建一個excel應(yīng)用的COM對象
PS > $excel.Visible    ==>默認新建的excel視圖不顯示,即沒有打開
False
PS > $excel.Visible = $true    ==>看到下面的界面

  然后,您會看到一個非常奇怪的 Excel 視圖,它看起來就像 Excel 應(yīng)用程序的一個外殼(如下圖)。沒有工作簿、沒有電子表格,―個是光禿禿的 Excel。

當然,這個肯定是無法使用的,但是它是建立工作簿的前提,它是存放工作簿的容器?,F(xiàn)在我們需要將一個工作簿添加到應(yīng)用程序中。為此,需要借助工作簿對象的 add 方法。工作簿對象是從主 Excel.Application 對象進行訪問的,正如您看到的,我們將工作簿對象存儲在一個名為 $workbook 的變量中:

復(fù)制代碼 代碼如下:

$workbook = $excel.Workbooks.add()   ==>現(xiàn)在添加了一個空的工作簿

現(xiàn)在,需連接特定的電子表格。默認情況下,工作簿添加到 Excel 時,會向其中添加三個電子表格(sheet1,sheet2,sheeet3)。這些電子表格可通過數(shù)字進行標識。在以下代碼行中,連接第一個電子表格并將返回的電子表格對象存儲在名為 $sheet 的變量中:

復(fù)制代碼 代碼如下:

$sheet = $workbook.worksheets.Item(1)   ==>表示我使用的是第一個sheet

現(xiàn)在我再運行一次$excel.Visible = $true來查看excel變成什么樣了(建好了工作簿并且選擇了sheet1):

現(xiàn)在,可將數(shù)據(jù)寫入該電子表格。Excel 電子表格中的信息存儲在單元格中。由于單元格位于電子表格之中,所以可使用 $sheet 變量中存儲的電子表格對象訪問特定的單元格。具體方法是使用指代電子表格中行和列的數(shù)字。在 Excel 電子表格中,行是數(shù)字而列是字母,這一點有些讓人迷惑。但使用自動化模型時,行和列均為數(shù)字。第一個數(shù)字是行,第二個數(shù)字是列。只需對特定單元格進行賦值即可寫入單元格:

復(fù)制代碼 代碼如下:

$sheet.cells.item(1,1) = "Test"   ==>我在第一個單元格填入“Test”

這時,您再運行$excel.Visible = $true,查看excel變成啥樣了:

嗯,意料之中,Excel 的一個不足是工作簿始終會創(chuàng)建三個電子表格,這有點浪費,因為我現(xiàn)在這個測試只需要第一個sheet。幸運的是,可利用自動化刪除多余的電子表格:使用工作表集合連接第三個電子表格并調(diào)用 delete 方法。執(zhí)行相同的操作刪除第二個電子表格: 

復(fù)制代碼 代碼如下:

$workbook.workSheets.item(3).delete()
$workbook.WorkSheets.item(2).delete()

   這樣只剩下sheet1了,接下來,重命名剩余的電子表格。這一點非常重要,因為如果決定使用 ActiveX 數(shù)據(jù)對象 (ADO) 來查詢 Excel 電子表格,將在連接字符串中使用此電子表格名稱。因此,要使代碼易讀且直觀,電子表格應(yīng)具有邏輯名稱。要重命名電子表格,只需向特定電子表格的 name 屬性賦一個值即可。以下代碼將第一個電子表格重命名為 "Processes": 
復(fù)制代碼 代碼如下:

$workbook.WorkSheets.item(1).Name = "Processes"

  現(xiàn)在,需連接重命名后的電子表格。使用工作表對象的 Item 方法并將電子表格的名稱指定給它: 
復(fù)制代碼 代碼如下:

$sheet = $workbook.WorkSheets.Item("Processes")

   這時我們再查看excel的樣子:

以上測試過程的代碼如下:

復(fù)制代碼 代碼如下:

$excel = New-Object -ComObject Excel.Application
#$excel.Visible = $true
$workbook = $excel.Workbooks.add()
$sheet = $workbook.worksheets.Item(1)
$sheet.cells.item(1,1) = "Test"
$workbook.workSheets.item(3).delete()
$workbook.WorkSheets.item(2).delete()
$workbook.WorkSheets.item(1).Name = "Processes"
$excel.Visible = $true

下面我們開始將process中的內(nèi)容移植到excel中。
 
  電子表格的第一行將包含標頭信息。將繪制邊框并使屬性名稱顯示為粗體。由于數(shù)據(jù)將從第二行開始,因此將值 2 賦給計數(shù)器變量 $x:

復(fù)制代碼 代碼如下:

$x=2

   接下來的四行代碼創(chuàng)建四個枚舉類型。枚舉類型用于告訴 Excel 允許將哪些值填入特定的選項類型。例如,xlLineStyle 枚舉用于確定所繪制線條的類型:雙線條、虛線等。MSDN 上詳細介紹了這些枚舉值。
為使代碼更易于閱讀,針對將使用的每個枚舉類型創(chuàng)建一個快捷別名。實際上,我們將把代表枚舉名稱的字符串轉(zhuǎn)換成 [type]?!?br />
復(fù)制代碼 代碼如下:

$lineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
$colorIndex = "microsoft.office.interop.excel.xlColorIndex" -as [type]
$borderWeight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
$chartType = "microsoft.office.interop.excel.xlChartType" -as [type]

  現(xiàn)在需格式化第一行。使字體為粗體,將線條定義為 xlDashDot,允許自動指定顏色,并將邊框?qū)挾仍O(shè)為中等粗細:
復(fù)制代碼 代碼如下:

for($b = 1 ; $b -le 2 ; $b++)
{
 $sheet.cells.item(1,$b).font.bold = $true
 $sheet.cells.item(1,$b).borders.LineStyle = $lineStyle::xlDashDot
 $sheet.cells.item(1,$b).borders.ColorIndex = $colorIndex::xlColorIndexAutomatic
 $sheet.cells.item(1,$b).borders.weight = $borderWeight::xlMedium
}

完成后,通過使用 item 方法選擇單元格并指定行和列的坐標,向第一行賦值。接下來,使用直接賦值寫入列標題:

復(fù)制代碼 代碼如下:

$sheet.cells.item(1,1) = "Name of Process"
$sheet.cells.item(1,2) = "Working Set Size"

  現(xiàn)在,需將 WMI 查詢產(chǎn)生的 $processes 變量中存儲的進程信息放入適當?shù)膯卧裰小J褂?foreach 語句遍歷進程信息集合。將變量 $process 定義為集合枚舉器(占位符),并選擇將名稱和 workingSetSize 屬性分別寫入第一列和第二列。$x 變量將在此發(fā)揮作用。從第二行開始,在遍歷進程集合的同時,遞增 $x 變量的值以便它始終指向集合中的當前行。通過以下代碼,即可對 $processes 進程信息集合中存儲的所有數(shù)據(jù)進行整理分類: 
復(fù)制代碼 代碼如下:

foreach($process in $processes)
{
 $sheet.cells.item($x, 1) = $process.name
 $sheet.cells.item($x,2) = $process.workingSetSize
 $x++
}

  填寫完 Excel 電子表格后,可以調(diào)整列的大小以使單元格與其中所存儲數(shù)據(jù)的尺寸相同。為此,可通過指定要使用的列坐標來創(chuàng)建一個范圍;但是,也可以只使用電子表格的 usedRange 屬性。創(chuàng)建完范圍對象后,選擇 EntireColumn 屬性并使用 AutoFit 方法調(diào)整列的大小。由于該方法始終會返回數(shù)據(jù),我將結(jié)果傳送給 Out-Null cmdlet。從而避免控制臺上布滿了雜亂無用的信息。下面是所用的代碼:
復(fù)制代碼 代碼如下:

$range = $sheet.usedRange
$range.EntireColumn.AutoFit() | out-null

  至此,已完成所有任務(wù)此時的電子表格具有所有進程的名稱和內(nèi)存工作集,相當不錯。來看看完成后的成果:

以上結(jié)果是我電腦里正在運行的進程。我只選擇了兩個字段顯示。

關(guān)于整個腳本的代碼,如下:

復(fù)制代碼 代碼如下:

$processes=Get-Process
$excel = New-Object -ComObject Excel.Application
#$excel.Visible = $true
$workbook = $excel.Workbooks.add()
$sheet = $workbook.worksheets.Item(1)
$workbook.Worksheets.item(3).delete()
$workbook.Worksheets.item(2).delete()

$workbook.Worksheets.item(1).name="Processes"
$sheet = $workbook.WorkSheets.Item("Processes")
$x = 2

$lineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
$colorIndex = "microsoft.office.interop.excel.xlColorIndex" -as [type]
$borderWeight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
$chartType = "microsoft.office.interop.excel.xlChartType" -as [type]

for($b = 1 ; $b -le 2 ; $b++)
{
 $sheet.cells.item(1,$b).font.bold = $true
 $sheet.cells.item(1,$b).borders.LineStyle = $lineStyle::xlDashDot
 $sheet.cells.item(1,$b).borders.ColorIndex = $colorIndex::xlColorIndexAutomatic
 $sheet.cells.item(1,$b).borders.weight = $borderWeight::xlMedium
}

$sheet.cells.item(1,1) = "Name of Process"
$sheet.cells.item(1,2) = "Working Set Size"

foreach($process in $processes)
{
 $sheet.cells.item($x, 1) = $process.name
 $sheet.cells.item($x,2) = $process.workingSet
 $x++
} #end foreach

$range = $sheet.usedRange
$range.EntireColumn.AutoFit() | out-null

關(guān)于powershell寫入excel的簡單知識先介紹到這,其實,在運行的過程的中您會發(fā)現(xiàn),進程中的每個字段填入excel的過程是非常緩慢的,因為它是一個cell一個cell填入的,而不是一下子拷貝到excel中的,這些將在之后的隨筆中介紹。

  備注:這篇隨筆是參考微軟官方的一片博客并加入自己的理解寫的,后續(xù)還將會簡單介紹powershell操作excel&CSV的其它應(yīng)用。

  如有錯誤,歡迎指正,謝謝!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
97超碰蝌蚪网人人做人人爽| 激情视频一区二区| 黄色网址视频在线观看| 日韩视频免费播放| 亚洲国产毛片aaaaa无费看| 国产毛片aaa| jizz免费观看| 夜夜嗨网站十八久久| 国产特级aaaaaa大片| 欧美性高清videossexo| 日本不卡一二三区黄网| 四虎视频在线精品免费网址| 秋霞午夜鲁丝一区二区| 成人精品国产免费网站| 国产精品美女久久久久久| 男女爱爱福利视频| 成人拍拍拍在线观看| 成人在线免费观看视频网站| 午夜影院在线免费观看| 一本久道久久久| 美女黄色网址| xxx在线免费观看| 亚洲国产一区二区三区在线播放| 久久青青草原一区二区| 欧美日韩亚洲一| 成人动漫视频在线观看完整版| 国产精品久久久久久无人区| 嫩草影院官网| 亚洲第一区色| 91丨porny丨对白| 午夜精彩视频在线观看不卡| 亚瑟一区二区三区四区| 嫩草国产精品入口| 亚洲精品狠狠操| 国产一区二区三区在线免费观看| 成人在线资源网址| 无码人妻一区二区三区精品视频| 国产精品一二三在| 中文字幕在线播放一区二区| 欧美一级淫片免费视频| 欧美老女人性开放| 污版视频在线观看| 国产精品日韩欧美| 性欧美18—19sex性高清| 久久久久久久久久久久久女国产乱| 日韩av免费网址| 福利电影在线| 免费在线观看黄| 精品国产乱码久久久久久夜甘婷婷| 久久精品国产sm调教网站演员| 97在线日本国产| 国产呦萝稀缺另类资源| 亚洲免费观看在线视频| 一本色道久久综合狠狠躁的推荐| 亚洲精品天堂网| 欧美激情一级欧美精品| 日韩高清dvd| 欧美大学生性色视频| 日韩中文字幕亚洲| 狠狠久久亚洲欧美专区| 久久国产视频网站| 免费黄色电影在线观看| 99精品国产99久久久久久白柏| 成人免费看片98| 青青青草原在线| 青青久草在线| 精品无人区乱码1区2区3区在线| 亚洲一区二区日韩| 日本欧美久久久久免费播放网| 超级黄的软件| 久久免费在线观看| 国模精品一区| 成人午夜剧场免费观看完整版| 欧美精品一区二区精品网| 国产精品一区二区3区| 自拍av在线| www·91·com| 亚洲成人电视网| 亚洲精品国产偷自在线观看| 波多野吉衣中文字幕| 国产精品国产亚洲精品看不卡| jizz视频播放器| 亚洲一区二区三区精品中文字幕| 亚洲三区在线观看无套内射| www欧美xxxx| 91久久久久久久久久久久| 国产午夜精品一区二区三区欧美| 国产欧美一区二区精品久导航| 日韩av一区二区三区在线| 最近高清中文在线字幕在线观看1| 中文字幕 亚洲视频| 免费的黄网站在线观看| www.视频在线.com| 亚洲精品电影院| gogogogo高清视频在线| 人妻91麻豆一区二区三区| 在线观看免费电影| 欧美熟妇激情一区二区三区| 青青草超碰在线| 亚洲制服少妇| 国产三区精品| 韩国一区二区在线观看| 麻豆网址在线观看| 免费观看久久av| 嫩草影院在线观看网站成人| 性高爱久久久久久久久| 在线日韩中文| 亚洲午夜精品一区二区三区| 91日韩视频在线观看| 国产精品第一页第二页第三页| 成人在线日韩| 日韩视频欧美视频| 91野花视频| 久久要要av| 国产精品婷婷午夜在线观看| 青青草原国产免费| 国产成人成网站在线播放青青| 欧美久久久久免费| 夜夜嗨av一区二区三区四区| 色网站国产精品| 亚洲天堂av免费在线观看| 国产精品伦理一区二区三区| 日本a级片在线观看| 国产日韩欧美中文| 精品人妻一区二区三区日产| 日韩精品在线播放| 一区二区三区动漫| 天天影院图片亚洲| 永久免费不卡在线观看黄网站| 日韩精品 欧美| 精品日韩免费| 最近中文字幕一区二区三区| 永久在线免费观看| 亚洲精彩视频| 三上悠亚亚洲一区| 国产精品久久久久久久久久齐齐| 九色综合国产一区二区三区| 92国产精品久久久久首页| 亚洲一区二区在线免费观看视频| 亚洲国产网址| 成人深夜视频在线观看| 91视频免费在线| 日韩一级片免费在线观看| 国产精品久久久久久久免费| 日韩电视剧免费观看网站| 日韩欧美国产亚洲| 亚洲视频色图| 国产精品第108页| 91免费国产视频网站| 深夜成人在线观看| 国产特级淫片高清视频| 国产精品一区二区中文字幕| caoporn国产一区二区| 亚洲女同性videos| 精品视频中文字幕| 亚洲妇女屁股眼交7| 日韩中文字幕在线一区| 国产人成一区二区三区影院| 777琪琪电影午夜理伦片| 日韩一区二区精品葵司在线| 久久青草视频| 欧美午夜激情在线| 国产精品专区一| 日韩精品在线视频观看| 久久伊人一区二区| www.五月天激情| 2021国产视频| 欧美永久精品| 免费观看在线综合| 欧美丰满高潮xxxx喷水动漫| 亚洲一区三区电影在线观看| 久久成人精品电影| 精品在线视频一区二区三区| 少妇按摩一区二区三区| 国产亚洲1区2区3区| 亚洲在线免费| jizz在线视频| 超碰97成人| 欧美成人中文字幕在线| 天堂va欧美va亚洲va老司机| 91亚洲精品国产| 鲁一鲁一鲁一鲁一色| 成人精品天堂一区二区三区| 欧美最猛黑人xxxx黑人猛交黄| 自拍日韩亚洲一区在线| 国产精品免费看一区二区三区| 国产日产久久高清欧美一区| 女人天堂网站| 毛片一区二区三区四区| 香蕉影视欧美成人| 一区二区三区产品免费精品久久75| 亚洲国产精品va在看黑人| 亚洲私拍视频| 国产xxx69麻豆国语对白| 一区二区欧美国产| 中文字幕人妻一区二区三区视频| 国产精品久久77777| 日韩中文在线中文网三级| 国产精品欧美一级免费| 亚洲人成网站777色婷婷| 第一页在线观看| 在线播放色视频| 在线观看日韩毛片| 欧美国产亚洲另类动漫| 亚洲午夜久久久久久久久红桃| 在线看黄网址| 免费亚洲一区二区| 欧美寡妇性猛交xxx免费| 久久久久综合| 9l视频白拍9色9l视频| 中文字幕日产av一二三区| 一区视频在线看| 日本欧美在线观看| wwwxxx色| 精品视频一二三| 国产特级黄色录像| 欧美一区二区三区视频免费播放| 免费观看的成年网址| 一级片视频免费| japanese日本护士撒尿| 久久7799| 性欧美69式xxxxx| 亚洲一二三区不卡| 日韩高清一级片| 日韩一级高清毛片| 亚色视频在线播放| 国产亚洲激情在线| 国产成人精品在线| 亚洲国产国产亚洲一二三| 欧美最猛黑人xxxxwww| 欧美日韩午夜剧场| 极品美女扒开粉嫩小泬| 最近中文字幕mv在线一区二区三区四区| 亚洲电影网站| 鲁丝一区鲁丝二区鲁丝三区| 日韩色在线观看| 麻豆视频免费在线观看| 欧美黄色大片在线观看| 欧美xoxoxo| 国产成人自拍偷拍| 国产av无码专区亚洲av麻豆| 美女精品视频在线| 亚洲精品久久久蜜桃动漫| 亚洲v精品v日韩v欧美v专区| 成人精品免费网站| 久久色.com| 97精品人妻一区二区三区| 日本在线视频一区二区三区| 亚洲综合激情小说| 国产精品一卡| 国产麻豆一区二区三区精品视频| 亚洲婷婷在线视频| 视色,视色影院,视色影库,视色网| av黄色免费| 亚洲国产成人不卡| 911久久香蕉国产线看观看| 永久免费未满蜜桃| 少妇无码av无码专区在线观看| 亚洲色图网站| 国产日韩av网站| 欧美精品日韩精品| 亚洲一区电影777| 亚洲一二在线观看| 蜜桃av一区| 日韩08精品| 91在线视频成人| 人妻一区二区三区免费| www.午夜色| 国产成人免费av在线| 欧美日韩精品不卡| 九九九热精品免费视频观看网站| 欧美激情精品久久久久久黑人| 2018av| 国产66精品久久久久999小说| 日韩日韩日韩日韩| 久久久噜噜噜久噜久久综合| 在线电影中文日韩| 国产精品传媒入口麻豆| 国产mv日韩mv欧美| 欧美一级视频| 一区三区二区视频| 九七电影韩国女主播在线观看| 欧美综合视频| 91精品黄色片免费大全| 国产一级在线免费观看| 国产三级中文字幕| 在线成人综合色一区| 国产精品日韩精品中文字幕| 日韩中文字幕久久久经典网| 狠狠爱在线视频一区| 欧美裸身视频免费观看| 日本成人免费网站| 在线成人性视频| 精品国产乱码久久久久久88av| 国产精品美女久久| 国产在线播放一区三区四| 亚洲欧美国产另类| 波多野结衣av一区二区全免费观看| av无码久久久久久不卡网站| 国产欧美一区二区三区在线| 欧洲av无码放荡人妇网站| 性网站在线免费观看| 人与动物性xxxx| 一卡二卡3卡四卡高清精品视频| 欧美一区二区三区久久精品| 亚洲一区精品视频在线观看| 成人在线高清视频| 久久人人爽人人| 免费日韩视频| 孩娇小videos精品| 自拍视频网站| 欧美男女性生活在线直播观看| 亚洲色婷婷一区二区三区| 999久久久免费精品国产| 亚洲国产精品一区二区www在线| 亚洲免费婷婷| 天天操天天干天天爱| 91精品福利在线| 欧美大电影免费观看| 精品成人一区二区三区四区| 精品国产亚洲一区二区三区在线| 美女精品在线观看| 97免费视频观看| 久久久久久久久久久久久久久久久久av| 国产123在线| 真实国产乱子伦对白视频| 久久午夜精品一区二区| 久久国产精品毛片|