arrays - 数组到 Excel 范围仅给出数组的第一个元素

标签 arrays excel powershell

我创建了以下函数,它将数组的值导出到 Excel,但它只导出第一个元素。

Function Export_Excel ($Array,$Column,$Sheet) {
  [System.Threading.Thread]::CurrentThread.CurrentCulture = "en-US"
  [System.Threading.Thread]::CurrentThread.CurrentUICulture = "en-US"

  $Global:sheet = $Global:wkbk.WorkSheets.Item("$Sheet")
  $intRow = 3

  $LastRow = $Array.count + 2
  $Range = "$Column" + $intRow +":$Column" + "$LastRow"

  $RangeSet = $Global:sheet.Range("$Range")
  $RangeSet.Value2 = $Array

  [gc]::collect()
  [gc]::WaitForPendingFinalizers() 
  [System.Threading.Thread]::CurrentThread.CurrentCulture = $Global:OldCulture
  [System.Threading.Thread]::CurrentThread.CurrentUICulture = $Global:OldUICulture
}

我的数组是用 $Array+=$ValueForArray 生成的.

当我执行

Export_Excel $Array "B" "Sheet1"

它只为数组的整个长度导出每个单元格中的第一个元素。谁能看到我做错了什么?

最佳答案

这只是一个字符串数组吗?如果是这样,这可以简单得多。将每个字符串转换为一个对象,将对象数组转换为没有类型信息的 CSV,并使其以制表符分隔,跳过标题行,复制到剪贴板,粘贴到您希望它向下流动的任何位置。如果你真的想把它作为一个函数,你可以这样做:

Function Export_Excel ($Array,[String]$Column,[String]$Sheet) {
    $ColNum = ([int][char]$Column.ToUpper()) - 64
    $Array | Select @{n='Header';e={$_}} | ConvertTo-Csv -NoTypeInformation -Delimiter "`t" | Select -Skip 1 | clip
    [void]$Wkbk.WorkSheets.Item("Sheet1").Columns.Item($ColNum).Cells.Item(3).PasteSpecial()
}

哦,对了,我也将列字母转换为数字等价物。所以,为了测试这个......
Function Export_Excel ($Array,[String]$Column,[String]$Sheet) {
    $ColNum = ([int][char]$Column.ToUpper()) - 64
    $Array | Select @{n='Header';e={$_}} | ConvertTo-Csv -NoTypeInformation -Delimiter "`t" | Select -Skip 1 | clip
    [void]$Wkbk.WorkSheets.Item("Sheet1").Columns.Item($ColNum).Cells.Item(3).PasteSpecial()
}

$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $True
$Wkbk = $Excel.Workbooks.Add()

$Fruit = @("Apple","Orange","Banana")

Export_Excel $Fruit 'f' 'Sheet1'

结果:Excel 打开,创建了一个空白工作簿,然后用单词 Apple 填充单元格 F3,使用单词 Orange 填充单元格 F4,使用单词 Banana 填充单元格 F5。我很确定那是你的意图。
enter image description here

关于arrays - 数组到 Excel 范围仅给出数组的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30345660/

相关文章:

Java 数组移位引用

Java:将数组列表转换为带有添加元素的数组

debugging - VBA 不接受我的方法调用并给出编译错误 : Syntax error

powershell - PowerShell Skype for Business服务器端对变量的过滤

javascript - 使数组扁平化,了解解决方案

Excel 图表 x 轴显示连续数字,而不是实际值

javascript - 将多个excel文件转换为json

powershell - Invoke-Webrequest 响应的编码

powershell - TFS Powershell cmdlet 在 ISE 中不起作用

java - 将数组添加到 ArrayList