使用powershell写入excel时防止覆盖弹出窗口

ghg1uchk  于 2023-10-22  发布在  Shell
关注(0)|答案(3)|浏览(191)

我有一堆CSV文件,我正在将数据写入现有Excel文件的特定工作表中。我有下面的代码,它的工作原理,同时循环通过CSV文件和写入数据到现有的工作表
$CSV =“rpt.test1”,“rpt.test2”
foreach($csv in $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,并在我的智慧结束试图阻止这一点。任何帮助都将不胜感激

6tqwzwtp

6tqwzwtp1#

SaveAs调用之前使用display alerts语句:

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

yqyhoc1h2#

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

gfttwv5a

gfttwv5a3#

做一个if语句来检查文件是否存在,删除它,保存新的文件。

If(Test-Path $filepath)
{
    Remove-Item $filepath -verbose
 }
$workbook.SaveAS($filepath)

相关问题