草庐IT

用Python的xlwings模块批量打印工作簿

hhl931181316 2023-04-05 原文

使用Python的xlwings模块批量打印工作簿

使用Python的xlwings模块和vba对Excel的工作簿进行批量的打印
格式:workbook.PrintOut(From、 To、副本、 Preview、 ActivePrinter、 PrintToFile、 Collate、 PrToFileName、 IgnorePrintAreas)
表达式一个代表工作簿 对象的变量。

参数:

名称 必需/可选 数据类型 说明
From 可选 Variant 打印的开始页号。 如果省略此参数,则从起始位置开始打印。
To 可选 Variant 打印的终止页号。 如果省略此参数,则打印至最后一页。
Copies 可选 Variant 打印份数。 如果省略此参数,则只打印一份。
Preview 可选 Variant 如果为 True,Microsoft Excel 将在打印对象之前调用打印预览。 如果为 False(或省略该参数),则立即打印对象。
ActivePrinter 可选 Variant 设置活动打印机的名称。
PrintToFile 可选 Variant 如果为 True,则打印到文件。 如果没有指定 PrToFileName,Microsoft Excel 将提示用户输入要使用的输出文件的文件名。
Collate 可选 Variant 如果为 True,则逐份打印多个副本。
PrToFileName 可选 Variant 如果将PrintToFile设置为True, 则此参数指定要打印到的文件的名称。
IgnorePrintAreas 可选 Variant 如果为 True,则忽略打印区域并打印整个对象。

import os  # 导入os模块
import xlwings as xw  # 导入xlwings模块

file_path = 'E:\\pythonExample\\01'  # 定义工作簿所在的文件夹路径
file_list = os.listdir(file_path)  # 列出指定路径下的文件及文件夹名称
sheet_name = '产品销售区域'  # 定义工作簿名中新的工作表名称
file_type = ['.xlsx','.xls']  # 定义文件类型列表,用于判断是否为excel文件

app = xw.App(visible=True, add_book=False)

for i in file_list:
    # 判断是否有文件名为“~$”开头的临时文件,startswith(substr,beg,end)
    if i.startswith('~$'):
        continue  # 如果有,则跳过这种类型的文件
    # 拼接工作簿中新的工作表的文件路径
    file_paths = os.path.join(file_path, i)
    # 判断是否为Excel文件,通过扩展名.xls和.xlsx判断
    file_ext = os.path.splitext(i)[1]
    #  判断是不是文件且为excel文件
    if (os.path.isfile(file_paths)) and (file_ext  in file_type):
        wb = app.books.open(file_paths)  # 打开工作簿
        wb.api.PrintOut()  # 打印工作薄
        # wb.api.PrintOut(From=1,To=1,Copies=1,Preview=True)  # 打印工作薄
    else:
        print('文件名为:%s的文件不是excel文件!' %i)
        continue
app.quit()

批量打印多个工作簿中的指定工作表

import os  # 导入os模块
import xlwings as xw  # 导入xlwings模块

file_path = 'E:\\pythonExample\\01'  # 定义工作簿所在的文件夹路径
file_list = os.listdir(file_path)  # 列出指定路径下的文件及文件夹名称
sheet_name = '产品分类表'  # 定义工作簿名中新的工作表名称
file_type = ['.xlsx','.xls']  # 定义文件类型列表,用于判断是否为excel文件

app = xw.App(visible=True, add_book=False)

for i in file_list:
    # 判断是否有文件名为“~$”开头的临时文件,startswith(substr,beg,end)
    if i.startswith('~$'):
        continue  # 如果有,则跳过这种类型的文件
    # 拼接工作簿中新的工作表的文件路径
    file_paths = os.path.join(file_path, i)
    # 判断是否为Excel文件,通过扩展名.xls和.xlsx判断
    file_ext = os.path.splitext(i)[1]
    #  判断是不是文件且为excel文件
    if (os.path.isfile(file_paths)) and (file_ext  in file_type):
        wb = app.books.open(file_paths)  # 打开工作簿
        for j in wb.sheets:
            if j.name == sheet_name:  # 判断工作簿中的工作表是否为要打印的表名称
                print(j.name)
                wb.api.PrintOut('','','',Preview=True)  # 打印工作薄
                break
    else:
        print('文件名为:%s的文件不是excel文件!' %i)
        continue
app.quit()

有关用Python的xlwings模块批量打印工作簿的更多相关文章

  1. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  2. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  7. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  8. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

  9. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  10. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

随机推荐