乘法表Powershell

时间:2015-12-02 02:37:06

标签: excel powershell multiplication

我试图通过使用将在excel中打开的嵌套for循环来制作乘法表10x10。到目前为止,我有这个打开excel:

$excel = New-Object -COMObject Excel.Application
$excel.Visible = $true
$excel.Workbooks.Add()

然后显示表格:

for ($i = 1; $i -le 10; $i++) {
    for ($j = 1; $j -lt 10; $j++) {
        $total = $i * $j;
        Write-output $total 
    }
}

但是该表不会以10x10格式表显示,而是以一种方式显示在另一个之下。有人可以帮助我把它放在一起或给我一些提示如何让它工作?

1 个答案:

答案 0 :(得分:0)

  • 您的2个for循环应具有相同的退出条件(-le 10)

  • 每次使用Write-Output时,它都会向控制台写一个新行。

  • 您只需要Excel的第一行,您还需要更多 :)。

如果您想将表格输出到控制台,您可以这样做:

#for each row
for ($i = 1; $i -le 10; $i++) {
    #declare an array to hold the row values
    $row = @()
    #for each column
    for ($j = 1; $j -le 10; $j++)  {
        #add value to array
        $row += $i * $j
    }
    #output the array, joining cells with tabs (`t)
    $row -join "`t"
}

输出:

1   2   3   4   5   6   7   8   9   10
2   4   6   8   10  12  14  16  18  20
3   6   9   12  15  18  21  24  27  30
4   8   12  16  20  24  28  32  36  40
5   10  15  20  25  30  35  40  45  50
6   12  18  24  30  36  42  48  54  60
7   14  21  28  35  42  49  56  63  70
8   16  24  32  40  48  56  64  72  80
9   18  27  36  45  54  63  72  81  90
10  20  30  40  50  60  70  80  90  100

现在,如果您想将此输出到Excel,请按以下步骤操作:

#create Excel Application object
$excel = New-Object -ComObject Excel.Application

#make Excel window visible
$excel.Visible = $true

#create a new workbook
$book = $excel.Workbooks.Add()

#select the first sheet
$sheet = $book.Worksheets.Item(1)

#name it as you like
$sheet.Name = "Multiply"

#build the header row (bold)
for ($j = 1; $j -le 10; $j++)  {
    $sheet.Cells.Item(1, $j + 1).Value2 = $j
    $sheet.Cells.Item(1, $j + 1).Font.Bold = $true
}

#build the other rows
for ($i = 1; $i -le 10; $i++) {

    #"header" cell (bold)
    $sheet.Cells.Item($i + 1, 1).Value2 = $i
    $sheet.Cells.Item($i + 1, 1).Font.Bold = $true

    #other cells
    for ($j = 1; $j -le 10; $j++)  {
        $sheet.Cells.Item($i + 1, $j + 1).Value2 = $i * $j
    }
}

试试这个并告诉我你是否需要调整。我会对代码进行评论,以便您更好地理解。