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



我希望将大型 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

预期成果

批次 1.xlsx

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

批次2.xlsx

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

批次3.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:UsersadminDesktopraxMasterin.xlsx")
$worksheet = $workbook.sheets.item("Sheet1") 
$worksheet.Range("$meto","$nom1").EntireRow.copy()
$wb2=$excel.workbooks.open("C:UsersadminDesktopraxout.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(开发的很棒的模块。导入-Excel

下面的代码将解决您的问题。

$r=@()
$t=$C=1
Import-Excel -Path C:Temptest.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:Temptest_$t.xlsx
#reset values
$r=@()
$c=1
$t++
}
else{
#increment row count
$c++
}
}
#save remaining rows
$r|Export-Excel -Path C:Temptest_$t.xlsx

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

最新更新