Board logo

标题: [文件操作] 求Bat:删除excel中的某些行 [打印本页]

作者: 19219962414    时间: 2023-10-8 19:13     标题: 求Bat:删除excel中的某些行

各位大佬:想删除某个文件的某些行,具体规则为:文件(.xlsx)共2n行,想删除45n+16行,求大神们指导,感谢!
作者: Nsqs    时间: 2023-10-8 20:06

bat做不了
  1. #PowerShell
  2. $e=New-Object -ComObject Excel.Application
  3. $e.DisplayAlerts=0
  4. $wb=$e.Workbooks.Open("$PSScriptRoot\1.xlsx")
  5. $ws=$wb.Sheets('Sheet1')
  6. $n=100
  7. [void]$ws.Range("45:$($n+16)").Delete()
  8. $wb.Save()
  9. $e.Quit()
复制代码

作者: Five66    时间: 2023-10-9 00:38

不知是不是这样子
将代码保存为ansi编码的bat
先用excel打开想要删除的xls文件(只允许有一个xls文件被打开)
然后运行bat
运行完成后回到excel界面自行保存或另存或关闭文件
  1. @if (0)/*==(0)/* echo off
  2. set n=100
  3. set s=45
  4. set /a e=n+16
  5. cscript //nologo //e:jscript "%~f0" %n% %s% %e%
  6. echo 完成,请回到excel界面自行保存或另存或关闭&echo.&pause&exit/b
  7. rem */@end
  8. var ess=new ActiveXObject("excel.sheet");
  9. ess.Application.Visible=false;
  10. ess.Application.ScreenUpdating=false;
  11. var nil=null,wb=nil;
  12. for(var e=new Enumerator(ess.Application.Workbooks);!e.atEnd();e.moveNext()){
  13. wb=e.item();break;
  14. }
  15. wb.ActiveSheet.Range(WScript.Arguments(1)+":"+WScript.Arguments(2)).Delete(-4162);
  16. wb=nil;
  17. ess.Application.Visible=true;
  18. ess.Application.ScreenUpdating=true;
  19. ess.Close(0);ess=nil;
复制代码

作者: 19219962414    时间: 2023-10-9 10:26

回复 2# Nsqs 好的谢谢大佬
作者: 19219962414    时间: 2023-10-9 10:26

回复 3# Five66 谢谢大佬,我先看看
作者: Batcher    时间: 2023-10-9 16:35

回复 1# 19219962414


test-1.bat
  1. # & cls & @cd /d "%~dp0" & powershell "Get-Content '%~0' | Out-String | Invoke-Expression " & exit /b
  2. $Excel = New-Object -ComObject Excel.Application
  3. $Excel.Visible = $false
  4. $Workbook = $Excel.Workbooks.Open("$PWD\1.xlsx")
  5. $Sheet = $Workbook.WorkSheets.Item(1)
  6. $n = 100
  7. [void]$Sheet.Range("45:$($n+16)").Delete()
  8. $Workbook.Save()
  9. $Workbook.Close()
  10. $Excel.Quit()
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2