Excel使用powershell

时间:2018-01-20 03:00:25

标签: excel excel-vba powershell vba

我有以下csv文件,我想导入到excel并使用powershell为子项添加行分组。我能够打开文件并格式化单元格。不确定如何添加行分组。

数据

name,,
one,,
,value1,value2
,value3 ,value4
two,,
,value4,sevalue4
,value5,sevalue5
,value6,sevalue6
,value7,sevalue7
three,,
,value8,sevalue8
,value9,sevalue9
,value10,sevalue10
,value11,sevalue11

我想在excel中这样转换。

enter image description here

以下是我在excel中打开它的代码。

$a = New-Object -comobject Excel.Application
$a.visible = $True 

$b = $a.Workbooks.Open("C:\shared\c1.csv")

$c = $b.Worksheets.Item(1)
$d = $c.Cells(1,1)
$d.Interior.ColorIndex = 19
$d.Font.ColorIndex = 11
$d.Font.Bold = $True

$b.Save("C:\shared\c1.xlsx")

如何为此数据添加行分组?

由于 SR

2 个答案:

答案 0 :(得分:2)

逻辑应用:

A列中的值为空白的所有连续行分组

在下面的代码中,我打开了一个CSV文件,根据您共享的数据进行了所需的分组并保存。在保存时,由于行分组,我无法以csv格式保存它。所以,我不得不将格式更改为普通工作簿。但是,它有效。

<强>代码

$objExl = New-Object -ComObject Excel.Application
$objExl.visible = $true
$objExl.DisplayAlerts = $false
$strPath = "C:\Users\gurmansingh\Documents\a.csv"    #Enter the path of csv
$objBook = $objExl.Workbooks.open($strPath)
$objSheet = $objBook.Worksheets.item(1)
$intRowCount = $objSheet.usedRange.Rows.Count
for($i=1; $i -le $intRowCount; $i++)
{
    if($objSheet.Cells.Item($i,1).text -like "")
    {
        $startRow = $i
        for($j=$i+1; $j -le $intRowCount; $j++)
        {
            if($objSheet.cells.Item($j,1).text -ne "" -or $j -eq $intRowCount)
            {
                $endRow = $j-1
                if($j -eq $intRowCount)
                {
                    $endRow = $j
                }
                break
            }
        }
        $str = "A"+$startRow+":A"+$endRow
        $objSheet.Range($str).Rows.Group()
        $i=$j
    }
}
$objBook.SaveAs("C:\Users\gurmansingh\Documents\b",51)        #saving in a different format.
$objBook.Close()
$objExl.Quit()

<强>之前:

a.csv

enter image description here

运行代码后的输出:

b.xlsx

enter image description here

enter image description here

答案 1 :(得分:0)

此外,请查看使用我的Excel PowerShell模块有多么容易。

Install-Module ImportExcel

https://github.com/dfinke/ImportExcel/issues/556#issuecomment-469897886