将相同的列标题名称添加到Excel书籍中的所有工作表

我有一个脚本,它将根据它在目录中find的文件的数量来创build工作表。 从那里它将工作表的名称更改为文件名。 在这个过程中,我正在尝试为每个表添加两个“ 主机名 ”和“ IP地址 ”的列标题值。 我可以通过单独激活每张纸来达到这个目的,但是由于纸张数量超过了20+,所以我变得相当麻烦,因此我试图find一个dynamic的方式来完成这个任务,而不pipe纸张的数量是多less。

这是我必须做的一切,直到列标题部分的代码:

$WorksheetCount = (Get-ChildItem $Path\Info*.txt).count $TabNames = Get-ChildItem $Path\Info*.txt $NewTabNames = Foreach ($file IN $TabNames.Name){$file.Substring(0,$file.Length-4)} $Break = 0 $excel = New-Object -ComObject Excel.Application $excel.Visible = $true $Workbook = $Excel.Workbooks.Add() $null = $Excel.Worksheets.Add($MissingType, $Excel.Worksheets.Item($Excel.Worksheets.Count), $WorksheetCount - $Excel.Worksheets.Count, $Excel.Worksheets.Item(1).Type) 1..$WorksheetCount Start-Sleep -s 1 ForEach ($Name In $NewTabNames){ $Break++ $Excel.Worksheets.Item($Break).Name = $Name } 

我试图插入我的代码,如下所示:

 ForEach ($Name In $NewTabNames){ $Break++ $Excel.Worksheets.Item($Break).Name = $Name $cells=$Name.Cells $cells.item(1,1)="Hostname" $cells.item(1,2)="IP Address" } 

当我尝试运行该脚本时,出现以下错误。

您无法在空值expression式上调用方法。

然后继续列出我已经放入的代码的每一行。我认为,因为我在操作过程中创build了一个variables,所以这是问题:

 $cells=$Name.Cells 

我想这也许是如果我在ForEach命令之前移动它,它会解决它,但我仍然收到同样的问题。 我已经通过各种方法,试图通过PowerShellselect范围内的工作表,但没有发现任何有用的。

希望对此有任何帮助。

这实际上是我在StackOverflow中的第一篇文章,我很兴奋终于可以帮忙了。 我对你的代码做了一些小的修改,似乎工作正常。 我注意到一些奇怪的行为,当我删除被分配的$ nullvariables,因为它似乎很奇怪,为什么它被完成,但删除后,我的Outlook应用程序自动打开每一次我运行脚本自动。 我发现你从那里得到代码的网站,看看是否有任何改变的原始代码。

我发现这个微软文档很有帮助,弄清楚了这一点。

这是我修改的

 ForEach ($Name In $NewTabNames){ $Break++ $Excel.Worksheets($Break).Name = $Name $Excel.Worksheets($Break).Cells(1,1).Font.Bold = $true $Excel.Worksheets($Break).Cells(1,1) = "Hostname" $Excel.Worksheets($Break).Cells(1,2).Font.Bold = $true $Excel.Worksheets($Break).Cells(1,2) = "IP Address" 

}