使用powershell

时间:2016-06-22 22:13:45

标签: windows excel csv powershell dialog

我有一堆csv文件,我将数据写入现有excel文件的特定工作表中。我有以下代码,它在循环CSV文件并将数据写入现有工作表时起作用

$ CSVs =“rpt.test1”, “rpt.test2”

foreach($ CSV中的$ csv) {     $ csv_name = $ csv     echo“n - - - $sav_name - - - n”

foreach ($source in $Sources)
{
    $src = $source

    $inputCSV = "C:\Users\xxxx\Desktop\$src.$csv_name.csv"
    $Path = "C:\Users\xxxx\Desktop\$csv_name.xlsx"

    ### Create a new Excel Workbook with one empty sheet
    #$excel = New-Object -ComObject excel.application 
    #$workbook = $excel.Workbooks.Add(1)
    #$worksheet = $workbook.worksheets.Item(1)


    # Open the Excel document and pull in the 'Play' worksheet
    $excel = New-Object -Com Excel.Application
    $Workbook = $Excel.Workbooks.Open($Path) 
    $page = 'data'
    $worksheet = $Workbook.worksheets | where-object {$_.Name -eq $page}

    # Delete the current contents of the page
    $worksheet.Cells.Clear() | Out-Null

    ### Build the QueryTables.Add command
    ### QueryTables does the same as when clicking "Data » From Text" in Excel
    $TxtConnector = ("TEXT;" + $inputCSV)
    $Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1"))
    $query = $worksheet.QueryTables.item($Connector.name)

    ### Set the delimiter (, or ;) according to your regional settings
    $query.TextFileOtherDelimiter = $Excel.Application.International(5)

    ### Set the format to delimited and text for every column

    $query.TextFileParseType  = 1
    $query.TextFileColumnDataTypes = ,2 * $worksheet.Cells.Columns.Count
    $query.AdjustColumnWidth = 1

    ### Execute & delete the import query
    $query.Refresh()
    $query.Delete()

    $Workbook.SaveAs($Path,51)
    $excel.Quit()
}

由于它是一个现有的excel工作簿,因此每次重写文件时都会弹出一个弹出窗口。有超过15个CSV并且每次点击是恼人的

我试过了

$excel.DisplayAlerts = FALSE

我试过

$excel.CheckCompatibility = $False 

以及互联网上几乎所有可用的内容。我仍在学习powershell,在我的智慧结束时试图阻止这一点。任何帮助将非常感谢

2 个答案:

答案 0 :(得分:5)

SaveAs调用之前使用显示警报语句:

$excel.DisplayAlerts = $false;
$excel.ActiveWorkbook.SaveAs($xlsFile);

答案 1 :(得分:0)

$excel.DisplayAlerts = $false为我工作。