python与excel第六节 复制数据

news/2024/7/21 6:36:12 标签: python, excel, 批量, 复制

复制一个excel的工作表中的数据到另一些excel

假设一个工作簿中数量不等,现在要复制其中所有工作表的内容到另一个文件夹所有的excel工作簿中。

例子:

import os
import xlwings as xw
app = xw.App(
visible=False,add_book=False)
#指定目标文件夹
file_path = 'D:\\TEST\\dataOut'
file_list = os.listdir(file_path)
# 打开源文件
workbook = app.books.open('D:\\TEST\\dataIn\\产品表.xlsx')
# 获取源文件所有sheet
worksheet =workbook.sheets
# 循环处理目标文件下文件,并且选择出excel文件
for i in file_list:
   
if os.path.splitext(i)[1] == '.xlsx':
        workbooks = app.books.open(file_path +
'\\' + i)
       
# 循环处理源表的所有sheet
       
for j in worksheet:
#  expand(mode)默认值是table,表示向整个数据扩展,可以是down(向下)或者right(向右)分别表示向下或右扩展。
# A1单元格开始扩展到整个sheet
           
contents = j.range('A1').expand('table').value
            name = j.name
            workbooks.sheets.add(
name=name,after=len(workbooks.sheets))# 目标工作表新增同名工作表
           
workbooks.sheets[name].range('A1').value = contents# 将源表数据写入新工作表
           
workbooks.save()
app.quit()

复制一个excel工作表的指定范围数据到另一些工作表中的指定范围

假设需要将一个excel文件中的指定范围的数据批量粘贴到另一个文件夹下面的所有excel中的指定位置。

例子:

import os
import xlwings as xw
app = xw.App(
visible=False,add_book=False)
file_path =
'D:\\TEST\\dataOut'
# 列出文件夹下所有文件
file_list = os.listdir(file_path)
# 打开源表
workbook = app.books.open('D:\\TEST\\dataIn\\产品表.xlsx')
worksheet = workbook.sheets[
'文具']
# A1单元格开始获得源表sheet的所有数据,实际上复制的内容是从A2到最后,即除去第一行
value = worksheet.range('A1').expand('table')
start_cell = (
2,1)
end_cell = (value.shape[
0],value.shape[1])
cell_area = worksheet.range(start_cell,end_cell).value

# 循环处理dataOut文件夹下所有excel文件
for i in file_list:
   
if os.path.splitext(i)[1] == '.xlsx':
       
try:
            workbooks = xw.Book(file_path +
'\\' + i)
           
# 把源表的数据复制到目标excel表的【Sheet1
           
sheet = workbooks.sheets['Sheet1']
           
# 获取目标excel表的数据范围,防止覆盖掉目标表的数据
           
scope = sheet.range('A1').expand()
           
# range的两个参数分别是(行,列),下面是从第scope.shape[0] + 1行,第一列开始粘贴数据
           
sheet.range(scope.shape[0] + 1,1).value = cell_area
            workbooks.save()
       
finally:
            workbooks.close()
workbook.close()
app.quit()


http://www.niftyadmin.cn/n/5449460.html

相关文章

Pycharm配置conda

1.下载conda Free Download | Anaconda . 2.配置环境 1.conda自带base环境 2.创建环境 3. Pycharm创建项目,选择环境 3.Pycharm中新建conda环境

LeetCode 面试经典150题 14.最长公共前缀

题目: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 思路: 代码: class Solution {public String longestCommonPrefix(String[] strs) {if (strs.length 0) {return &…

备忘录导出的HTML文档转换MarkDown尝试记录

备忘录导出的HTML文档转换MarkDown尝试记录 1. pandoc命令行2. HTML转换MARKDOWN3. MD导入CSDN记录过长报错及压缩尝试参考 本地备忘录写了些旅游攻略,想做个纪念,导出为长图片ok,导出为HTML,也可以。但是导出图片是base64格式的&…

atoi函数详解

atoi函数使用方法 在c官网中是这样介绍atoi函数的 通俗的讲就是把字符串中的字符数字转换为整形数字,遇到空格就跳过,如果在字符串开始遇到不是有效的整数比如说abc就直接返回0,如果遇到像这种情况123abc345这个就只返回123,这个…

如何优雅的爬取公众号文章

目录 相关函数库介绍 代码例子 IP池免费送 相关函数库介绍 在合法合规的前提下,爬取微信公众号文章可以使用以下几个Python库: requests:这是一个非常流行的HTTP库,用于发送各种HTTP请求。它简单易用,能够高效地处…

初识----python(开启我的python之旅)

目录 一、python的起源二、python的特点三、应用场景四、编写第一个python程序4.1用黑窗口编写4.2开发工具编写python 一、python的起源 1989 年,为了打发圣诞节假期, Gudio van Rossum 吉多 范罗苏姆(龟叔)决心开发一个新的解释…

基于java+SpringBoot+Vue的就业信息管理系统设计与实现

基于javaSpringBootVue的就业信息管理系统设计与实现 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台展示 后台展示 系统简介 本就业信息管理系统以springboot作为框架,b/s模式以及MySql作为后台运行的数据库…

MyBatis:查询与连接池

一、查询 1、多表查询 尽量避免使用多表查询,尤其是对性能要求较高的项目。因为多表查询必然会导致性能变低。 例如:select *from ta运行需要10ms,select *from tb 运行也需要10s。但是,select *from ta left join tb on ta.xx…