从Powershell自动格式化.csv文件

时间:2018-06-20 12:23:04

标签: excel powershell csv formatting export

我有一个Powershell脚本,可以将某些用户的信息从Active Directory导出到.csv文件。我想通过Excel将格式应用于此数据。

有没有办法使Powershell创建的文件是一个可格式化的Excel文件,而两个则自动格式化(加粗​​/带下划线的列,调整列宽以适合所有数据等)而无需有用户干预吗?也许将其附加到某种模板上?

此文件的目的是供最终用户下载。有点像用户目录。用户可以走到网络驱动器的位置,并获取每周更新的员工列表以及有关他们的信息(部门,电话号码等),然后打印出来。理想情况下,这将在最终用户方面不做任何工作。另外,我也可以每周一次格式化此列表。但是,如果有更好的方法,那我就会不知所措。

1 个答案:

答案 0 :(得分:0)

此问题已解决(在我的评论中感谢StefTheo和BenH)。我最终使用了Powershell的Import-Excel模块。它就像一种魅力,工作起来相对简单。实际上我有点不高兴,因为它功能强大并且可以做很多事情,所以只能用于做非常简单的事情!

您可以找到Import-Excel here.

作为参考,这是我使用的代码。此代码进入Active Directory,并拉出列出了“部门”的所有用户(这对我来说是必需的,因为有未列出部门的admin / test用户,我想忽略他们)。它获取其显示名称,标题,部门,办公室,分机号和电子邮件,并将其导出到Excel文件。然后,我使用Import-Excel对该Excel文件进​​行样式设置。

$excel=Get-ADUser -Filter {(Department -like '*')} -Properties DisplayName, Title, Department, Office, OfficePhone, EmailAddress | select DisplayName, Title, Department, Office, OfficePhone, EmailAddress | Sort-Object "DisplayName" | Export-Excel ("\\w2kapps\shared\EmployeeList.XLSX" ) -WorksheetName "Users From Directory" -AutoSize -FreezeTopRow -PassThru
$excel.Workbook.Worksheets[1].Row(1).style.font.bold = $true
$BorderBottom = "Thick"
$BorderColor = "Black"
Set-Format -Address $excel.Workbook.Worksheets[1].Cells["A:F"]    -BorderBottom $BorderBottom -BorderColor $BorderColor
$excel.Save() ; $excel.Dispose()