批量自动行高列宽

  1. $files = Get-ChildItem "D:\work\guoxin\test"
  2. foreach($path in $files){
  3. $excel = New-Object -ComObject excel.application
  4. $excel.visible = $false
  5. $wb = $excel.Workbooks.open($path.fullname)
  6. foreach ($i in 1..8){
  7. $sht = $wb.Worksheets.Item($i)
  8. $range = $sht.UsedRange
  9. $range.EntireColumn.AutoFit() | Out-Null
  10. }
  11. $wb.save()
  12. $wb.close()
  13. $excel.quit()
  14. }
  • 第一个循环是遍历文件夹中的所有excel文件
  • 第二个循环是遍历excel文件中的子表,总共有8个表
  • 每循环一次就退出一次excel,当excel处于多个进程的时候会出现,RPC不可用的报错

批量调整两位小数

  1. $files = Get-ChildItem "D:\work\huang\save"
  2. foreach($path in $files) {
  3. $excel = New-Object -ComObject excel.application
  4. $excel.visible = $true
  5. $wb = $excel.Workbooks.open($path.fullname)
  6. $ws = $wb.WorkSheets.item(1)
  7. $ws.range("J:K").NumberFormat = "#,##0.00"
  8. $wb.save()
  9. $wb.close()
  10. $excel.quit()
  11. }

批量替换删除

  1. $files = Get-ChildItem "D:\chen\tocustomer\process"
  2. foreach($path in $files) {
  3. $excel = New-Object -ComObject excel.application
  4. $excel.visible = $true
  5. $wb = $excel.Workbooks.open($path.fullname)
  6. $ws = $wb.WorkSheets.item(1)
  7. $all = $ws.UsedRange
  8. $all.replace("#N/A", "-")
  9. $ws.range("I:M").NumberFormat = "#,##0.00"
  10. $ws.range("O:P").NumberFormat = "#,##0.00"
  11. $ws.range("R:S").NumberFormat = "#,##0.00"
  12. $ws.range("U:Y").NumberFormat = "#,##0.00"
  13. $ws.Columns(1).EntireColumn.Delete()
  14. $wb.save()
  15. $wb.close()
  16. $excel.quit()
  17. }

根据某列内容分割成多个文件

  1. $objExcel = New-Object -ComObject excel.application
  2. $objExcel.visible = $true
  3. $path = "D:\chen\my.xlsx"
  4. $workbook = $objExcel.workbooks.open($path)
  5. $ws=$workbook.WorkSheets.item(1)
  6. $alpha_list = @()
  7. $range = $ws.UsedRange
  8. $max_num = $range.Rows.Count
  9. foreach($i in 2..$max_num) {
  10. $alpha_list += $ws.cells.item($i, 1).value2
  11. }
  12. $alpha_list = $alpha_list | sort-object -unique
  13. echo $alpha_list
  14. foreach ($i in $alpha_list) {
  15. $range.EntireColumn.AutoFilter()
  16. $range.AutoFilter(1, $i)
  17. $fil_range = $ws.UsedRange
  18. $fil_range.copy()
  19. $wb_split = $objExcel.workbooks.add()
  20. $wb_split.activate()
  21. $ws_split = $wb_split.WorkSheets.item(1)
  22. $ws_split.Range("A1").PasteSpecial(-4104) | out-null
  23. $save_path = "D:\chen\za\split\MDC{0}.xlsx" -f $i
  24. $wb_split.saveas($save_path)
  25. $wb_split.close()
  26. $ws.activate()
  27. }
  28. $objExcel.Quit()

统计工作簿中所有工作表的行数

XML操作