我有一堆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,在我的智慧结束时试图阻止这一点。任何帮助将非常感谢
答案 0 :(得分:5)
在SaveAs
调用之前使用显示警报语句:
$excel.DisplayAlerts = $false;
$excel.ActiveWorkbook.SaveAs($xlsFile);
答案 1 :(得分:0)
$excel.DisplayAlerts = $false
为我工作。