我创建了一个字符串,其中包含由新换行符(\ n)分隔的ID。现在我想将此字符串粘贴到excel中,以便将所有ID粘贴到列中的不同单元格中。对于所有这些,我已经在$ finCode中填充了我已复制到剪贴板的字符串。现在我需要在Excel工作表中选择一个单元格,然后将整个字符串粘贴到该单元格上,以便所有ID都填充在同一列中excel的所有不同单元格中。 代码如下:
我将工作簿导入为:
$workbook = $xldoc.Workbooks.Open($testType)
我正在检查要处理的工作表:
$mysheet = $workbook.worksheets | where {$_.name -eq "JPT"}
我在函数中使用这个$ mysheet作为$ currentSheet
现在功能如下:
addtitle()
{
$finCode=""
$fRow=$intRow
for($intRow = $fRow ; $intRow -le $maxRow ; $intRow++){
$codeName = $currentCode
$fin = $codeName + "_" + $i + "`n"
$finCode=$finCode+$fin
$i= $i + 1
}
#
$currentSheet.Cells.Item($fRow,$currentCol).Value2 = $finCode
$clipboardData = $finCode
[System.Windows.Forms.Clipboard]::SetText($ClipboardData)
$currentSheet.Cells.Item($fRow,$currentCol).Select() | Out-Null
$currentSheet.Paste($finCode) | Out-Null
}
我收到此错误:您无法在空值表达式上调用方法。 请帮助我在列的不同单元格中填充excel中字符串的值。
答案 0 :(得分:0)
我可以建议复制/粘贴的替代方法吗?
我有一个生成大型Excel工作簿的脚本,之前我使用过复制/粘贴方法,因为逐个单元格写入速度很慢,但是当我尝试同时执行任何其他操作时遇到了问题。如果我同时在任何其他应用程序中使用复制/粘贴,它会弄乱我的输出。
我建议使用多维数组以及单元格范围的Value2。
以下是一个通用示例,您应该能够适应您的需求:
# Open Excel
$excel = New-Object -ComObject Excel.Application
# Make Excel visible
$excel.Visible = $true
# Open new workbook
$workbook = $excel.Workbooks.Add()
# Use first sheet
$worksheet = $workbook.Worksheets.Item(1)
# Set a base string for the example
$baseString = "RowTextExample"
# Set column number
$columnNum = 1
# Set starting row number
$startRowNum = 1
# Set ending row number
$endRowNum = 10
# Create an empty multi-dimensional array that with the first digit equating to the number of rows and second equating to the number of columns
$multiArray = New-Object 'object[,]' $endRowNum, 1
# Since rows start at 1 and an array index starts at 0, set a variable to track the array index that starts at 0
$arrayIndex = 0
# Start at first row and go to the end row adding appending the base string with the row number
for($rowNum = $startRowNum; $rowNum -le $endRowNum ; $rowNum++)
{
$multiArray[$arrayIndex, 0] = $baseString + "_$rowNum"
$arrayIndex++
}
# Set the range where the data will be placed; the size must match the size of the multi-dimensional array
# Example using A1 format instead of column number: $range = $worksheet.Range("A$($startRowNum):A$endRowNum")
$range = $worksheet.Range($worksheet.Cells($startRowNum, $columnNum), $worksheet.Cells($endRowNum, $columnNum))
# Write the multi-dimensional to the range
$range.Value2 = $multiArray