精华内容
下载资源
问答
  • 多薄多表合并——excel 外接程序插件 使 用 说 明 一、功能: 1、多薄合并:将某一文件夹或当前文件夹下所有工作薄合并到一个自动新建的“汇总表”工作薄中。每个工作薄中可含多个不同的工作表,工作表与工作表一一...
  • 目的是自动填写数据源到3-4个excel模板表格里去,模板表格有表头,有尾巴(签字栏),且有合并单元格,还有公式。所以代码的核心是要保留我模板里原有的格式和内容,进行表单对表单的精准填写,数据源行数不确定,...

    90d8a642c2df461d6730eddb536488cd.png

    可能我的需求比较奇怪,找了很多文档,才总结书写了这段代码。

    目的是自动填写数据源到3-4个excel模板表格里去,模板表格有表头,有表尾巴(签字栏),且有合并单元格,还有公式。

    所以代码的核心是要保留我模板里原有的格式和内容,进行表单对表单的精准填写,数据源行数不确定,所以在模板excel设计时保留了足够多的行数,方便后期用代码把空白行删除。

    ——————末尾更新加入了把一个多班级无格式表单分别填入多个汇总表的代码,即一对多填写

    所幸数据量不大,用win32com也挺快的。

    模板如下:(比如我学生可能是3-8人,那我在模板里就留够八行,多的后面删除,保证不会影响蓝色的模板内容)

    09d428ea550ea27bac6b550ff06d3185.png

    生成内容如下:(设置的单元格内公式依然保留,且灵活的单元格设置使得它不管数据多少行都是正确的哟)

    206f4896e1727e28a9e47c3b6c96eb8f.png

    代码及解释如下:

    from win32com import client
    xlApp_1 = client.Dispatch("Excel.Application")
    xlApp_1.Visible = False  # 软件不可见 True为可见
    
    xlBook_1 = xlApp_1.Workbooks.Open(r"C:UsersXXXDesktopqqqdata.xlsx")
    ## xlSheet_1 = xlBook_1.Worksheets(1)  # 打开第1个表
    data = xlBook_1.Worksheets("sheet1")  # 打开名为“sheet1”的sheet作为数据源
    info_1 = data.UsedRange
    nrows_1 = info_1.Rows.Count  # 行数
    ncols_1 = info_1.Columns.Count 
    print(nrows_1,ncols_1)
    
    form_book = xlApp_1.Workbooks.Open(r"C:UsersXXXDesktopqqq模板.xlsx")
    form = form_book.Worksheets("sheet1")
    
    下面的一列对一列的填写,可以套条件,也可以更改列序号,即模板第2列=数据源的第10列
    j=1
    for i in range(nrows_1):
        form.Cells(i+4, 2).Value= j    ##自增长的一个序号
        form.Cells(i+4, 1).Value=data.Cells(i+2,1).Value  
        form.Cells(i+4, 3).Value= data.Cells(i+2,2).Value
        form.Cells(i+4, 4).Value= data.Cells(i+2,3).Value
        form.Cells(i+4, 5).Value= data.Cells(i+2,4).Value
        j+=1
        
    print(nrows_1+2)
    ## 删除空白行,12为表尾所在行数-1,nrows_1+2为数据源行数加上表头行数)
    for i in range(12,nrows_1+2,-1):  
    #  此处为左闭右开的倒序遍历,从上面正序删除会因为你删除了上面行导致错误
        form.Rows(i).Delete() 
    
    # 另存为
    form_book.SaveAs(r"C:UsersXXXDesktopqqq成绩汇总表.xlsx")  # 另存路径

    丰富实用场景,一对多填写:

    form_book3 = xlApp_1.Workbooks.Open(r"C:UsersxxxDesktop硬件模板.xlsx")
    form3 = form_book3.Worksheets("Sheet1")
    form_book4 = xlApp_1.Workbooks.Open(r"C:UsersxxxDesktop软件模板.xlsx")
    form4 = form_book4.Worksheets("Sheet1")
    
    j1=1
    j2=1
    for i in range(nrows_1-1):
        if xlSheet_1.Cells(i+2,17).Value=="硬件":  
    ## 此处为判断条件,xlSheet_1是我的数据源,注意逻辑判断需要双等号
            form3.Cells(j1+1, 3).Value= xlSheet_1.Cells(i+2,2).Value+","+xlSheet_1.Cells(i+2,3).Value
    ## 上面公式右边是对两个单元格用逗号进行了串联
            form3.Cells(j1+1, 5).Value= xlSheet_1.Cells(i+2,4).Value
            form3.Cells(j1+1, 6).Value= xlSheet_1.Cells(i+2,13).Value
            form3.Cells(j1+1, 7).Value= xlSheet_1.Cells(i+2,7).Value
            form3.Cells(j1+1, 1).Value= j1  ## 自增长序号
            j1=j1+1
        else:    
    ##可以多加几个if,此处主要说填写,故不写复杂了。
            form4.Cells(j2+1,3).Value= str(xlSheet_1.Cells(i+2,2).Value)+","+str(xlSheet_1.Cells(i+2,3).Value)
            form4.Cells(j2+1, 5).Value= xlSheet_1.Cells(i+2,4).Value
            form4.Cells(j2+1, 6).Value= xlSheet_1.Cells(i+2,13).Value
            form4.Cells(j2+1, 7).Value= xlSheet_1.Cells(i+2,7).Value
            form4.Cells(j2+1, 1).Value= j2    ## 自增长序号
            j2=j2+1
    
    # 另存为
    form_book3.SaveAs(r"C:Usersxxx硬件.xlsx")  
    form_book4.SaveAs(r"C:Usersxxx软件.xlsx")  

    以上就是办公自动化的学习分享第二篇。下一步计划学习Python控制浏览器操作的selenium,用它录入数据。

    第一篇word操作链接在此

    第一小乔乔:python办公自动化(一)批量生成wordzhuanlan.zhihu.com
    f3e2ab9daa7ed40c6ca1148739704082.png
    展开全文
  • Excel新增工具集

    2011-12-20 09:30:27
    10、检查两列同行两单元格是否相同:由ID号意义相同的从表向主表合并列记录,往往先将从表记录粘贴到主表中,然后删除从表中的ID等与主表重复的列记录,本命令用来比较两列同行单元格(ID号)是否相同。 (九)工作...
  • 百宝箱4.0简体2003

    2008-09-24 15:15:30
    工作瞬间加密 瞬间加密数十个甚至数百个工作。 工作反向加密 即对鼠标选中以外之区域进行加密。 批量标示上标 可以对工作中任意字符标标上标,瞬间完成。 工作表名排序 输入1为升序,0为降序,将工作...
  • GridView大全

    2011-04-07 22:48:24
    15.GridView合并表头多重表头无错完美版(以合并3列3行举例) 30 后台代码: 30 前台: 33 16.GridView突出显示某一单元格(例如金额低于多少,分数不及格等) 34 全部后台代码: 34 前台代码: 36 17.GridView加入...
  • Excel百宝箱8.0

    2011-06-07 21:32:17
    【筛选唯一值】【建工作目录】【批量新建复制工作】【批量加解密】【工作批量命名】【破解工作/簿密码】 【批量命名文件】【可还原的合并】【合并列中相同值】【取消合并还原数据】【合并区域自动换行】...
  • excel 工具箱

    2012-01-22 15:04:34
    【修复Excel】:当您的Excel某些功能无法使用,或者无缘无故出很菜单、工具栏,本工具可以瞬间恢复Excel到默认状态 【破解VBA密码】:将VBA编写的且有密码的程序进行破解,瞬间完成 【生成2003样式菜单】:...
  • Excel百宝箱9.0无限制破解版

    热门讨论 2012-02-03 19:05:29
    【增强版跨越合并】:对选区批量逐行合并,合并时保留所有数据 【修正合并单元格】:使已经合并的区域中的每个单元格都有数据,从而在公式引用单元格时不会产生空白 【合并与合计】:可以任意指定两列,对其中一列的...
  • 【修复Excel】当您的Excel某些功能无法使用,或者无缘无故出很菜单、工具栏,本工具可以瞬间恢复Excel到默认状态 【破解VBA密码】将有密码的VBA代码破解,直接打开即可修改代码。包括工程不可查看类的破解 ...
  • Excel百宝箱

    2012-10-27 17:09:21
    【增强版跨越合并】:对选区批量逐行合并,合并时保留所有数据 【修正合并单元格】:使已经合并的区域中的每个单元格都有数据,从而在公式引用单元格时不会产生空白 【合并与合计】:可以任意指定两列,对其中一列的...
  • 【增强版跨越合并】:对选区批量逐行合并,合并时保留所有数据 【修正合并单元格】:使已经合并的区域中的每个单元格都有数据,从而在公式引用单元格时不会产生空白 【合并与合计】:可以任意指定两列,对其中一列的...
  • 技巧170 分类项不相同的数据表合并计算 技巧171 让合并计算结果自动动态更新 技巧172 快速录入引用位置区域 技巧173 引用其他工作簿数据 技巧174 在合并计算中使用名称 技巧175 使用合并计算进行分类汇总 ...
  • 第7章 数据绑定控件

    2011-05-27 11:23:57
    实例214 GridView删除数据弹出确认对话框 (含内容提示) 340 实例215 GridView数据源为空显示表头和 提示信息 341 实例216 创建表头固定、体可滚动的 GridView控件 342 实例217 可拖动列、可排序、可改变宽度...
  • 2009达内SQL学习笔记

    2010-02-10 19:46:58
    多表查询,可给表起别名。(给列起别名,列<空格>列别名;给表起别名,表<空格>表别名;)。 如:Select first_name EMPLOYEES, 12*(salary+100) AS MONEY, manager_id "ID1" From s_emp E; 4、字段的拼接,可用双...
  • 《数据结构 1800题》

    热门讨论 2012-12-27 16:52:03
    11. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( )【上海海运学院 1999 一、1(1分)】 12. 数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立。( ) 【华南理工大学 2002...
  • 30. 对个工作快速编辑 20 31. 移动和复制工作 21 32. 工作删除 21 33. 快速选择单元格 21 34. 快速选定EXCEL区域(微软OFFICE技巧大赛获奖作品) 22 35. 备份工件簿 22 36. 自动打开工作簿 23 37. 快速...
  • 快速删除工作中的空行快速删除空行一次删完Excel里面出很的空白行 每30行为一页并加上一个标题如何实现如何实现隔行都加上标题项 如何把标签页去掉的? 去掉默认的表格线(网线)表格的框线 列标的标识变了 符号...
  • 30. 对个工作快速编辑 20 31. 移动和复制工作 21 32. 工作删除 21 33. 快速选择单元格 21 34. 快速选定EXCEL区域(微软OFFICE技巧大赛获奖作品) 22 35. 备份工件簿 22 36. 自动打开工作簿 23 37. 快速...
  • Excel技巧大全

    2015-05-06 07:21:37
    30. 对个工作快速编辑 13 31. 移动和复制工作 13 32. 工作删除 13 33. 快速选择单元格 13 34. 快速选定Excel区域(微软Office技巧大赛获奖作品) 13 35. 备份工件簿 14 36. 自动打开工作簿 14 37. 快速...
  • 数据结构实验

    2012-04-13 09:55:47
    构造两个带有表头结点的有序单链表La、Lb,编写程序实现将La、Lb合并成一个有序单链表Lc。 合并思想是:程序需要3个指针:pa、pb、pc,其中pa,pb分别指向La与Lb中当前待比较插入的结点,pc 指向Lc中当前最后...
  • 30. 对个工作快速编辑 13 31. 移动和复制工作 13 32. 工作删除 13 33. 快速选择单元格 13 34. 快速选定EXCEL区域(微软OFFICE技巧大赛获奖作品) 13 35. 备份工件簿 14 36. 自动打开工作簿 14 37. 快速...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    快速删除工作中的空行快速删除空行一次删完Excel里面出很的空白行 每30行为一页并加上一个标题如何实现如何实现隔行都加上标题项 如何把标签页去掉的? 去掉默认的表格线(网线)表格的框线 列标的标识变了 符号...
  • 修改外部数据库在“中记录数为零”可能导致程序崩溃的BUG。 10. 修改扩展界面支持库一,修改“超级列表框.取标题()”不能返回长度大于256的包含汉字的文本。 11. 修改扩展界面支持库一,为“超级列表框.查找...
  • 百万数据量导出样式设置过多,导致速度慢(行、列、单元格样式暂时控制10万行、超过无样式) 大数据量情况下一般不会每个单元格设置样式、不然很难解决内存溢出等问题。 修改输出流(只能输出一次、如 ...
  • 实例182 简单的文件合并工具 231 8.2 泛型使用的简介 233 实例183 自定义非泛型栈结构 233 实例184 使用泛型实现栈结构 234 实例185 自定义泛型化数组类 235 实例186 泛型方法与数据查询 236 实例187 泛型化方法与...
  • 实例182 简单的文件合并工具 231 8.2 泛型使用的简介 233 实例183 自定义非泛型栈结构 233 实例184 使用泛型实现栈结构 234 实例185 自定义泛型化数组类 235 实例186 泛型方法与数据查询 236 实例187 泛型化方法与...
  • 实例035 使用嵌套循环在控制台上输出九九乘法 实例036 用while循环计算1+1/2!+1/3!…1/20! 实例037 for循环输出空心的菱形 实例038 foreach循环优于for循环 实例039 终止循环体 实例040 循环体的过滤器 实例...
  • 实例035 使用嵌套循环在控制台上输出九九乘法 实例036 用while循环计算1+1/2!+1/3!…1/20! 实例037 for循环输出空心的菱形 实例038 foreach循环优于for循环 实例039 终止循环体 实例040 循环体的过滤器 实例...
  • excel的使用

    2012-11-25 17:06:01
    图1(5) 张工作中输入相同的内容几个工作中同一位置填入同一数据,可以选中一张工作,然后按住Ctrl键,再单击窗口左下角的Sheet1、Sheet2......来直接选择需要输入相同内容的个工作,接着在其中的...
  • Java经典编程300例(code)

    千次下载 热门讨论 2013-01-09 10:26:53
    目 录 第1章 Java语言概述 1 实例001 输出“Hello World” 2 实例002 输出控制台传递的参数 2 实例003 输出由“*”组成的三角形 3 实例004 输出符号表情 5 ...实例300 在删除数据给出提示信息 442

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
热门标签
关键字:

多表合并时删除表头