我通过指定
动态地将文本添加到行末尾的Excel电子表格中$excel = New-Object -Com Excel.Application
$excel.Visible = $True
$wb = $Excel.Workbooks.Add()
$ws = $wb.Worksheets.Add()
$lastRow = $ws.UsedRange.rows.count + 1
我可以添加数据,但现在我想格式化两个标题列
这是我的代码
$ws.Range("A$lastRow:B$lastRow").interior.colorindex = 11
$ws.Range("A$lastRow:B$lastRow").Font.colorindex = 6
这是输出
如何使用"计算机数量"?
格式化单元格答案 0 :(得分:1)
因此,您的问题的根源是PowerShell认为您正在确定您的变量,因为您有一个美元符号,后跟文本,然后是冒号。例如:
$global:LastRow
$script:LastRow
简单的解决方案?转义冒号,使其按字面意思而不是PowerShell,假设它是变量的一部分。简单回答:
$ws.Range("A$lastRow`:B$lastRow").interior.colorindex = 11
$ws.Range("A$lastRow`:B$lastRow").Font.colorindex = 6
但我认为这里有更好的答案,也许是一个学习机会。
假设您希望整个行具有相同的颜色方案,可以使用工作表的UsedRange
属性更简单,然后选择所需的行,并为其设置颜色。要设置一个示例,我启动了Excel,抓取了我的“我的文档”文件夹中的第一个Excel文档,获得了第一个空白行。所以这就是我的设置:
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $True
$Doc = gci "$env:userprofile\Documents\*.xlsx"|select -first 1 -ExpandProperty fullname
$WB = $Excel.workbooks.open($doc)
$LastRow = $Excel.ActiveSheet.UsedRange.Rows.Count + 1
然后我抓住了我的C:\驱动器的目录列表,只是要粘贴垃圾数据,所以我有额外的行可以使用并格式化标题行。我会将其转换为以制表符分隔的CSV,将其复制到剪贴板,然后将其粘贴到A列的第一个空白单元格中:
$Data = Get-ChildItem C:\
$Data | ConvertTo-Csv -NoTypeInformation -Delimiter "`t" | Clip
[void]$Excel.ActiveSheet.Rows.item($LastRow).cells.item(1).pastespecial()
好的,这只是为了设置所以我可以复制这个问题。实际的解决方案远比这简单得多。我们获取Activesheet
的{{1}}属性,选择它的UsedRange
属性,然后使用指定Rows
的{{1}}方法}。我们设置了该范围的单元格颜色和文本颜色,我们已经完成了。
Item()
在您的示例中,您可以轻松使用$LastRow
。
答案 1 :(得分:0)
我将A与$lastRow
$acell = "A" + $lastRow
$bcell = "B" + $lastRow
$ws.Range("$($acell):$($bcell)").interior.colorindex = 11
$ws.Range("$($acell):$($bcell)").Font.colorindex = 6
诀窍是围绕$acell
或$bcell
与$()