[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 求Bat:删除excel中的某些行

各位大佬:想删除某个文件的某些行,具体规则为:文件(.xlsx)共2n行,想删除45n+16行,求大神们指导,感谢!

回复 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()
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Five66 谢谢大佬,我先看看

TOP

回复 2# Nsqs 好的谢谢大佬

TOP

不知是不是这样子
将代码保存为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;
复制代码

TOP

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()
复制代码

TOP

返回列表