PowerShell Excel报告脚本异常错误
我对powershell有一个奇怪的问题。我还有其他脚本类似于在脚本中多次使用的行上抛出错误的脚本 我正在使用PowerShell Excel报告脚本异常错误,excel,powershell,Excel,Powershell,我对powershell有一个奇怪的问题。我还有其他脚本类似于在脚本中多次使用的行上抛出错误的脚本 我正在使用get content获取CSV文件。然后我开始解析数据,只选择某些列并将它们输出到excel。这里是我的一个问题发生的地方 这是非常不一致的,但在通过csv进行解析的某个时间点,我得到了这个错误 异常设置“Item”:“被调用方拒绝了调用。(来自HRESULT的异常:0x80010001(RPC_E_Call_rejected))” 在这一行上,用于将数据输出到excel中的特定列和行
get content
获取CSV文件。然后我开始解析数据,只选择某些列并将它们输出到excel。这里是我的一个问题发生的地方
这是非常不一致的,但在通过csv进行解析的某个时间点,我得到了这个错误
异常设置“Item”:“被调用方拒绝了调用。(来自HRESULT的异常:0x80010001(RPC_E_Call_rejected))”
在这一行上,用于将数据输出到excel中的特定列和行
$excel.Cells.Item我不会使用select或activate,而是为每个工作表创建对象,并在各个工作表上调用Cells.Item,而不是整个工作簿。
因此,首先执行创建第一张工作表的工作表对象的$Sheet1=$WorkBook.Worksheets.Item(1)
。然后使用$sheet1.Cells.item($row,$col)=$item
关于为什么不使用选择或激活,有很多来源。这里有一个:
您不应该使用它的最大原因是因为性能,而且主要是因为它不是必需的。我不会使用“选择”或“激活”,而是为每个工作表创建对象,并在单个工作表而不是整个工作簿上调用cells.item。
因此,首先执行创建第一张工作表的工作表对象的$Sheet1=$WorkBook.Worksheets.Item(1)
。然后使用$sheet1.Cells.item($row,$col)=$item
关于为什么不使用选择或激活,有很多来源。这里有一个:
您不应该使用它的最大原因是因为性能,而且主要是因为它不是必需的。我不会使用“选择”或“激活”,而是为每个工作表创建对象,并在单个工作表而不是整个工作簿上调用cells.item。
因此,首先执行创建第一张工作表的工作表对象的$Sheet1=$WorkBook.Worksheets.Item(1)
。然后使用$sheet1.Cells.item($row,$col)=$item
关于为什么不使用选择或激活,有很多来源。这里有一个:
您不应该使用它的最大原因是因为性能,而且主要是因为它不是必需的。我不会使用“选择”或“激活”,而是为每个工作表创建对象,并在单个工作表而不是整个工作簿上调用cells.item。
因此,首先执行创建第一张工作表的工作表对象的$Sheet1=$WorkBook.Worksheets.Item(1)
。然后使用$sheet1.Cells.item($row,$col)=$item
关于为什么不使用选择或激活,有很多来源。这里有一个:
您不应该使用它的最大原因是因为性能,而且主要是因为它不是必需的。我发现我的问题是:
在脚本中,我打开工作簿,检查单元格中的日期,而不是将该日期与当前日期进行比较。一旦我得到了差异,我现在知道我必须循环我的报告并关闭工作簿多少次。然后,我开始编写一个批处理脚本,它收集了过去15天的大量数据,然后使用(开关)进行处理。一旦我有了数据,我会再次打开excel,开始我的报告
问题是关闭和重新打开excel之间的时间,在完全关闭之前,我将很快地重新打开同一工作簿。因此,在解析我的数据时,工作簿将变得“可用”,并中断我的脚本,抛出这些错误
在第二次打开excel之前,我通过放置一个开始睡眠-第20秒
来解决这个问题,但还没有给我任何问题
编辑:我已经正确地修复了我对对象的使用。此外,我已将代码调整为只打开excel一次,而不是我一直在做的打开-关闭-打开-关闭操作。我发现了我的问题所在:
在脚本中,我打开工作簿,检查单元格中的日期,而不是将该日期与当前日期进行比较。一旦我得到了差异,我现在知道我必须循环我的报告并关闭工作簿多少次。然后,我开始编写一个批处理脚本,它收集了过去15天的大量数据,然后使用(开关)进行处理。一旦我有了数据,我会再次打开excel,开始我的报告
问题是关闭和重新打开excel之间的时间,在完全关闭之前,我将很快地重新打开同一工作簿。因此,在解析我的数据时,工作簿将变得“可用”,并中断我的脚本,抛出这些错误
在第二次打开excel之前,我通过放置一个开始睡眠-第20秒
来解决这个问题,但还没有给我任何问题
编辑:我已经正确地修复了我对对象的使用。此外,我已将代码调整为只打开excel一次,而不是我一直在做的打开-关闭-打开-关闭操作。我发现了我的问题所在:
在脚本中,我打开工作簿,检查单元格中的日期,而不是将该日期与当前日期进行比较。一旦我得到了差异,我现在知道我必须循环我的报告并关闭工作簿多少次。然后,我开始编写一个批处理脚本,它收集了过去15天的大量数据,然后使用(开关)进行处理。一旦我有了数据,我会再次打开excel,开始我的报告
问题是关闭和重新打开excel之间的时间,在完全关闭之前,我将很快地重新打开同一工作簿。因此,在解析我的数据时,工作簿将变得“可用”,并中断我的脚本,抛出这些错误
在第二次打开excel之前,我通过放置一个开始睡眠-第20秒
来解决这个问题,但还没有给我任何问题
编辑:我已经正确地修复了我对对象的使用。A.
#Create an instance of Excel
$excel = New-Object -comobject Excel.Application
#declaring sheet names
$sheetName = "some sheet name"
#open Excel file
[string]$file = "C:\Users\Desktop\excel-file.xlsx"
$workBook = $excel.Workbooks.open($file)
$workBook.WorkSheets.Item($sheetName).activate()
$excel.Visible = $true
$excel.displayAlerts = $false
#Declaring variables
$i = 0
$rowNumber = 2
$rowMonth = 2786
$data1 = Get-Content $file1
foreach($row in $data1){
if($row){
$line = $row.Split(",")
$i++
#reset back to the first column once there is no more data for that row
$column = 1
$columnMonth = 7
$dataColumn = 0
if($i -ge 1){
foreach($item in $line){
$dataColumn++
if($dataColumn -eq 1 -or $dataColumn -eq 2 -or $dataColumn -eq 5 -or $dataColumn -eq 7){
$excel.Cells.Item($rowNumber, $column) = "$item"
$excel.Cells.Item($rowMonth, $columnMonth) = "$item"
$column++
$columnMonth++
}#endif
}#end foreach
$rowNumber++
$rowMonth++
}#end if $i
}#end if $row
}#end foreach