导出为CSV而不是XLS文件

时间:2015-05-22 18:36:43

标签: excel powershell csv

我有一个脚本可以很好地将所有内容放入电子表格中。问题是,我需要将其导出为csv文件。对于将导出csv函数放在脚本中的位置,所有foreach循环在这里完全令人困惑。如果有人可以告诉我如何将字段变成csv文件,我将不胜感激。

$date = 0
$date = get-date -format "yyyy-MMM-dd-hhmm"
$date

#New Excel Application
$Excel = New-Object -Com Excel.Application
$Excel.visible = $False

# Create 1 worksheets
$Excel = $Excel.Workbooks.Add()

# Assign each worksheet to a variable and
# name the worksheet.
$Sheet1 = $Excel.Worksheets.Item(1)
$Sheet1.Name = "HH_SERVERS"

#Create Heading for General Sheet
$Sheet1.Cells.Item(1, 1) = "Machine_Name"
$Sheet1.Cells.Item(1, 2) = "OS"
$Sheet1.Cells.Item(1, 3) = "Software"
$Sheet1.Cells.Item(1, 4) = "Vendor"
$Sheet1.Cells.Item(1, 5) = "Version"

$colSheets = ($Sheet1)
foreach ($colorItem in $colSheets)
{
    $intRow = 2
    $intRowDisk = 2
    $intRowSoft = 2
    $intRowNet = 2
    $WorkBook = $colorItem.UsedRange
    $WorkBook.Interior.ColorIndex = 20
    $WorkBook.Font.ColorIndex = 11
    $WorkBook.Font.Bold = $True
}

#Auto Fit all sheets in the Workbook
foreach ($colorItem in $colSheets)
{
    $WorkBook = $colorItem.UsedRange
    $WorkBook.EntireColumn.AutoFit()
    clear
}

$Servers = get-content "c:\temp\HH_Servers.txt"
foreach ($Server in $Servers)
{
    $GenItems2 = gwmi Win32_OperatingSystem -Comp $Server
    $Software = gwmi Win32_Product -Comp $Server 

    # Populate General Sheet(1) with information
    foreach ($objItem in $GenItems2)
    {
        $Sheet1.Cells.Item($intRow, 2) = $objItem.Caption
    }

    #Populate Software Sheet

    foreach ($objItem in $Software)
    {
        $Sheet1.Cells.Item($intRowSoft, 1) = $Server
        $Sheet1.Cells.Item($intRowSoft, 3) = $objItem.Name
        $Sheet1.Cells.Item($intRowSoft, 4) = $objItem.Vendor
        $Sheet1.Cells.Item($intRowSoft, 5) = $objItem.Version
        $intRowSoft = $intRowSoft + 1
    }
}

$outputfile = "c:\temp\" + $date.toString() + "-HH_Server_Software"
$Excel.SaveAs($outputfile)
$Excel.Close()

Write-Host "*******************************" -ForegroundColor Green
Write-Host "The Report has been completed." -ForeGroundColor Green
Write-Host "*******************************" -ForegroundColor Green
# ========================================================================
# END of Script
# ================== 

1 个答案:

答案 0 :(得分:1)

您无法将整个工作簿保存为CSV格式。您需要保存单个工作表。 CSV的文件格式值为6(不记得我发现的地方):

$xlCSV = 6      
$outputfile = "c:\temp\" + $date.toString() + "-HH_Server_Software.csv"
$Sheet1.SaveAs($outputfile, $xlCSV)

(使用Excel 2013在Windows 7上测试。)

感谢@Matt发表评论,其中包含指向XLFileFormat Enumerations的链接。