我有一堆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,并在我的智慧结束试图阻止这一点。任何帮助都将不胜感激
3条答案
按热度按时间6tqwzwtp1#
在
SaveAs
调用之前使用display alerts语句:yqyhoc1h2#
$excel.DisplayAlerts = $false
为我工作。gfttwv5a3#
做一个if语句来检查文件是否存在,删除它,保存新的文件。