将相同列标题名称添加到Excel工作簿

时间:2016-12-02 20:00:24

标签: excel powershell

我有一个脚本,它将根据在目录中找到的文件数创建工作表。从那里它将工作表的名称更改为文件名。在此过程中,我尝试向每个工作表添加两个列标题值“主机名”和“ IP地址”。我可以通过单独激活每张纸来实现这一点,但随着纸张数量超过20倍而变得相当麻烦,因此我试图找到一种动态的方式来做到这一点,无论存在多少张纸。

这是我必须完成列标题部分的所有代码:

$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"
}

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

  

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

然后它继续列出我放入的代码的每一行。我认为,因为我在操作期间创建了一个变量,这就是问题所在:

$cells=$Name.Cells

我想也许如果我在ForEach命令之前将它移动它会解决它但我仍然会收到同样的问题。我已经通过各种方式尝试通过powershell尝试在excel中选择工作表范围,但没有找到任何有用的信息。

对此有任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

这实际上是我在StackOverflow中的第一篇文章,我终于有所帮助,我感到非常兴奋。我对你的代码做了一些小的修改,似乎工作正常。当我删除了被分配的$ null变量时,我注意到了一些奇怪的行为,因为我觉得它为什么要完成,但是在删除该赋值后,我的Outlook应用程序每次运行脚本时都会自动打开。我找到了您获取代码的网站,以查看原始代码是否有任何更改。

我发现this Microsoft documentation非常有助于解决这个问题。

This is what I modified

Error:Execution failed for task ':app:mergeDebugResources'.
> [string/google_api_key] F:\Android Workspace\FoxindTracker\app\src\main\res\values\strings.xml    [string/google_api_key] F:\Android Workspace\FoxindTracker\app\build\generated\res\google-services\debug\values\values.xml: Error: Duplicate resources

}