通过 powershell 按用户定义的行将大型 excel 文件拆分为多个较小的文件

Split large excel file to multiple smaller file by user defined rows through powershell

我希望将大型 excel 文件拆分为多个 excel 文件

我的样本excel文件

Name Value value2
abc1  10    100
abc2  20    200
abc3  30    300
abc4  40    400
abc5  50    500
abc6  60    600
abc7  70    700
abc8  80    800

预期结果

Batch1.xlsx

Name Value Value2
abc1 10    100
abc2 20    200
abc3 30    300

Batch2.xlsx

Name Value Value2
abc4 40    400
abc5 50    500
abc6 60    600

Batch3.xlsx

Name Value Value2
abc7 70    700
abc8 80    800

Myscript 出现循环..作为初学者寻求帮助..

示例:用户选择数据拆分为3行。,如果输入文件有8行数据。,file3.xlsx可以保留剩余的2行。

$nom = Read-Host 'Enter number of rows of data want to be in a file'

$nom = [int]$nom + [int]1

$nom1 = 'A'+ $nom

$nxc = 100

$meto = 'A1'



For ($nom; $nom -le $nxc) {
$excel = New-Object -ComObject Excel.Application
$excel.visible = $true
$workbook = $excel.workbooks.open("C:\Users\admin\Desktop\rax\Master\in.xlsx")
$worksheet = $workbook.sheets.item("Sheet1") 
$worksheet.Range("$meto","$nom1").EntireRow.copy()

$wb2=$excel.workbooks.open("C:\Users\admin\Desktop\rax\out.xlsx")
$targetRange=$wb2.Worksheets.Item('Sheet1').Range("A1").EntireRow
$wb2.Worksheets.Item('Sheet1').Activate()
$targetRange.PasteSpecial(-4163)
$meto = $wb2.Worksheets.Item('Sheet1').UsedRange.Rows.Count
$wb2.RefreshAll()
$wb2.Save() 
$workbook.Worksheets.Item('Sheet1').Activate()
$met = $workbook.Worksheets.Item('Sheet1').UsedRange.Rows.Count
$nxc = $met

$meto = [int]$meto + [int]1


$nom = [int]$meto - [int]1
$nom = [int]$nom + [int]$nom
$nom
$excel.Quit()

} 

您可以利用 Doug finke . Import-Excel

开发的一个很棒的模块

下面的代码可以解决你的问题。

$r=@()
$t=$C=1
Import-Excel -Path C:\Temp\test.xlsx|Foreach-Object -Process {
    #Append rows in an array
    $r += $_

    #Save in a new excel when count reaches 3
    if($C -eq 3){
        $r | Export-Excel -Path C:\Temp\test_$t.xlsx

        #reset values
        $r=@()
        $c=1
       $t++
    }
    else{
        #increment row count
        $c++
    }
}

#save remaining rows
$r|Export-Excel -Path C:\Temp\test_$t.xlsx

您可以相应地重命名变量。