Board logo

标题: [文件操作] [已解决]有没有可以打印excel文件的命令? [打印本页]

作者: hnfeng    时间: 2024-5-20 20:29     标题: [已解决]有没有可以打印excel文件的命令?

本帖最后由 hnfeng 于 2024-5-21 09:43 编辑

想通过命令行 批处理 实现打印指定excel文件到指定(或默认)打印机上,找半天没找到方法

第三方程序库里面有个 PrintExcel
  1. http://www.bathome.net/s/tool/?key=printexcel
复制代码
,看功能不错,但是试用不成功,总报错

求助高手,谢谢
作者: 877    时间: 2024-5-20 20:41

  1. Dim objExcel
  2. Set objExcel = CreateObject("Excel.Application")
  3. objExcel.Visible = False
  4. objExcel.DisplayAlerts = False
  5. Dim workbook
  6. Set workbook = objExcel.Workbooks.Open("C:\路径\至\你的\文件.xlsx") ' 修改为你的Excel文件路径
  7. workbook.PrintOut ' 打印操作
  8. workbook.Close SaveChanges:=False
  9. objExcel.Quit
  10. Set objExcel = Nothing
复制代码
调用以上vbs试试
  1. @echo off
  2. cscript //nologo "C:\路径\至\printExcel.vbs"
复制代码

作者: hnfeng    时间: 2024-5-20 21:41

本帖最后由 hnfeng 于 2024-5-20 21:56 编辑

回复 2# 877


    谢谢,但是报错
  1. C:\temp\PrintExcel.vbs(9, 28) Microsoft VBScript 编译器错误: 缺少语句
复制代码
请看看哪里的问题

还有,如果需要指定打印机呢   "\\192.168.1.1\Canon iX6700 series"
作者: 877    时间: 2024-5-21 09:18

回复 3# hnfeng


    没打印机,测试不了。。修改如下,可以试试~
  1. Dim objExcel
  2. Set objExcel = CreateObject("Excel.Application")
  3. objExcel.Visible = False
  4. objExcel.DisplayAlerts = False
  5. ' 修改为你的Excel文件路径
  6. Dim workbookPath
  7. workbookPath = "C:\路径\至\你的\文件.xlsx"
  8. Set workbook = objExcel.Workbooks.Open(workbookPath)
  9. ' 指定打印机名称,例如 "\\192.168.1.1\Canon iX6700 series"
  10. Dim printerName
  11. printerName = "\\192.168.1.1\Canon iX6700 series"
  12. ' 使用PrintOut方法并指定打印机
  13. workbook.PrintOut ActivePrinter:=printerName, Collate:=True
  14. workbook.Close SaveChanges:=False
  15. objExcel.Quit
  16. Set objExcel = Nothing
复制代码
或者这个
  1. Option Explicit
  2. Dim objExcel, workbook
  3. ' 创建Excel Application对象
  4. Set objExcel = CreateObject("Excel.Application")
  5. objExcel.Visible = False
  6. objExcel.DisplayAlerts = False
  7. ' 打开Excel文件,确保路径是正确的
  8. Set workbook = objExcel.Workbooks.Open("C:\路径\至\你的\文件.xlsx")
  9. ' 指定打印机
  10. objExcel.ActivePrinter = "\\192.168.1.1\Canon iX6700 series"
  11. ' 打印工作簿
  12. workbook.PrintOut
  13. ' 关闭工作簿,不保存更改
  14. workbook.Close SaveChanges:=False
  15. ' 退出Excel Application
  16. objExcel.Quit
  17. ' 清理对象
  18. Set workbook = Nothing
  19. Set objExcel = Nothing
复制代码

作者: 877    时间: 2024-5-21 09:20

@echo off
cscript //nologo printExcel.vbs
exit

确保你的VBS文件命名为printExcel.vbs,并且它位于批处理文件相同的目录下。
作者: hnfeng    时间: 2024-5-21 09:33

回复 4# 877


    谢谢帮忙。

第一个代码的错误是:
C:\temp\PrintExcel.vbs(16, 33) Microsoft VBScript 编译器错误: 缺少语句

第二个代码的错误是:
C:\temp\PrintExcel.vbs(19, 28) Microsoft VBScript 编译器错误: 缺少语句
作者: hnfeng    时间: 2024-5-21 09:41

本帖最后由 hnfeng 于 2024-5-21 10:00 编辑

我用 AU3 写了几行代码,可以打印。找时间再完善:加一些容错、提示、参数什么的。
  1. #include <Excel.au3>
  2. Local $ExcelFile=@ScriptDir & "\color.xlsx"
  3. Local $oExcel = _Excel_Open()
  4. Local $oWorkbook = _Excel_BookOpen($oExcel, $ExcelFile, True)
  5. _Excel_Print($oExcel, $oExcel.ActiveSheet, 1, "\\192.168.1.1\Canon iX6700 series")
  6. _Excel_Close($oExcel, 0)
复制代码
需求就是,彩色喷墨打印机如果较长时间不打印,喷头可能出问题--堵塞,而且第一次打印时,打印机要准备好久(打印机里面有响声,可能在清洗打印喷头之类的动作),然后才打印,之后的打印就正常速度了。所以想定时在 每星期一早上打印一个excel小文件,上班后如果有打印,马上就打印出来了。
作者: hnfeng    时间: 2024-5-22 11:37

经过一天多零零星星的时间,终于用 Autoit 写了个小程序,暂时未发现bug。如果有需要使用命令行、批处理打印excel文件的,可以联系我。
  1. ----------------------------------------------------------------------------
  2. PrintExcel(CMD)                                   v1.0, 2024/05, hnfeng
  3. 功能:打印Excel文件
  4. 用法:PrintExcel.exe <参数1> [参数2] [参数3] [参数4]
  5.     <参数1> - 含路径的Excel文件名(如果未指明路径,则自动添加当前路径)
  6.     [参数2] - /Act : 仅打印默认工作表,默认
  7.             - /All : 打印所有工作表
  8.     [参数3] - 打印份数,为大于0的整数值,默认值是1
  9.     [参数4] - 打印机名。缺省或错误时,使用系统默认打印机
  10.             - 可以使用命令“wmic printer get name”获得系统中所有打印机
  11.      /? -?  - 显示此帮助
  12. 例子:PrintExcel.exe c:\Test.xlsx /Act 1 "\\192.168.1.1\Canon iX6700 series"
  13.       PrintExcel.exe Test.xlsx /Act 1 "RICOH MP 2001 PCL 6"
  14.       PrintExcel.exe Test.xlsx /All 2
  15.       PrintExcel.exe Test.xlsx
  16.       PrintExcel.exe "c:\Test Prn\Test.xlsx" /All 1 "RICOH MP 2001 PCL 6"
  17. ----------------------------------------------------------------------------
复制代码
Autoit 写的程序某些杀毒软件中会被误报。自己斟酌。

PrintExcel.exe
410,112 字节
Sha1:   9BDFCDA9B045306447EBB5F6456151B53E589C20
Sha256: AAE0B941FA7E2CCEA2F867BF7262D727D2DBC4A4EF0F0599F3F3172C81305D7E

https://www.virscan.org/report/a ... 599f3f3172c81305d7e
https://habo.qq.com/file/showdet ... 2AIOls6U2oHYw%3D%3D
https://www.virustotal.com/gui/f ... 599f3f3172c81305d7e




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